1. 程式人生 > >NLTK中使用Stanford parser

NLTK中使用Stanford parser

nltk工具包中有一個用於自然語言句法分析的資料夾parse(地址C:\Python27\Lib\site-packages\nltk\parse\stanford.py)。其中stanford.py就是我們要用的stanford parser的原始檔,這裡面有parser的介面,直接使用可以進行最簡單的句法分析。

步驟
1.下載stanford最新版本,最新版本為stanford-parser-full-2014-10-31。下載地址:http://nlp.stanford.edu/software/lex-parser.shtml#Download
2.開啟下載好的壓縮包,進入/edu/stanford/nlp/models/lexparser/,找到englishPCFG.ser.gz 並解壓到某處(比如我的地址為E:/stanford-parser-full-2014-10-31/stanford-parser-3.5.0-models/edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz)。
3.新建jars資料夾(比如我的地址為E:/jars),將stanford資料夾中的stanford-parser.jar, stanford-parser-3.4.1-sources.jar, stanford-parser-3.4.1-javadoc.jar拷貝進來。
4.執行程式碼檢視結果。

import os
from nltk.parse import stanford

#新增stanford環境變數,此處需要手動修改,jar包地址為絕對地址。
os.environ['STANFORD_PARSER'] = 'E:/jars/stanford-parser.jar'
os.environ['STANFORD_MODELS'] = 'E:/jars/stanford-parser-3.5.0-models.jar'


#為JAVAHOME新增環境變數
java_path = "C:/Program Files (x86)/Java/jdk1.8.0_11/bin/java.exe"
os.environ['JAVAHOME'] = java_path

#句法標註
parser = stanford.StanfordParser(model_path="E:/stanford-parser-full-2014-10-31/stanford-parser-3.5.0-models/edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz")
sentences = parser.parse_sents("Hello, My name is Melroy.".split(), "What is your name?".split())
print sentences

# GUI
for sentence in sentences:
    sentence.draw()