gpt4 book ai didi

python - 高效的上下文无关语法解析器,最好是 Python 友好的

转载 作者:IT老高 更新时间:2023-10-28 21:03:19 26 4
gpt4 key购买 nike

我需要为我的一个项目解析一小部分英语,该项目被描述为具有(1 级)特征结构 (example) 的上下文无关语法,我需要高效地完成。

现在我正在使用 NLTK的解析器产生正确的输出,但速度很慢。对于我的约 450 条相当模糊的非词汇规则和 50 万个词汇条目的语法,解析简单句子可能需要 2 到 30 秒,具体取决于结果树的数量。词法条目对性能几乎没有影响。

另一个问题是,在开头加载 (25MB) 语法+词典可能需要一分钟。

从我在文献中可以找到的,用于解析这种文法(Earley 或 CKY)的算法的运行时间应该与文法的大小成线性关系,并与输入标记列表的大小成三次关系。我对 NLTK 的经验表明,歧义对性能的影响最大,而不是语法的绝对大小。

所以现在我正在寻找一个 CFG 解析器来替换 NLTK。我一直在考虑PLY但我不知道它是否支持 CFG 中的特征结构,这在我的情况下是必需的,而且我看到的示例似乎做了很多程序解析,而不仅仅是指定语法。谁能给我看一个既支持特征结构又使用声明性语法的 PLY 示例?

我也可以使用任何其他可以有效地完成我需要的解析器。 Python 接口(interface)是可取的,但不是绝对必要的。

最佳答案

一定要看看Pyparsing .这是我遇到的最 Pythonic 的解析实现,从纯粹的学术角度来看,这是一个很棒的设计。

我同时使用了 ANTLRJavaCC在本地大学教授翻译和编译理论。它们既好又成熟,但我不会在 Python 项目中使用它们。

也就是说,与编程语言不同,自然语言更多地关注语义而不是语法,因此您最好跳过现有解析工具的学习曲线,使用自制的(自上而下,回溯,无限前瞻)词法分析器和解析器,并花费大量时间编写代码来确定已解析但模棱两可的自然语言句子的含义。

关于python - 高效的上下文无关语法解析器,最好是 Python 友好的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4543008/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com