這幾天剛剛接觸自然語言處理,使用了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中的一個文件,可以用解壓軟件打開查看一下,里邊默認定義了使用哪些工具,以及相應的設置,可以自己根據需要修改,箭頭指示的為默認支持的工具,分詞、分句、詞性標注、命名實體識別、語法分析等等,下邊是每個工具對應的參數設置,這樣就可以用這一強大工具來處理中文了。
結果截圖:
新聞熱點
疑難解答