如何使用 Python 在 NLTK 中使用斯坦福解析器

2023-11-22

是否可以在 NLTK 中使用斯坦福解析器? (我不是在谈论斯坦福 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()

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。

安装

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

    sudo python setup.py 安装

  2. 您可以使用 NLTK 下载器来使用 Python 获取斯坦福解析器:

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

OR:

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

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

  3. 提取 stanford-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/斯坦福/nlp/models/lexparser。再次提取名为“englishPCFG.ser.gz”的文件。请记住提取该 ser.gz 文件的位置。

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Python 在 NLTK 中使用斯坦福解析器 的相关文章

随机推荐

  • Fragment 和 FragmentStatePagerAdapter 内带有 ViewPager 的 Fragment 会导致异常(带有完整示例)

    我有一个带有 ViewPager 的简单片段 我正在使用最新的支持库 v4 rev18 如果我第一次显示子片段 一切正常 如果我返回并再次显示它 应用程序会崩溃 并出现以下异常 我有一个完整的示例 显示何时发生以下异常 java lang
  • Javascript 提供哪些调试日志记录工具? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我想创建一个 通用 调试日
  • Func<> 与委托和 lambda 表达式之间的区别[重复]

    这个问题在这里已经有答案了 在深入了解 C 的更高级功能时 我遇到了一些代码 但我并不完全知道其中的区别 这是关于这两行 Func
  • 关闭主窗体

    我正在使用 C Windows 表单开发一个简单的应用程序 主窗体打开另一个窗体 但我不想要这两种窗体 我希望当第二个表单打开时第一个表单关闭 由于第一种形式主要使用 this Close 显示第二个表格后将关闭两者 所以我用这个代替 pr
  • 在 C/C++ 中向指针添加 1 个字节的正确方法是什么?

    我现在正在使用这段代码将指针移动 1 个字节 但我感 觉有些不清楚 int a int malloc sizeof int void b char a 1 char是 1 个字节 但未定义用于字节操作目的 我相信还有另一种方法可以做到这一点
  • 有没有办法在 Azure DevOps CI/CD 构建管道中设置日期和时间(时区)

    我在 CI CD 构建管道中运行了自动化测试 但 DevOps 中的时间是 UTC 我的断言测试检查本地时间 有没有办法在我的构建管道中设置时区 使用 Powershell 您可以执行以下操作 Get TimeZone Set TimeZo
  • 无法将数据库状态与会话同步

    无法将数据库状态与会话同步 org hibernate exception GenericJDBCException 无法更新 我在尝试更新数据库时收到此错误 我的数据库中没有定义唯一键 但 id 字段已定义为主键 这是更新函数的代码 pu
  • Chrome 打印预览不加载 @media 仅打印字体

    我想要一个与屏幕不同的打印字体 不幸的是 Google Chrome 打印预览 适用于其他浏览器 不会加载字体 也不会显示文本 但如果您第二次尝试 字体将被加载 然后 Google Chrome 打印预览将显示文本 这是一个可以重现问题的小
  • 从字符串中删除字符及其后的所有内容

    我知道要替换字符串的字符串 但只有当我确切知道要删除的内容时 这才有效 如果我有一个如下所示的字符串 嗨 那里 这是一个测试 功能 嗨 那里 如何删除 feature 及其后的所有内容 任何帮助将不胜感激 提前致谢 编辑 如果绝对需要使用
  • 从 NodeJS 中的 keycloak 会话获取用户名

    有没有类似的东西 request getUserPrincipal getName Java 在Node中我们使用时获取用户名连接钥匙斗篷使用快速中间件 我也遇到了这个问题 我确实深入研究了中间件代码并试图找到类似的东西 事实证明 requ
  • CSS 导入字体

    我需要在网站上使用 4 种字体 并且我的网站文件夹中有这些文件 Baskerville ttc BellGothicstd Black otf BellGothicstd Bold otf JennaSue ttf 我尝试使用 Import
  • 如何解析 shell 脚本中的符号链接

    给定绝对或相对路径 在类 Unix 系统中 我想在解析任何中间符号链接后确定目标的完整路径 同时解决 用户名符号的奖励积分 如果目标是一个目录 则可以 chdir 进入该目录 然后调用 getcwd 但我真的想从 shell 脚本中执行此操
  • 声纳违规:安全性 - 数组直接存储

    存在声纳违规 声纳违规 安全性 数组直接存储 public void setMyArray String myArray this myArray myArray 解决方案 public void setMyArray String new
  • 如何在 React Native 中抑制由于第三方 PropTypes 库而产生的警告

    在 React Native 中使用样式表时 我收到了大量警告 如下图所示 iOS 模拟器上的警告 怎么抑制呢 无法禁用特定组件的警告 但您可以在应用程序中禁用不同类型的警告 要禁用所有警告 请使用 console disableYello
  • 外部硬盘上的 MySQL 表

    我有大量文本数据需要导入MySQL 我在 MacBook 上执行此操作 但没有足够的空间 因此我想将其存储在外部硬盘驱动器中 目前我并不真正关心速度 这只是为了测试 最好的方法是什么 在外部硬盘上安装 MySQL 这在 Mac 上可行吗 在
  • 动态设置局部变量[重复]

    这个问题在这里已经有答案了 如何在Python中动态设置局部变量 变量名是动态的 与已发布的其他答案相反 您无法修改locals 直接并期望它能起作用 gt gt gt def foo lcl locals lcl xyz 42 print
  • UserPrincipal.FindByIdentity() 始终返回 null

    我正在使用 LdapAuthentication 将用户登录到 Active Directory 我想找到该用户所属的所有组 我正在使用以下代码 string adPath LDAP OU HR Controlled Users OU Al
  • 用 Perl 读取精美的文件

    我正在寻找在 Perl 中读取文件的有效方法 并发现了这一非常有趣的行 my text do local ARGV file lt gt 我的问题是 这到底是如何运作的 通常在读取您设置的文件时 undef 但我不明白这是如何做到的 事实证
  • 通过收集多列来整理数据集? [复制]

    这个问题在这里已经有答案了 我想通过这样操作数据来整理数据集 age gender education previous comp exp tutorial time qID 1 time taken 1 qID 2 time taken
  • 如何使用 Python 在 NLTK 中使用斯坦福解析器

    是否可以在 NLTK 中使用斯坦福解析器 我不是在谈论斯坦福 POS 请注意 此答案适用于 NLTK v 3 0 而不适用于更新的版本 当然 请在 Python 中尝试以下操作 import os from nltk parse impor