使用NLPIR汉语分词工具进行中文分词(java语言)


文本自动分词是自然语言处理的基础性工作,推荐一款中文分词工具-----张华平博士开发的NLPIR汉语分词系统,并且使用java调用里面的工具包进行中文文本的分词,本文描述我的工具流程,希望可以借鉴。


首先,可以从http://ictclas.nlpir.org/downloads获取该软件。


下载好以后你可以看到文件包的情况:

文件包介绍
|   Readme.txt-------------------------->介绍


这里我们将sample文件夹中的JnaTest_NLPIR文件项目导入到eclipse中。

打开src/code/路径下找到 NlpirTest.java 测试文件,可以运行源项目的示例文件。


这里还需要几个操作,需要将上级文件中的Data-->系统核心词库复制到项目中,并且修改词典的路径。


然后,将bin里面的CTCLAS2014----------->分词系统复制到项目中,运行 NlpirTest.java 测试文件,就可以看到结果了。

package code;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;

import utils.SystemParas;

import com.sun.jna.Library;
import com.sun.jna.Native;

public class FC_Test {

	// 定义接口CLibrary,继承自com.sun.jna.Library
	public interface CLibrary extends Library {
		// 定义并初始化接口的静态变量
		CLibrary Instance = (CLibrary) Native.loadLibrary(
				"ICTCLAS2014/NLPIR", CLibrary.class);
		
		public int NLPIR_Init(String sDataPath, int encoding,
				String sLicenceCode);
				
		public String NLPIR_ParagraphProcess(String sSrc, int bPOSTagged);

		public String NLPIR_GetKeyWords(String sLine, int nMaxKeyLimit,
				boolean bWeightOut);
		public String NLPIR_GetFileKeyWords(String sLine, int nMaxKeyLimit,
				boolean bWeightOut);
		public int NLPIR_AddUserWord(String sWord);//add by qp 2008.11.10
		public int NLPIR_DelUsrWord(String sWord);//add by qp 2008.11.10
		public String NLPIR_GetLastErrorMsg();
		public void NLPIR_Exit();
	}

	public static String transString(String aidString, String ori_encoding,
			String new_encoding) {
		try {
			return new String(aidString.getBytes(ori_encoding), new_encoding);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return null;
	}

	static String do_FC(String sInput){
		String argu = "./";
		// String system_charset = "GBK";//GBK----0
		String system_charset = "UTF-8";
		int charset_type = 1;
		
		int init_flag = CLibrary.Instance.NLPIR_Init(argu, charset_type, "0");
		String nativeBytes = null;

		if (0 == init_flag) {
			nativeBytes = CLibrary.Instance.NLPIR_GetLastErrorMsg();
			System.err.println("初始化失败!fail reason is "+nativeBytes);
		}
		try {
			nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(sInput, 1);
				
			CLibrary.Instance.NLPIR_Exit();

		} catch (Exception ex) {
			// TODO Auto-generated catch block
			ex.printStackTrace();
		}
		
		return nativeBytes;
	}
	
	public static void main(String[] args) throws Exception {
		  File dataImport=new File("FC_data/import.txt");
		  File dataExport=new File("FC_data/export.txt");
		  
		  BufferedReader br = new BufferedReader(new InputStreamReader(
					new FileInputStream(dataImport), "UTF-8"));
		  
		  BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(
					new FileOutputStream(dataExport), "UTF-8"));
		  String str;
		  while ((str = br.readLine()) != null) {
				// System.out.println(str);
			  String nativeBytes = do_FC(str);
			  wr.write(nativeBytes);
			  wr.newLine();
		  }	 
		  
		  br.close();
		  wr.close();
		  
		  System.out.println("------分词结束!------");
	}
}


这里我增加了一个对txt文件文本进行分词的程序:


在项目中添加FC_data/文件夹,其中

FC_data/import.txt

FC_data/export.txt




分别为输入文件和输出文件,运行后结果如下:



  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值