Stanford NLP下載
下載網(wǎng)址:https://stanfordnlp.github.io/CoreNLP/
要下載兩個(gè)文件客蹋,一個(gè)是Stanford CoreNLP霞赫,一個(gè)是Chinese語(yǔ)言包(兩個(gè)文件都挺大的挫酿,慢慢等吧)
Stanford NLP安裝
1.下載安裝jdk1.8
官網(wǎng):https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
下載對(duì)應(yīng)版本即可
測(cè)試是否安裝成功,在命令行輸入命令“java -version”,顯示jdk版本,如下:
2.安裝配置stanford nlp與中文語(yǔ)言包
安裝stanfordcorenlp
直接用pip命令安裝岔冀,加上大清鏡像,速度快無(wú)邊~~跳舞
命令:
pip install stanfordcorenlp -i http://pypi.mirrors.ustc.edu.cn/simple/ --trusted-host pypi.mirrors.ustc.edu.cn
注意:這里如果報(bào)錯(cuò):unable to execute 'gcc': No such file or directory
說(shuō)明你的機(jī)器上沒(méi)有安裝gcc編譯器概耻。mac自帶使套,但linux系統(tǒng)沒(méi)有。用yum命令鞠柄。
yum install gcc即可侦高。
為了可視化安裝nltk
最好再安裝個(gè)nltk吧,跟解析沒(méi)關(guān)系厌杜,主要是為了畫(huà)圖奉呛,讓stanford parser的結(jié)果畫(huà)成樹(shù),可視化夯尽。
安裝命令:pip install nltk
然后運(yùn)行python
import nltk
nltk.download()
下載一些nltk資源包瞧壮。
配置中文解析
要parser中文,先把下載的Chinese.jar文件復(fù)制到/Users/***/stanford-corenlp-full-2018-10-05目錄下匙握。
3.運(yùn)行
解析英文文本
代碼如下:
from stanfordcorenlpimport StanfordCoreNLP
nlp = StanfordCoreNLP('/Users/***/stanford-corenlp-full-2018-10-05')
sentence ='Guangdong University of Foreign Studies is located in Guangzhou.'
print ('Tokenize:', nlp.word_tokenize(sentence))
print ('Part of Speech:', nlp.pos_tag(sentence))
print ('Named Entities:', nlp.ner(sentence))
print ('Constituency Parsing:', nlp.parse(sentence))#語(yǔ)法樹(shù)
print ('Dependency Parsing:', nlp.dependency_parse(sentence))#依存句法
nlp.close()#釋放咆槽,否則后端服務(wù)器將消耗大量?jī)?nèi)存
但是運(yùn)行報(bào)錯(cuò),文體出在了第二行:
PermissionError......AccessDenied肺孤,總之來(lái)說(shuō)是權(quán)限問(wèn)題罗晕,所以用sudo來(lái)運(yùn)行這個(gè)python文件即可济欢。
在命令行輸入sudo python ***.py,得到結(jié)果如下:
解析中文文本
代碼:
nlp = StanfordCoreNLP('/Users/wangwenhua/Downloads/stanford-corenlp-full-2018-10-05', lang='zh')#這里配置中文標(biāo)示‘zh’
sentence ='清華大學(xué)位于北京小渊。'
print(nlp.word_tokenize(sentence))
print(nlp.pos_tag(sentence))
print(nlp.ner(sentence))
print(nlp.parse(sentence))
print(nlp.dependency_parse(sentence))
結(jié)果:
中文parser比英文慢一點(diǎn)法褥。
4.可視化
雖然解析出來(lái)了,但是我們想畫(huà)成樹(shù)的樣子來(lái)看一下酬屉,這里就用到了nltk半等,提供的tree可視化包。
代碼:
from stanfordcorenlpimport StanfordCoreNLP
from nltk.treeimport Tree
nlp = StanfordCoreNLP('/Users/wangwenhua/Downloads/stanford-corenlp-full-2018-10-05', lang='zh')
sentence ='清華大學(xué)位于北京呐萨。'
tree=Tree.fromstring(nlp.parse(sentence))
tree.draw()
運(yùn)行截圖:
接下來(lái)相對(duì)依存句法分析的結(jié)果進(jìn)行一些后處理杀饵,都可以針對(duì)nltk.tree這個(gè)類進(jìn)行操作。
print(tree.height())#樹(shù)的高度
print(tree.leaves())#樹(shù)的葉子結(jié)點(diǎn)
tree.productions()#生成與樹(shù)的非終端節(jié)點(diǎn)對(duì)應(yīng)的結(jié)果
如下:
[ROOT -> IP, IP -> NP VP PU, NP -> NR NN, NR -> '清華', NN -> '大學(xué)', VP -> VV NP, VV -> '位于', NP -> NR, NR -> '北京', PU -> '谬擦。']
更多API參考NLTK官網(wǎng):http://www.nltk.org/_modules/nltk/tree.html