我有一个涉及标点符号的无上下文语法(CFG)。例如 nltk.parse_cfg(“”“PP-CLR - > IN`'NP-TTL”“”)
``是一个有效的Penn Treebank POS标签。但是nltk无法识别它。实际上,nltk.parse_cfg无法识别除字母数字和短划线之外的任何字符。虽然Penn Treebank POS标签有几个标点符号,例如$#:. (
然后,我应该在我的数据集中保留标点符号吗?或者无论如何要解析这些角色?
由于
答案 0 :(得分:1)
您可能需要特别指定它们作为终端备注,例如:
>>> import nltk
>>> grammar = nltk.parse_cfg("""
... S -> NP VP
... VP -> V PUNCT
... PUNCT -> '.'
... V -> 'eat'
... NP -> 'I'
... """)
>>>
>>> sentence = "I eat .".split()
>>> cp = nltk.ChartParser(grammar)
>>> for tree in cp.nbest_parse(sentence):
... print tree
...
(S (NP I) (VP (V eat) (PUNCT .)))