NLTK 上下文无关语法生成器

2024-01-06

我正在开发一个带有 Unicode 字符的非英语解析器。为此,我决定使用 NLTK。

但它需要预定义的上下文无关语法,如下所示:

  S -> NP VP
  VP -> V NP | V NP PP
  PP -> P NP
  V -> "saw" | "ate" | "walked"
  NP -> "John" | "Mary" | "Bob" | Det N | Det N PP
  Det -> "a" | "an" | "the" | "my"
  N -> "man" | "dog" | "cat" | "telescope" | "park"
  P -> "in" | "on" | "by" | "with" 

在我的应用程序中,我应该使用基于规则的语法来最大限度地减少硬编码。 例如,我可以假设任何以-ed or -ing作为动词。所以它应该适用于任何给定的上下文。

我如何将这样的语法规则提供给 NLTK?或者使用有限状态机动态生成它们?


如果您正在创建一个解析器,那么您have在实际解析之前添加词性标记步骤——没有办法在脱离上下文的情况下成功确定单词的词性标记。例如,“close”可以是形容词或动词;词性标注器会从单词的上下文中为您找到正确的标签。然后您可以使用 POS 标记器的输出来创建您的 CFG。

您可以使用许多现有的词性标注器之一。在 NLTK 中,您可以简单地执行以下操作:

import nltk
input_sentence = "Dogs chase cats"
text = nltk.word_tokenize(input_sentence)
list_of_tokens = nltk.pos_tag(text)
print list_of_tokens

输出将是:

[('Dogs', 'NN'), ('chase', 'VB'), ('cats', 'NN')]

您可以使用它来创建语法字符串并将其提供给nltk.parse_cfg().

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

NLTK 上下文无关语法生成器 的相关文章

  • 从 asyncio 子进程获取实时输出

    我正在尝试使用 Python asyncio 子进程来启动交互式 SSH 会话并自动输入密码 实际用例并不重要 但它有助于说明我的问题 这是我的代码 proc await asyncio create subprocess exec ssh
  • 从 Python 中的 message_from_string() 获取发件人地址

    有人可以告诉我如何在Python中从email message from string 获取发件人地址吗 谢谢 我试过 message email message from string email text from message Fr
  • 使用python编辑html,但是lxml将漂亮的html实体转换为奇怪的编码

    我正在尝试使用 python 带有 pyquery 和 lxml 来更改和清理一些 html Eg html div p It 146 s a spicy meatball p div lxml html clean 函数 clean ht
  • XAMPP 不解析 PHP

    我刚刚安装了 XAMPP 1 8 1 并重新启动了计算机 开始运行 Apache 和 MySQL 并在 XAMPP 下的 htdocs 目录中的测试文件夹中创建了一个测试文件 当我访问 xampp index php 时 他们的页面显示正常
  • 让 python 脚本打印到终端而不作为标准输出的一部分返回

    我正在尝试编写一个返回值的 python 脚本 然后我可以将其传递给 bash 脚本 问题是我想要在 bash 中返回一个单一值 但我想要一些东西一路打印到终端 这是一个示例脚本 我们称之为 return5 py usr bin env p
  • FastAPI UploadFile 与 Flask 相比慢

    我创建了一个端点 如下所示 app post report upload def create upload files files UploadFile File try with open files filename wb as wf
  • 如何同时有效地运行多个 Pytorch 进程/模型? Traceback:分页文件太小,无法完成此操作

    背景 我有一个非常小的网络 我想用不同的随机种子进行测试 该网络几乎只使用了我的 GPU 计算能力的 1 因此理论上我可以同时运行 50 个进程来同时尝试许多不同的种子 Problem 不幸的是我什至无法在多个进程中导入 pytorch 当
  • 清理 MongoDB 的输入

    我正在为 MongoDB 数据库程序编写 REST 接口 并尝试实现搜索功能 我想公开整个 MongoDB 接口 我确实有两个问题 但它们是相关的 所以我将它们放在一篇文章中 使用 Python json 模块解码不受信任的 JSON 是否
  • 在Python中,如何通过去掉括号和大括号来打印Json

    我想以一种很好的方式打印 Json 我想去掉方括号 引号和大括号 只使用缩进和行尾来显示 json 的结构 例如 如果我有一个像这样的 Json A A1 1 A2 2 B B1 B11 B111 1 B112 2 B12 B121 1
  • Python MySQLdb:connection.close() VS。光标.close()

    如果我使用MySQLdb通过Python连接到MySQL Server 我创建一个connection and a cursor像这样 connection MySQLdb connect cursor connection cursor
  • pandas DataFrame 中行的高效成对比较

    我目前正在处理一个较小的数据集 大约 900 万行 不幸的是 大多数条目都是字符串 即使强制类别 框架在内存中也只有几 GB 我想做的是将每一行与其他行进行比较 并对内容进行直接比较 例如 给定 A B C D 0 cat blue old
  • 如何使用 Python 在表单中选择选项?

    我想知道如何以格式如下的形式选择选项 td align left td
  • 如何在 tkinter 后台运行函数[重复]

    这个问题在这里已经有答案了 我是 GUI 编程新手 我想用 tkinter 编写一个 Python 程序 我想要它做的就是在后台运行一个可以通过 GUI 影响的简单函数 该函数从 0 计数到无穷大 直到按下按钮为止 至少这是我想要它做的 但
  • 使用张量流导出神经网络的权重

    我使用张量流工具编写了神经网络 一切正常 现在我想导出神经网络的最终权重以制定单一的预测方法 我怎样才能做到这一点 您需要在训练结束时使用以下命令保存模型tf train Saver https www tensorflow org ver
  • Pandas 根据条件替换数据框值

    我有一个主数据框 df Colour Item Price Blue Car 40 Red Car 30 Green Truck 50 Green Bike 30 然后我有一个价格修正数据框 df pc Colour Item Price
  • 在基本 Tensorflow 2.0 中运行简单回归

    我正在学习 Tensorflow 2 0 我认为在 Tensorflow 中实现最基本的简单线性回归是一个好主意 不幸的是 我遇到了几个问题 我想知道这里是否有人可以提供帮助 考虑以下设置 import tensorflow as tf 2
  • 如何在Python中不使用库函数将字符串转换为整数?

    我正在尝试转换 a 546 to a 546 不使用任何库函数 我能想到的 最纯粹 gt gt gt a 546 gt gt gt result 0 gt gt gt for digit in a result 10 for d in 01
  • 如何使用 Matplotlib 可视化标量二维数据?

    所以我有一个网格网格 矩阵 X 和 Y 以及标量数据 矩阵 Z 我需要将其可视化 最好是一些 2D 图像 在各点处带有颜色 显示 Z 值 我做了一些研究 但没有找到任何能完全满足我想要的效果的东西 pyplot imshow Z 看起来不错
  • 无法将 librosa 与 python 3 一起使用

    我已经在 Windows 上的 ubuntu 子系统上使用 pip3 正确安装了 librosa 但是当我尝试执行像这样的简单程序时 import librosa data sr librosa load sound mp3 print d
  • nltk 标记化和缩写

    我用 nltk 对文本进行标记 只是将句子输入到 wordpunct tokenizer 中 这会拆分缩写 例如 don t 到 don t 但我想将它们保留为一个单词 我正在改进我的方法 以实现更精确的文本标记化 因此我需要更深入地研究

随机推荐

  • 在 HTML 中调用匿名函数

    我有一个关于将匿名函数提取到 HTML 的问题 这是我的 HTML 代码行 onclick functionToPull map 如果函数不是匿名的 则 functionToPull 将是函数的名称 如何提取匿名 JavaScript 函数
  • 在 Eclipse 中将现有项目转换为 Android 项目?

    如何在 Eclipse 中将现有项目转换为 Android 项目 特别是 我想将一个普通的旧 Java 项目转换为 Android 库项目 Thanks 您需要更改项目的性质 这个问题已经得到解答 但没有人给出您所需的实际字符串 关闭日食
  • Android 上关闭键盘后返回沉浸模式

    我将沉浸式模式添加到我的应用程序中 这是代码 Override public void onWindowFocusChanged boolean hasFocus super onWindowFocusChanged hasFocus if
  • csv php mysql 数据导出 - 所有数据都导出在一列中

    我需要使用下面的 php 脚本将姓名 给定电话号码 移动注释位置全部放在我的 csv 导出的单独列中 当前代码将每条记录的所有选定数据导出到一列中 谢谢你 result mysql query SELECT who as Name Give
  • Jenkins Pipeline:如何转储错误?

    当尝试打印错误时 e getMessage 或在管道脚本中转储堆栈跟踪 我收到一条错误消息 指出这是不允许的 在这种情况下如何将错误输出到日志中 try deleteJob JOB NAME catch e emailError e get
  • 显示没有索引键的数组

    print r arraydata 我得到了输出 数组 0 gt vikas 1 gt 衬衫 2 gt 布料 1 3 gt 测试 4 gt 衬衫 5 gt 布料 2 6 gt avi 我需要这样显示数组 arr array vikas 衬衫
  • Chrome Inspector 中的 Javascript 调试:变量在手表和控制台中显示为未定义,但可以在悬停时进行检查

    在 Chrome 检查器中调试 AngularJS 时 我经常遇到这样的情况 当我知道某些变量已定义时 我可以通过在 Chrome 检查器中将鼠标悬停在它们上方来检查它们 他们也出现在 当地人 选项卡中 但是 当我尝试将它们添加到监视选项卡
  • 使用 ICommand 的按钮不会被禁用?

    我的 wpf mvvm 应用程序中有一个按钮控件 我用一个ICommand属性 在 viewmodel 中定义 将按钮单击事件绑定到 viewmodel 我有 gt 执行和canexecute我的参数ICommand执行 RelayComm
  • 如何使用 Java Mission Control 监控远程服务器中的 JVM?

    是否可以使用JMC 监控远程服务器中的 JVM 如果是这样我该怎么做 在使用之前是否需要调用任何特定的 java 标志 我尝试创建一个新的 JVM 连接 并指定向导中要求的所有详细信息 但是当我测试连接时它无法连接到该服务器 由于需要进行一
  • IIS 站点不断提示输入 Windows 身份验证方法的凭据

    我需要一些帮助来了解我无法在 IIS 站点上针对特定用户组使用 Windows 身份验证的确切原因 发生的情况是 即使我的用户属于我授予站点访问权限的组的一部分 IE 也会不断提示我输入凭据 甚至当我输入密码时 HTTP 响应也是 401
  • 如何使用库(插入符号)更改指标?

    我想使用以下方法将指标从 RMSE 更改为 RMSLE caret library 给定一些示例数据 ivar1 lt rnorm 500 mean 3 sd 1 ivar2 lt rnorm 500 mean 4 sd 1 ivar3 l
  • LINQ + Foreach 与 Foreach + If

    我需要迭代对象列表 仅对布尔属性设置为 true 的对象执行某些操作 我正在这段代码之间争论 foreach RouteParameter parameter in parameters Where p gt p Condition do
  • 使用 mod_wsgi 从不运行 Django 的站点提供 Django 应用程序 /

    我有一个网站 目前正在使用 Django 逐个应用程序重写 服务器是RedHat 运行 Apache 2 安装 mod wsgi 一切正常 惊人的 如果我去http www example com http www example com
  • preg_replace() 找不到结束分隔符?

    I use preg replace 很多 但我不是这方面的天才 如果我启动一个功能并故意键入我想要使用的所有表情符号 例如 但今天我尝试更改它并使用 mysql 让我可以随意插入和删除它们 而无需在我的代码中播放 但是当我尝试它时 它只会
  • Angular2:检测表单变化

    在 Angular2 4 0 中我有一个FormGroup看起来像这样 this form this fb group a Validators required b Validators required c Validators req
  • macOS 上的 NavigationLink 无法在同一视图中打开

    我目前正在构建一个 macOS 应用程序SwiftUI 无 Catalyst 应该有一个侧边栏和其右侧的单个视图 NavigationView List listStyle SidebarListStyle HomeView 我的主页视图有
  • Angular 4单个API请求运行多次

    我遇到有关 Angular 4 应用程序的问题 我创建了一个应用程序 其中的数据是从第三方 API 获取的 我遇到的问题是我的 API 多次调用 但我只发送了一次请求 经过一些研发后 我发现浏览器正在使用 OPTION 方法运行航班请求 但
  • Neo4j 中匹配/删除整个子图

    假设我的数据库中有一个大图 我想删除其中的整个子图 其中我只知道该子图的起始节点 是否可以编写一个密码查询来匹配并删除整个子图 警告 我不知道更多关于子图从哪个节点开始的信息 是的 您可以通过 APOC 程序从单个节点扩展到所有子图节点路径
  • 从源代码管理中丢失后如何生成新的 .pfx 文件?

    我正在使用 GitHub 托管我正在开发的开源 Windows 10 应用程序 我不小心忽略了应用程序的 PFX 文件 因此当我删除本地副本并重新克隆存储库时 我没有了MyApp TemporaryKey pfx文件 现在 Visual S
  • NLTK 上下文无关语法生成器

    我正在开发一个带有 Unicode 字符的非英语解析器 为此 我决定使用 NLTK 但它需要预定义的上下文无关语法 如下所示 S gt NP VP VP gt V NP V NP PP PP gt P NP V gt saw ate wal