2013-09-24 61 views
2

我有一個涉及標點符號的上下文無關語法(CFG)。例如 nltk.parse_cfg(「」「PP-CLR - > IN」NP-TTL「」「)如何解析Context Free Grammar中的特殊字符?

這個``是一個有效的Penn Treebank POS標籤。但是nltk無法識別它。事實上,nltk.parse_cfg無法識別除字母數字和短劃線以外的任何字符。 Penn Treebank POS標籤有幾個標點符號,例如$#:。 (

然後,我應該保持標點符號在我的數據集或反正是有解析這些字符

感謝

回答

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 .)))