我有一个涉及标点符号的上下文无关语法 (CFG)。例如 nltk.parse_cfg("""PP-CLR -> IN `` NP-TTL""")
`` 是有效的 Penn Treebank POS 标签。但是nltk无法识别。事实上,nltk.parse_cfg 无法识别字母数字和破折号以外的任何字符。而 Penn Treebank POS 标签有几个标点符号,例如 $ # : 。 (
那么,我应该在我的数据集中保留标点符号吗?或者有没有办法解析这些字符?
谢谢
请您参考如下方法:
您可能需要专门将它们指定为终端注释,例如:
>>> 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 .)))
