stanfordcorenlp安裝教程&簡單使用教程
編譯環境:python 3.6 、win10 64位、jdk1.8及以上
1、stanfordcorenlp安裝依賴環境
- 下載安裝JDK 1.8及以上版本。安裝教程:https://blog.csdn.net/qq_40426415/article/details/80994622
jdk下載地址:https://www.oracle.com/java/technologies/javase-jdk8-downloads.html
- 下載Stanford CoreNLP文件。下載地址:https://stanfordnlp.github.io/CoreNLP/
- 處理中文文本,需要下載中文模型數據。下載地址:http://nlp.stanford.edu/software/stanford-chinese-corenlp-2018-10-05-models.jar
剛剛上傳了百度雲文件,需要的也可以通過百度雲下載:鏈接:https://pan.baidu.com/s/12nYVdnuZlzcxRBOuRs7NMQ 提取碼:o8it
2、安裝過程
- 首先安裝好JDK1.8及以上版本,安裝好,並配置好環境;
- 其次,通過pip命令下載stanforecorenlp。本文安裝的stanfordcorenlp版本為3.9.1,如果如果需要安裝其它版本,可以用pip install stanforecorenlp==3.7.1,指定安裝的版本。
pip install stanforecorenlp -i http://pypi.mirrors.ustc.edu.cn/simple/ --trusted-host pypi.mirrors.ustc.edu.cn
- 再次,下載StanfordCoreNlp文件,下載好后解壓,解壓位置可以根據你自己的喜好選擇,如D:\stanford_nlp;
- 接着,下載中文模型,並將下載好的文件放到StanfordCoreNlp解壓后的根目錄文件夾中,如下圖:
- 最后,在python中導入stanford corenlp,導入成功,即可成功使用。
3、問題匯總
(1)安裝jdk 1.8版本以上是個比較大的難題,文中提供的安裝教程寫的很好,可以照着他的安裝教程一步步安裝,大概率不會出錯。
(2)成功安裝Stanford coreNlp,但是import stanfore corenlp失敗,出現:importerror-no-module-named-psutil,
解決方法:重新安裝psutil,選擇不同的版本,如pip install psutil==4.0.0 ,然后再導入stanford corenlp。
(3)中文包已經放到StanfordCoreNlp解壓的目錄下,但是運行程序還是無法識別出中文模型,出現:OSError: stanford-chinese-corenlp-yyyy-MM-dd-models.jar not exists.
解決方法:有點無賴,將中文模型的名字修改,如上圖我做的修改,很隨別的改了一個時間。你也可以根據我上面的格式更改中文模型名稱。注意只能更改時間,其它不改變。
4、stanfordcorenlp的簡單使用
# -*- coding:utf-8 -*- #導入StandfordCoreNLP模塊 from stanfordcorenlp import StanfordCoreNLP #導入中文語言包,lang='zh' nlp = StanfordCoreNLP(r'E:\tool\python\Lib\site-packages\stanfordcorenlp\stanford_nlp', lang='zh') sentence = '江西財經大學在南昌,是一所有着很強的綜合能力的大學,大明王在這里讀書,學習大數據會計,正在做自然語言處理作業' word = nlp.word_tokenize(sentence) print('\t '.join(word)) print(nlp.pos_tag(sentence)) print(nlp.ner(sentence)) print(nlp.parse(sentence)) print(nlp.dependency_parse(sentence))
運行結果:
"E:\學習筆記\Python學習\python 代碼\07\venv\Scripts\python.exe" "E:/學習筆記/NLP學習/NLP code/stanfordcorenlp_test/test.py" 江西 財經 大學 在 南昌 , 是 一 所 有 着 很 強 的 綜合 能力 的 大學 , 大明 王 在 這里 讀書 , 學習 大 數據 會計 , 正在 做 自然 語言 處理 作業 [('江西', 'NR'), ('財經', 'NN'), ('大學', 'NN'), ('在', 'P'), ('南昌', 'NR'), (',', 'PU'), ('是', 'VC'), ('一', 'CD'), ('所', 'M'), ('有', 'VE'), ('着', 'AS'), ('很', 'AD'), ('強', 'VA'), ('的', 'DEC'), ('綜合', 'NN'), ('能力', 'NN'), ('的', 'DEG'), ('大學', 'NN'), (',', 'PU'), ('大明', 'JJ'), ('王', 'NN'), ('在', 'P'), ('這里', 'PN'), ('讀書', 'VV'), (',', 'PU'), ('學習', 'VV'), ('大', 'JJ'), ('數據', 'NN'), ('會計', 'NN'), (',', 'PU'), ('正在', 'AD'), ('做', 'VV'), ('自然', 'NN'), ('語言', 'NN'), ('處理', 'NN'), ('作業', 'NN')] [('江西', 'STATE_OR_PROVINCE'), ('財經', 'O'), ('大學', 'O'), ('在', 'O'), ('南昌', 'CITY'), (',', 'O'), ('是', 'O'), ('一', 'NUMBER'), ('所', 'O'), ('有', 'O'), ('着', 'O'), ('很', 'O'), ('強', 'O'), ('的', 'O'), ('綜合', 'O'), ('能力', 'O'), ('的', 'O'), ('大學', 'O'), (',', 'O'), ('大明', 'PERSON'), ('王', 'PERSON'), ('在', 'O'), ('這里', 'O'), ('讀書', 'O'), (',', 'O'), ('學習', 'O'), ('大', 'O'), ('數據', 'O'), ('會計', 'TITLE'), (',', 'O'), ('正在', 'O'), ('做', 'O'), ('自然', 'O'), ('語言', 'O'), ('處理', 'O'), ('作業', 'O')] (ROOT (IP (NP (NR 江西) (NN 財經) (NN 大學)) (VP (VP (VP (PP (P 在) (NP (NR 南昌))) (PU ,) (VP (VC 是) (NP (QP (CD 一) (CLP (M 所))) (CP (IP (VP (VE 有) (AS 着) (NP (CP (IP (VP (ADVP (AD 很)) (VP (VA 強)))) (DEC 的)) (NP (NN 綜合) (NN 能力))))) (DEG 的)) (NP (NN 大學))))) (PU ,) (IP (NP (ADJP (JJ 大明)) (NP (NN 王))) (VP (VP (PP (P 在) (NP (PN 這里))) (VP (VV 讀書))) (PU ,) (VP (VV 學習) (NP (NP (ADJP (JJ 大)) (NP (NN 數據))) (NP (NN 會計))))))) (PU ,) (VP (ADVP (AD 正在)) (VP (VV 做) (NP (NN 自然) (NN 語言) (NN 處理) (NN 作業))))))) [('ROOT', 0, 18), ('compound:nn', 3, 1), ('compound:nn', 3, 2), ('nsubj', 18, 3), ('case', 5, 4), ('nmod:prep', 18, 5), ('punct', 18, 6), ('cop', 18, 7), ('nummod', 18, 8), ('mark:clf', 8, 9), ('dep', 18, 10), ('aux:asp', 10, 11), ('advmod', 13, 12), ('amod', 16, 13), ('mark', 13, 14), ('compound:nn', 16, 15), ('dobj', 10, 16), ('mark', 10, 17), ('punct', 18, 19), ('amod', 21, 20), ('nsubj', 24, 21), ('case', 23, 22), ('nmod:prep', 24, 23), ('conj', 18, 24), ('punct', 24, 25), ('conj', 24, 26), ('amod', 28, 27), ('compound:nn', 29, 28), ('dobj', 26, 29), ('punct', 24, 30), ('advmod', 32, 31), ('conj', 24, 32), ('compound:nn', 35, 33), ('compound:nn', 35, 34), ('compound:nn', 36, 35), ('dobj', 32, 36)] Process finished with exit code 0