我正在使用 NLTK 分块,我想捕获与我的规则匹配的字符串。例如
这是我的输入
The stocks show 67% rise, last year it was 12% fall
我想捕捉
67% rise
和12% fall
POS Tagging 上面这句话显示
('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')
现在,我想提取捕获的确切字符串。所以,我想要
67% rise
和12% fall
我试过
current=[]
for word,tag in subtree.leaves():
current.append(word)
print ' '.join(current)
但我明白了
67 % rise
和12 % fall
注意%
数字之间的空格。这在逻辑上是正确的,但不是所需的输出。我想要确切的字符串,因为我想知道捕获的字符串的开始和结束索引。
我怎样才能做到这一点?