Skip to main content
 首页 » 编程设计

python之如何解析上下文无关语法中的特殊字符

2025年05月04日15dyllove98

我有一个涉及标点符号的上下文无关语法 (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 .)))