NLTK和Stanford NLP兩個工具的安裝配置

 

這裏安裝的是兩個天然語言處理工具,NLTK和Stanford NLP。python


聲明:筆者操做系統是Windows10,理論上Windows均可以;api

           版本號:NLTK 3.2編輯器

                         Stanford NLP 3.6.0函數

                         JDK 1.8工具

           重要文件在講述過程當中會以網盤連接給出,可隨時下載。post

注:筆者是經過Anaconda安裝的python,因此有關路徑都與Anaconda有關。 測試

 

1、 NLTK的安裝ui

一、檢查python版本:NLTK是python語言編寫的,依託python來安裝。當前通行的python版本是python3.5.2。筆者的python版本也是python3.5.2,爲了防止不可預估的問題,建議你們都選擇python3.5.2,往後再改也能夠。

 

二、下載NLTK安裝文件,版本是NLTK 3.2,網盤連接:https://pan.baidu.com/s/1fPxL36TGZtrzMdq3pFxlcg
      下載後直接運行exe文件進行安裝,會自動匹配到python安裝路徑,若是沒有找到路徑則說明NLTK版本不正確,或者說python版本不正確。
3.  打開python編輯器,輸入「import nltk」,再輸入「nltk.download()」,下載NLTK數據包,在下載界面選中book模塊,這個模塊包含了許多數據案例和內置函數。
     修改book下載目的路徑建議以下:D:\DevelopmentTools\Anaconda3\nltk_data,也就是在Anaconda下建立一個nltk_data的文件夾,將book下載目標路徑放在此處便可,這樣作便於管理和維護。以下如:

 


四、環境變量的配置:計算機→屬性→高級系統設置→高級→環境變量-系統變量→path,在path中加入剛剛定的路徑:D:\DevelopmentTools\Anaconda3\nltk_data
五、配置完成以後,打開python編輯器,輸入from nltk.book import *,只要沒有輸出明顯的錯誤,正確顯示了相關信息,就表示NLTK安裝成功了,以下圖:

 

 

 

2、Stanford NLP工具的安裝spa

一、版本檢查: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.zip,這個文件提供的NLTK工具鏈接到Stanford NLP工具的接口。網盤連接:
下載以後解壓,而後把解壓後的nltk-develop文件夾複製到python安裝的主路徑下,筆者是Anaconda方式安裝的python,因此就直接放在了Anaconda3的主目錄下,以下:

 

三、而後進入Windows的cmd命令行操作系統

 

從命令進入到剛剛複製的路徑下:D:\DevelopmentTools\Anaconda3\nltk-develop  ,而後輸入python setup.py install,並執行  以下:

等待安裝便可,因爲筆者已經安裝過了,就不展現安裝後的信息了。

 

四、Stanford NLP版本是3.6.0,全部文件可在網盤下載:https://pan.baidu.com/s/15y7gfy167cfLJhvRurWMCA
      筆者已經將所需的文件和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

相關文章
相關標籤/搜索