解析具有部分匹配的终端符号

时间:2017-03-21 16:35:46

标签: python parsing nlp nltk grammar

我的语法类似于:

S -> 'My' 'age' 'is' NUM
NUM -> '18', '20'

我使用这种语法构建的解析器可以解析像My age is 18这样的句子,但如果我的实际句子类似于My age is 20> - 其中20>意味着超过20 - 则失败。< / p>

所以我问:有没有办法强制解析器接受终端符号的部分匹配?

提前致谢!

P.S。我是一个ntlk的菜鸟,所以也许我会以最坏的方式接近这个问题。任何提示都会非常感激。

1 个答案:

答案 0 :(得分:2)

nltk的CFG是一个教学工具,而不是一个严肃的NLP框架。它不支持任何类型的开放词汇项目(这将不可避免地导致未知单词,包括未知数字)。您最好的选择是预处理您的输入,例如用您的语法识别的固定数字(或#NUM#之类的符号)替换所有数字。然后,如果您需要原始数字,则可以对解析器结果进行后处理并将其重新放入。