1

NLTK チャンキングを使用しており、ルールに一致した文字列を取得したいと考えています。例えば

ここに私の入力があります

The stocks show 67% rise, last year it was 12% fall

キャプチャしたい

67% rise12% fall

上記の文が示すPOSタグ付け

('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% rise12% fall

私は試した

current=[]
for word,tag in subtree.leaves():
    current.append(word)
print ' '.join(current)

しかし、私は得る

67 % rise12 % fall

%と数字の間のスペースに注意してください。これは論理的には正しいですが、目的の出力ではありません。キャプチャされた文字列の開始インデックスと終了インデックスを知りたいので、正確な文字列が必要です。

どうすればこれを達成できますか?

4

1 に答える 1