【问题标题】:Parsing terminal symbols with partial match用部分匹配解析终端符号
【发布时间】:2017-03-21 16:35:45
【问题描述】:

我的语法类似于:

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

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

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

提前致谢!

附:我是ntlk 的菜鸟,所以也许我正在以最糟糕的方式解决问题。任何提示将不胜感激。

【问题讨论】:

    标签: python parsing nlp nltk grammar


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-29
      • 2020-12-09
      相关资源
      最近更新 更多