我的语法类似于:
S -> 'My' 'age' 'is' NUM
NUM -> '18', '20'
我使用这种语法构建的解析器可以解析像My age is 18
这样的句子,但如果我的实际句子类似于My age is 20>
- 其中20>
意味着超过20 - 则失败。< / p>
所以我问:有没有办法强制解析器接受终端符号的部分匹配?
提前致谢!
P.S。我是一个ntlk
的菜鸟,所以也许我会以最坏的方式接近这个问题。任何提示都会非常感激。
答案 0 :(得分:2)
nltk的CFG是一个教学工具,而不是一个严肃的NLP框架。它不支持任何类型的开放词汇项目(这将不可避免地导致未知单词,包括未知数字)。您最好的选择是预处理您的输入,例如用您的语法识别的固定数字(或#NUM#
之类的符号)替换所有数字。然后,如果您需要原始数字,则可以对解析器结果进行后处理并将其重新放入。