官網(wǎng):http://ictclas.nlpir.org/? ? 含有下載地址及網(wǎng)站事例
工具github地址:https://github.com/NLPIR-team
首先NLPIR擁有非常強(qiáng)大的功能
看到首頁下面這些工具的位置
NLPIR種包含這些功能的許可證,SDK開發(fā)文檔韭邓,NLPIR是一個(gè)開源系統(tǒng),許可證免費(fèi)下載桐筏,使用期一個(gè)月,過期后重新下載
一.?NLPIR-ICTCLAS 中文分詞工具
(1)介紹
在https://github.com/NLPIR-team頁面可以找到NLPIR-ICTCLAS項(xiàng)目
點(diǎn)擊clone and download ,加壓壓縮包甜孤,得到的目錄如下
在idea或eclipse中打開項(xiàng)目(該項(xiàng)目是由eclipse編譯的洼专,使用eclipse能更少出錯(cuò)),我在這里使用的是idea
文件目錄下看到文件結(jié)構(gòu)如下
data_train代表測(cè)試數(shù)據(jù)
lib代表需要依賴的包
resources代表一些操作系統(tǒng)上的支持工具 支持linux和windows
seg.txt代表運(yùn)行結(jié)果產(chǎn)生的文本
/src/.../test 里面的NLPIRTest代表測(cè)試寫的類
/src/... 中的NLPIR代表開發(fā)的類厉萝,類中的函數(shù)代表可以調(diào)用的函數(shù) ,開發(fā)文檔為https://github.com/NLPIR-team/NLPIR/tree/master/NLPIR%20SDK/NLPIR-ICTCLAS/doc
(2)運(yùn)行sample
在運(yùn)行sample的時(shí)候可能會(huì)遇到問題榨崩,比如不兼容谴垫,項(xiàng)目找不到資源文件,許可證過期的情況
對(duì)于許可證過期的情況:
在地址https://github.com/NLPIR-team/NLPIR/tree/master/License/license%20for%20a%20month/NLPIR-ICTCLAS%E5%88%86%E8%AF%8D%E7%B3%BB%E7%BB%9F%E6%8E%88%E6%9D%83中下載許可證
將下載的許可證復(fù)制到項(xiàng)目的/lib/data下面母蛛,替代原來的許可證
運(yùn)行之后翩剪,看到下圖代表成功
結(jié)果在seg.txt中
(3)NLPIRTest.java代碼解析
package com.lingjoin.nlpir.test;
import java.io.File;
import java.io.FileWriter;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.List;
import com.lingjoin.nlpir.NLPIR;
public class NLPIRTest {
Listfiles=new ArrayList();
? public void getAllfiles(File filePath){//遍歷路徑下的所有文件
? ? ? File[] fsFiles=filePath.listFiles();
? ? ? for(File f:fsFiles){
if(f.isFile()&&!f.getName().equals(".DS_Store"))files.add(f.getPath());
? ? ? ? if(f.isDirectory())this.getAllfiles(f);
? ? ? }
}
public StringgetContent(File file)throws Exception{//獲取每個(gè)文本的內(nèi)容,并處理
? ? ? RandomAccessFile f=new RandomAccessFile(file, "r");
? ? ? byte[] b=new byte[(int) file.length()];
? ? ? f.read(b);
? ? ? f.close();
? ? ? String c=new String(b,"GBK").replaceAll("\\s", "");//每?jī)蓚€(gè)字節(jié)組成一個(gè)漢字并去掉空格
? ? ? return c;
? }
public static void main(String[] args)throws Exception{
NLPIR.init("lib");//初始化支持庫
? ? ? //NLPIR.importUserDict("");
? ? ? FileWriter fw=new FileWriter(new File("seg.txt"));
? ? ? String fPath="data_train";
? ? ? NLPIRTest test=new NLPIRTest();
? ? ? test.getAllfiles(new File(fPath));
? ? ? for(String f:test.files){//遍歷每一個(gè)文件
? ? ? ? System.out.println(f);//輸出文件名
? ? ? ? String con=test.getContent(new File(f));//獲取文本內(nèi)容
? ? ? ? fw.write(new File(f).getName()+"\t"+NLPIR.paragraphProcess(con, 1).replaceAll(" ", "\t")+"\n");
? ? ? ? //文件輸出到seg.txt,格式為文件名+每個(gè)分詞+空格彩郊;分完一個(gè)文本后回車
? ? ? }
fw.flush();
? ? ? fw.close();
? }
}
(4)結(jié)果部分展示
4-1_01 新華社/nt 照片/n 前弯,/wd 棗莊/ns (/wkz 山東/ns )/wky ,/wd 2016年/t 8月/t 30日/t 山東/ns 棗莊/ns 出現(xiàn)/v “/wyz 魚鱗/n 云/vg ”/wyy 這/rzv 是/vshi 8月/t 30日/t 在/p 山東省/ns 棗莊市/ns 山亭區(qū)/ns
(5)分詞后綴解釋
漢語詞性對(duì)照表地址:https://blog.csdn.net/kevin_darkelf/article/details/39520881