请注意,此答案适用于 NLTK v 3.0,而不适用于更新的版本。
当然,请在 Python 中尝试以下操作:
import os
from nltk.parse import stanford
os.environ['STANFORD_PARSER'] = '/path/to/standford/jars'
os.environ['STANFORD_MODELS'] = '/path/to/standford/jars'
parser = stanford.StanfordParser(model_path="/location/of/the/englishPCFG.ser.gz")
sentences = parser.raw_parse_sents(("Hello, My name is Melroy.", "What is your name?"))
print sentences
# GUI
for line in sentences:
for sentence in line:
sentence.draw()
Output:
[树('ROOT', [树('S', [树('INTJ', [树('呃', ['你好'])]),
树(',', [',']), 树('NP', [树('PRP$', ['我的']), 树('NN',
['名称'])]),树('VP',[树('VBZ',['是']),树('ADJP',[树('JJ',
['Melroy'])])]), Tree('.', ['.'])])]), Tree('ROOT', [Tree('SBARQ',
[树('WHNP',[树('WP',['什么'])]),树('SQ',[树('VBZ',
['是']), 树('NP', [树('PRP$', ['你的']), 树('NN', ['名称'])])]),
树('。', ['?'])])])]
Note 1:在此示例中,解析器和模型 jar 都位于同一文件夹中。
Note 2:
- stanford解析器的文件名为:stanford-parser.jar
- stanford模型的文件名是:stanford-parser-x.x.x-models.jar
Note 3:可以找到englishPCFG.ser.gz文件insidemodels.jar 文件(/edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz)。请使用存档管理器“解压缩”models.jar 文件。
Note 4:确保您使用的是 Java JRE(运行时环境)1.8也称为 Oracle JDK 8。否则您将得到:不支持的 Major.minor 版本 52.0。
安装
-
从以下位置下载 NLTK v3:https://github.com/nltk/nltk。并安装NLTK:
sudo python setup.py 安装
-
您可以使用 NLTK 下载器来使用 Python 获取斯坦福解析器:
import nltk
nltk.download()
试试我的例子吧! (不要忘记更改 jar 路径并将模型路径更改为 ser.gz 位置)
OR:
下载并安装NLTK v3,与上面相同。
从 (当前版本文件名是 stanford-parser-full-2015-01-29.zip):http://nlp.stanford.edu/software/lex-parser.shtml#Download
提取 stanford-parser-full-20xx-xx-xx.zip。
-
创建一个新文件夹(在我的示例中为“jars”)。将提取的文件放入此 jar 文件夹中:stanford-parser-3.x.x-models.jar 和 stanford-parser.jar。
如上所示,您可以使用环境变量(STANFORD_PARSER 和 STANFORD_MODELS)指向此“jars”文件夹。我使用的是 Linux,所以如果您使用 Windows,请使用类似以下内容的内容:C://folder//jars。
使用存档管理器 (7zip) 打开 stanford-parser-3.x.x-models.jar。
浏览 jar 文件内部; edu/斯坦福/nlp/models/lexparser。再次提取名为“englishPCFG.ser.gz”的文件。请记住提取该 ser.gz 文件的位置。
创建StanfordParser实例时,您可以提供模型路径作为参数。这是模型的完整路径,在我们的示例中为 /location/of/englishPCFG.ser.gz。
试试我的例子吧! (不要忘记更改 jar 路径并将模型路径更改为 ser.gz 位置)