天天看點

Python 3.* 版本Stanford nlp安裝及問題解決

環境

    window7 64位

    JDK1.8

    Python3.5

stanfordcorenlp的使用

    進行中文詞語詞幹化的工作,聽說coreNLP這個工具不錯。

    coreNLP是斯坦福大學開發的一套關于自然語言處理的工具(toolbox),使用簡單功能強大,有:命名實體識别、詞性标注、   詞語詞幹化、語句文法樹的構造還有指代關系等功能,使用起來比較友善。

PART1:安裝Stanford NLP

1) 安裝Stanford nlp自然語言處理包:pip install stanfordcorenlp

2) 下載下傳Stanford CoreNLP檔案:http://stanfordnlp.github.io/CoreNLP/download.html

Python 3.* 版本Stanford nlp安裝及問題解決

3) 下載下傳中文模型jar包:http://nlp.stanford.edu/software/stanford-chinese-corenlp-208-02-27-models.jar

Python 3.* 版本Stanford nlp安裝及問題解決

4) 把解壓後的Stanford CoreNLP檔案夾(個人習慣,這裡我重命名為stanford_nlp)和下載下傳的Stanford-chinese-corenlp-2018-02-27-models.jar放在同一目錄下(注意:一定要在同一目錄下,否則執行會報錯)

Python 3.* 版本Stanford nlp安裝及問題解決

5) 在Python中引用模型,執行下面語句:

from stanfordcorenlp import StanfordCoreNLP
nlp=StanfordCoreNLP(r'D:\stanford_nlp',)
           

PART2:安裝過程問題

    然而,很多朋友在上面的執行過程中,總遇到下面的問題(可能原因:coreNLP是使用Java編寫的,運作環境需要在JDK1.8,1.7貌似都不支援,需要引進 .jar 包)我當時也是特别郁悶,網上對于這個問題的解答比較少,這裡依據我的血淚史給大家做個分享,希望對大家有所幫助:

Python 3.* 版本Stanford nlp安裝及問題解決

開始安裝 java 的 JDK 了,我安裝的是:jdk-8u171-windows-x64(點選打開連結)

1)輕按兩下安裝包,進入安裝模式,運作->下一步(N);

Python 3.* 版本Stanford nlp安裝及問題解決
Python 3.* 版本Stanford nlp安裝及問題解決

2)接着點選下一步或者,可以更改希望Java安裝的路徑;

Python 3.* 版本Stanford nlp安裝及問題解決

3)接着點選下一步或者,可以更改希望Java安裝的路徑

Python 3.* 版本Stanford nlp安裝及問題解決

 4)安裝完成後,關閉頁面;

Python 3.* 版本Stanford nlp安裝及問題解決

5)安裝完成後我們就可以配置java的環境變量了。(最關鍵的部分)

    Step1:進入“計算機”的“屬性”選項,選擇“進階系統設定”,如下圖所示:

Python 3.* 版本Stanford nlp安裝及問題解決

    Step2:點選“進階系統設定”後,會看到如下圖所示的對話框,選擇“環境變量”:

Python 3.* 版本Stanford nlp安裝及問題解決

    Step3:點選“環境變量”之後,會看到如下圖所示的對話框:

Python 3.* 版本Stanford nlp安裝及問題解決

    Step4:接下來就是具體的配置過程了:

        Step4.1:選擇上圖所示的“建立”:

Python 3.* 版本Stanford nlp安裝及問題解決

      “變量名”:Java_Home

      “變量值”: D:\jdk1.8.1_171

        注:“變量值”這一欄主要填寫的是你安裝 java 的路徑,這裡根據個人的情況可能會有所不同。

Python 3.* 版本Stanford nlp安裝及問題解決

        Step4.2:上步結束之後,選中環境變量中的“path”,如下圖所示:

Python 3.* 版本Stanford nlp安裝及問題解決

        選中之後編輯:

Python 3.* 版本Stanford nlp安裝及問題解決

        在“變量值”一欄的最前面添加如下的 code:

        %Java_Home%\bin;%Java_Home%\jre\bin;

        注意:上面的代碼最好一個字元不要差,因為Java_Home 已經限制了你的JDK 的路徑了,Java的每個版本的JDK 應該都是由這些東西構成的。

Python 3.* 版本Stanford nlp安裝及問題解決

         Step4.3: 上一步确定之後,再 “ 建立 ” :

Python 3.* 版本Stanford nlp安裝及問題解決

       “變量名”:ClassPath

       “變量值”:.;%Java_Home%\bin;%Java_Home%\lib\dt.jar;%Java_Home%\lib\tools.jar

         注:上面的代碼最好也是一個字元不變的貼上去,“變量值”最前面的 .; 不要漏掉。

        做完上面的三個步驟之後,環境變量的配置已經完成了。

Python 3.* 版本Stanford nlp安裝及問題解決

     Step5: 檢查環境變量搭好了:調出“cmd”檢查:

        Step5.1:輸入:“java”,你應該看到下面的東西:

Python 3.* 版本Stanford nlp安裝及問題解決

         Step5.2: 輸入: “javac” ,你應該看到下面的東西:

Python 3.* 版本Stanford nlp安裝及問題解決

        Step5.3:輸入:“java -version”,你應該看到下面的東西:

Python 3.* 版本Stanford nlp安裝及問題解決

    至此,我們的配置就全部完成了。

PART3:可以開始用安裝好的stanfordcorenlp進行詞性标注了。

    這裡,我們拿一段文本來試運作:

from  stanfordcorenlp import StanfordCoreNLP
nlp=StanfordCoreNLP(r'D:\stanford_nlp',)
           
fin=open('news.txt','r',encoding='utf8')
fner=open('ner.txt','w',encoding='utf8')
ftag=open('pos_tag.txt','w',encoding='utf8')

for line in fin:
    line=line.strip()
    if len(line)<1:
        continue
    
    fner.write(" ".join([each[0]+"/"+each[1] for each in nlp.ner(line) if len(each)==2 ])+"\n")
    ftag.write(" ".join([each[0]+"/"+each[1] for each in nlp.pos_tag(line) if len(each)==2 ]) +"\n")
fner.close()
ftag.close()
           
Python 3.* 版本Stanford nlp安裝及問題解決
Python 3.* 版本Stanford nlp安裝及問題解決
Python 3.* 版本Stanford nlp安裝及問題解決