一、版本檢查:python版本依舊是python3.5.2,同時要確保安裝的是Java 8及之後版本(Stanford NLP只支持Java 8及之後的版本),也就是肯定系統安裝的jdk1.8及以上版本。筆者電腦安裝的是jdk1.8.0_161。這裏就不說jdk的安裝了,本身百度下。 附上jdk1.8連接:https://pan.baidu.com/s/1RltrIesUoEcQvVshsns6Aw
下載以後解壓,而後把解壓後的nltk-develop文件夾複製到python安裝的主路徑下,筆者是Anaconda方式安裝的python,因此就直接放在了Anaconda3的主目錄下,以下:
筆者已經將所需的文件和jar包統一打包好了,下載下來的就是打包好的文件夾「stanfordNLP」,直接將此文件夾複製到Anaconda3的目錄下便可(理論上放到別的路徑也能夠,這個路徑最終是要來設置環境變量,這裏統一放在Anaconda3目錄下是爲了更方便的統一管理和維護而已),以下:
五、下面就來開始設置剛剛「stanfordNLP」文件夾下各個文件的環境變量,環境變量都是在系統變量的classpath中來操做。
設置環境變量的目的是爲了能隨時快速的調用,設置環境變量以後,之後的全部調用都不須要傳輸絕對路徑的參數了。
(1)StanfordSegmenter環境變量的設置
進入「stanfordNLP」文件夾,將stanford-segmenter.jar的絕對路徑拷貝到classpath下,分別以下:
注意,每個不一樣路徑之間要用分號分隔。
(2)slf4j-api.jar加入classpath環境變量。slf4j-api.jar是stanford-segmenter-2015-12-09.zip解壓後含有的文件。
同理,將「stanfordNLP」中的slf4j-api.jar的絕對路徑加入到classpath中去,以下:
(3)StanfordPOSTagger環境變量的設置
同理,進入「stanfordNLP」文件夾,將stanford-postagger.jar文件的絕對路徑添加到classpath中,以下:
(4)StanfordNERTagger環境變量的設置
同理,進入「stanfordNLP」文件夾,將stanford-ner.jar文件的絕對路徑添加到classpath中,以下:
(5)將classifiers文件夾也添加入classpath環境變量。classifiers文件夾是從stanford-ner-2015-12-09.zip解壓後含有的文件夾,直接複製提取的
(6)將models文件夾添加入classpath環境變量。models文件夾是stanford-postagger-full-2015-12-09.zip解壓後含有的文件夾。環境變量以下:
(7)StanfordParser環境變量的設置
同理,進入「stanfordNLP」文件夾,將stanford-parser.jar和stanford-parser-3.6.0-models.jar分別添加到classpath環境變量中去,分別以下:
(8)StanfordNeuralDependencyParser環境變量的設置
同上,進入「stanfordNLP」文件夾,分別將stanford-corenlp-3.6.0.jar和stanford-corenlp-3.6.0-models.jar添加入classpath環境變量,分別以下:
3、測試
因爲Stanford NLP工具安裝最繁瑣,也最容易出問題,因而特別展現對Stanford NLP的測試,全部簡短的代碼都是在python編輯器中執行的,其它地方也可:
代碼以下:
路徑:相應路徑是筆者前面安裝所使用的路徑,結合更改成本身電腦的實際路徑。只要按照上述步驟將全部環境變量配置了,那麼,在全部函數的調用中,函數參數就不用再輸入絕對路徑了,只須要直接輸入相應的文件名便可,函數運行時自會在環境變量的路徑下來找該文件,找不到的話就會報錯的。
一、分詞
(1)中文分詞
from nltk.tokenize.stanford_segmenter import StanfordSegmenter
segmenter = StanfordSegmenter(
path_to_sihan_corpora_dict="D:\DevelopmentTools\Anaconda3\stanfordNLP\data\", path_to_model="D:\DevelopmentTools\Anaconda3\stanfordNLP\data\pku.gz", path_to_dict="D:\DevelopmentTools\Anaconda3\stanfordNLP\data\dict-chris6.ser.gz")
str="我在博客園開了一個博客,個人博客名字叫鈍學累功。"
result = segmenter.segment(str)
==>運行有錯誤,未解決
(2)英文分詞
from nltk.tokenize import StanfordTokenizer
tokenizer=StanfordTokenizer()
sent="Good muffins cost $3.88\nin New York. Please buy me\ntwo of them.\nThanks."
print(tokenizer.tokenize(sent))
二、命名實體識別
(1)英文命名實體識別
from nltk.tag import StanfordNERTagger
eng_tagger=StanfordNERTagger(model_filename=r'D:\DevelopmentTools\Anaconda3\stanfordNLP\classifiers\english.all.3class.distsim.crf.ser.gz')
print(eng_tagger.tag('Rami Eid is studying at Stony Brook University in NY'.split()))
(2)中文命名實體識別
略
三、詞性標註
(1)英文詞性標註
from nltk.tag import StanfordPOSTagger
eng_tagger=StanfordPOSTagger(model_filename=r'D:\DevelopmentTools\Anaconda3\stanfordNLP\models\english-bidirectional-distsim.tagger')
print(eng_tagger.tag('What is the airspeed of an unladen swallow ?'.split()))
(2)中文詞性標註
from nltk.tag import StanfordPOSTagger
chi_tagger=StanfordPOSTagger(model_filename=r'chinese-distsim.tagger')
result="四川省 成都 信息 工程 大學 我 在 博客 園 開 了 一個 博客 , 我 的 博客 名叫 鈍學累功 。 \r\n"
print(chi_tagger.tag(result.split()))
四、句法分析
(1)英文句法分析
from nltk.parse.stanford import StanfordParser
eng_parser=StanfordParser()
print(list(eng_parser.parse("the quick brown for jumps over the lazy dog".split())))
(2)中文句法分析
from nltk.parse.stanford import StanfordParser
chi_parser=StanfordParser()
sent=u'北海 已 成爲 中國 對外開放 中 升起 的 一 顆 明星'
print(list(chi_parser.parse(sent.split())))
五、依存句法分析
(1)英文依存句法分析
from nltk.parse.stanford import StanfordDependencyParser
eng_parser=StanfordDependencyParser()
res=list(eng_parser.parse("the quick brown fox jumps over the lazy dog".split()))
for row in res[0].triples():
print(row)
(2)中文依存句法分析
from nltk.parse.stanford import StanfordDependencyParser
chi_parser=StanfordDependencyParser()
res=list(chi_parser.parse(u'四川 已 成爲 中國 西部 對外開放 中 升起 的 一 顆 明星'.split()))
for row in res[0].triples():
print(row)
總結,環境變量的設置總的來講是自由的,可是要設置的便於本身識別和 維護,筆者只是提供了本身的設置方案。只要能正常運行上述測試代碼,就表示Stanford NLP和NLTK安裝成功了,以後開發能夠結合兩個工具一塊兒使用。。。
參考連接:https://www.jianshu.com/p/4b3c7e7578e6