python - 如何使用 Python 在 NLTK 中使用 Stanford Parser

是否可以在 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:

  • stanford解析器文件名:stanford-parser.jar
  • 斯坦福模型的文件名是:stanford-parser-x.x.x-models.jar

注 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。

安装

  1. 从 https://github.com/nltk/nltk 下载 NLTK v3 .并安装 NLTK:

    sudo python setup.py install

  2. 您可以使用 NLTK 下载器获取 Stanford Parser,使用 Python:

    import nltk
    nltk.download()
    
  3. 试试我的例子! (不要忘记更改jar路径并将模型路径更改为ser.gz位置)

或:

  1. 下载并安装NLTK v3,同上。

  2. 从(当前版本文件名是stanford-parser-full-2015-01-29.zip)下载最新版本: http://nlp.stanford.edu/software/lex-parser.shtml#Download

  3. 解压standford-parser-full-20xx-xx-xx.zip。

  4. 创建一个新文件夹(在我的示例中为“jars”)。将解压后的文件放到这个 jar 文件夹中:stanford-parser-3.x.x-models.jar 和 stanford-parser.jar。

    如上所示,您可以使用环境变量 (STANFORD_PARSER & STANFORD_MODELS) 指向这个“jars”文件夹。我使用的是 Linux,所以如果你使用 Windows,请使用类似:C://folder//jars。

  5. 使用存档管理器 (7zip) 打开 stanford-parser-3.x.x-models.jar。

  6. 浏览jar文件; edu/stanford/nlp/models/lexparser。再次提取名为“englishPCFG.ser.gz”的文件。记住您提取此 ser.gz 文件的位置。

  7. 创建 StanfordParser 实例时,您可以提供模型路径作为参数。这是模型的完整路径,在我们的例子中是/location/of/englishPCFG.ser.gz。

  8. 试试我的例子! (不要忘记更改jar路径并将模型路径更改为ser.gz位置)

https://stackoverflow.com/questions/13883277/

相关文章:

python - 在 CentOS 中安装 python 2.6

python - “模块”没有属性 'urlencode'

python - 如何绘制正态分布

python - 对带有异常的字符串进行标题化

python - 为什么循环导入似乎在调用堆栈中更靠前,但在更靠下的位置引发 ImportError

python - 如何检查文件是否是有效的图像文件?

python - 如何在 python 中从变量参数(kwargs)设置类属性

python - 来自 os.listdir() 的非字母数字列表顺序

python - 非 ASCII 字符的语法错误

python - SQLAlchemy ORM 转换为 pandas DataFrame