是否可以在 NLTK 中使用 Stanford Parser? (我不是在谈论斯坦福 POS。)
最佳答案
请注意,此答案适用于 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()
输出:
[Tree('ROOT', [Tree('S', [Tree('INTJ', [Tree('UH', ['Hello'])]), Tree(',', [',']), Tree('NP', [Tree('PRP$', ['My']), Tree('NN', ['name'])]), Tree('VP', [Tree('VBZ', ['is']), Tree('ADJP', [Tree('JJ', ['Melroy'])])]), Tree('.', ['.'])])]), Tree('ROOT', [Tree('SBARQ', [Tree('WHNP', [Tree('WP', ['What'])]), Tree('SQ', [Tree('VBZ', ['is']), Tree('NP', [Tree('PRP$', ['your']), Tree('NN', ['name'])])]), Tree('.', ['?'])])])]
注 1: 在这个例子中,解析器和模型 jar 都在同一个文件夹中。
注2:
注 3: 可以在 models.jar 文件 (/edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz) 内 找到englishPCFG.ser.gz 文件。请使用存档管理器“解压缩”models.jar 文件。
注 4: 确保您使用的是 Java JRE(运行时环境)1.8,也称为 Oracle JDK 8。否则您会得到:Unsupported major.minor version 52.0。
从 https://github.com/nltk/nltk 下载 NLTK v3 .并安装 NLTK:
sudo python setup.py install
您可以使用 NLTK 下载器获取 Stanford Parser,使用 Python:
import nltk
nltk.download()
试试我的例子! (不要忘记更改jar路径并将模型路径更改为ser.gz位置)
或:
下载并安装NLTK v3,同上。
从(当前版本文件名是stanford-parser-full-2015-01-29.zip)下载最新版本: http://nlp.stanford.edu/software/lex-parser.shtml#Download
解压standford-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/stanford/nlp/models/lexparser。再次提取名为“englishPCFG.ser.gz”的文件。记住您提取此 ser.gz 文件的位置。
创建 StanfordParser 实例时,您可以提供模型路径作为参数。这是模型的完整路径,在我们的例子中是/location/of/englishPCFG.ser.gz。
试试我的例子! (不要忘记更改jar路径并将模型路径更改为ser.gz位置)
https://stackoverflow.com/questions/13883277/