NLTK 判断单词是否由 CFG 生成

NLTK tell if word is generated by CFG

提问人:rideau 提问时间:11/13/2023 最后编辑:rideau 更新时间:11/13/2023 访问量:12

问:

给定字符串和上下文无关的语法,我需要判断语法是否使用 NLTK 生成字符串

我尝试使用来自 github 的一些开源解决方案,但它无法正常工作:

小号 ->
小号 -> B A10 |B0
A1 -> T A2 A10 -> T
A20 |T0
A2 -> C
A20 -> C |
T -> b T0 -> b
|
T -> C T
T0 -> C T0 |C0 B -> A B0 ->

A B0 ->
S0 ->
B A1
C -> B C0 -> B
|

并字符串 a b b b c,它在 CFL 中,但解决方案说它不是

nltk 上下文无关语法 无关语言 cyk earley-parser

评论


答:

0赞 rideau 11/13/2023 #1

你可以只使用 https://www.nltk.org/howto/parse.html 的 RecursiveDescentParser 并遍历 parser.parse(word),如果你迭代超过 0 次 - word 在语言中。

评论

0赞 Community 11/22/2023
您的答案可以通过额外的支持信息得到改进。请编辑以添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到有关如何写出好答案的更多信息。