python - NLTK ChartParser 给出空列表
问题描述
任务是定义语法并使用 ChartParser 使用 nltk 中的 ChartParser 包解析任何给定的句子。我的代码如下:
import nltk
your_grammar = nltk.CFG.fromstring("""
S -> NP VP
NP -> NP PP
Nom -> N
VP -> V NP | V S | VP PP
PP -> P NP
Det -> 'the'
N -> 'block' | 'table'
V -> 'Put'
P -> 'on'
""")
parser = nltk.ChartParser(your_grammar)
sent = 'Put the block on the table'.split()
print (list(parser.parse(sent)))
但是输出给出了一个空列表。
输出:
[]
有人可以帮我吗?
解决方案
目前,语法不能匹配任何字符串,因为它包含一个无限循环。
如果我部分扩展S
,我会得到NP 'on' NP VP
并且因为NP -> NP
无法将其解决为“无”;我必须总是匹配别的东西。
如果NP -> ''
那将允许 NP 不匹配(好),这将因此意味着S -> VP
which 将开始匹配第一个 word Put
。这应该将语法放在正确的轨道上,具体取决于您希望它如何匹配。
推荐阅读
- python - 在同一窗口恢复 tkinter python 程序
- c - 在 C 中搜索数据结构数组的成员
- flutter - 构建函数返回 null
- java - Android Firestore - 在第一次打开时缓存数据然后使用快照更新?
- android - 由于重复类 android.support 导致 APK 创建失败
- python - 当按值选择任何标签时,BeautifulSoup 仅返回标签的文本,期望返回完整的标签
- typescript - 如何将元组类型转换为联合?
- javascript - 如何解析 JavaScript 数据
- angular - 错误:node_modules/@angular/material/form-field/index.d.ts 中的指令 MatFormFieldControl 没有选择器,请添加
- c# - 属性的属性继承在 C# 中失败