以下のコードを使用して、既にタグ付けされ、トークン化された RSS フィードをチャンクしています。「print subtree.leaves()」は出力しています:
[('Prime', 'NNP'), ('Minister', 'NNP'), ('Stephen', 'NNP'), ('Harper', 'NNP')] [('US', 'NNP' ), ('President', 'NNP'), ('Barack', 'NNP'), ('Obama', 'NNP')] [('what\', 'NNP')] [('Keystone', 'NNP'), ('XL', 'NNP')] [('CBC', 'NNP'), ('ニュース', 'NNP')]
これはpythonリストのように見えますが、直接アクセスする方法や反復する方法がわかりません。サブツリー出力だと思います。
このサブツリーを、操作可能なリストに変換できるようにしたいと考えています。これを行う簡単な方法はありますか?Python でツリーに遭遇したのはこれが初めてで、道に迷っています。私はこのリストで終わりたい:
docs = ["首相スティーブン ハーパー"、"米国大統領バラク オバマ"、"何\"、"キーストーン XL"、"CBC ニュース"]
これを実現する簡単な方法はありますか?
いつも助けてくれてありがとう!
grammar = r""" Proper: {<NNP>+} """
cp = nltk.RegexpParser(grammar)
result = cp.parse(posDocuments)
nounPhraseDocs.append(result)
for subtree in result.subtrees(filter=lambda t: t.node == 'Proper'):
# print the noun phrase as a list of part-of-speech tagged words
print subtree.leaves()
print" "