使用Stanford CoreNLP工具包處理中文
這幾天剛剛接觸自然語言處理,使用了Stanford CoreNLP工具。但畢竟是第一次用,所以遇到很多問題,現將解決方案記下(容易百度到的錯誤就不記了)。
其中用Stanford CoreNLP集合工具來處理中文的方法網上很少有說明,官方Demo也沒有說明,特在此記下。
Stanford 提供了很多NLP工具,預設均直接支援英文,部分需要model支援中文。這是這些工具官方列表地址:http://nlp.stanford.edu/software/
部分工具列表如圖:
其中第一個Stanford CoreNLP工具可以說是其它工具的集合,功能相對強大。假如你只需要進行分詞,則使用Stanford Word Segmenter工具即可。該工具支援中文。而且下載的檔案中也有適用於中文的Demo,比較容易理解。但是如果你想使用集合工具Stanford CoreNLP處理中文,則網上相關資料很少,下載的Demo檔案中只有處理英文的。
下面介紹怎麼用集合工具Stanford CoreNLP處理中文:
注意:需要java8,怎麼配合eclipse使用,自己百度,目前需要安裝一個更新。
1、你需要下載Stanford CoreNLP,我下載的是3.6.0:http://stanfordnlp.github.io/CoreNLP/index.html#download
2、你需要下載中文支援包:stanford-chinese-corenlp-models.jar,我下載的也是3.6.0:http://stanfordnlp.github.io/CoreNLP/index.html#download
3、下載完畢後,Stanford CoreNLP需要解壓,然後將stanford-chinese-corenlp-models.jar放到解壓資料夾裡,將資料夾中的所有.jar加入你建立的工程中。
然後測試程式碼與英文的Demo不同,程式碼很簡單
public class test_demo {
public static void main(String[] args) {
String props="StanfordCoreNLP-chinese.properties";
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
Annotation annotation;
//if data from file
//annotation = new Annotation(IOUtils.slurpFileNoExceptions(file));
annotation = new Annotation("這家酒店很好,我很喜歡。");
pipeline.annotate(annotation);
pipeline.prettyPrint(annotation, System.out);
}
}
主要就是標紅的程式碼。這個是stanford-chinese-corenlp-models.jar中的一個檔案,可以用解壓軟體開啟檢視一下,裡邊預設定義了使用哪些工具,以及相應的設定,可以自己根據需要修改,箭頭指示的為預設支援的工具,分詞、分句、詞性標註、命名實體識別、語法分析等等,下邊是每個工具對應的引數設定,這樣就可以用這一強大工具來處理中文了。
結果截圖: