所以我想從文本中提取一些信息,我正在使用NLTK分塊。NLTK Chunk Parser:如何轉義特殊字符
這裏是我的輸入
The stocks show 67% rise, last year it was 12% fall
我想捕捉
67% rise
和12% fall
詞性標註上面的句子表明
('The', 'DT'), ('stocks', 'NNS'), ('show', 'VBP'), ('67', 'CD'), ('%', 'NN'), ('rise', 'NN'), (',', ','), ('last', 'JJ'), ('year', 'NN'), ('it', 'PRP'), ('was', 'VBD'), ('12', 'CD'), ('%', 'NN'), ('fall', 'NN')
現在,我來了同一個簡單的規則
Stat: {<CD><NN>(<NN>+|<VBN>|JJ)?}
效果很好,並且捕獲
('67', 'CD'), ('%', 'NN'), ('rise', 'NN')
('12', 'CD'), ('%', 'NN'), ('fall', 'NN')
但在我的數據集,我有這樣的東西
5 million dollars
這是
('5', 'CD'), ('man', 'NN'), ('stock', 'NN')
並且也被錯誤地捕獲。所以我想包括我的規則
Stat: {<CD><%>(<NN>+|<VBN>|JJ)?}
的%
跡象,但是這個規則現在不匹配任何內容。我如何在我的塊規則中轉義/包含%
?
更新
所以,我不明白的是,我可以匹配其他特殊字符。舉例來說,如果我有一個規則爲
XYZ:{<:>}
這一切的:
s比輸入。因此,所有我試圖做的是
XYZ:{<%>}
,這是行不通的。我曾試圖逃脫%
通過
XYZ:{<\%>}
但這也不管用。我試過\\
但無濟於事。我真的不想修改輸入字符串,因爲一旦我匹配,我想找出匹配的字符串的索引。所以,如果我修改輸入字符串,這將甩掉我的指數,除非我先做一個逆向轉換
我認爲你不能將文本(''%),只有其標籤(奇怪的是,'NN'匹配)。如果你得到另一個POS標籤,它爲'%'提供了一個獨特的標籤,那麼你可能可以改進分塊。 – lenz
我是否可以將nltk的chunker與其他POS tagger一起使用? nltk是否有其他pos標籤可用?或者我應該去做一些像斯坦福大學的標記? – AbtPst
@lenz有沒有一種方法來指定一個規則,比如'NN與字符串%'匹配? – AbtPst