私はnlpプロジェクトに取り組んでいます。依存関係ツリー内の位置に応じて単語をフィルタ処理したいと思います。例文についてnltkツリーから単語の深さを取得
def to_nltk_tree(node):
if node.n_lefts + node.n_rights > 0:
return Tree(node.orth_, [to_nltk_tree(child) for child in node.children])
else:
return node.orth_
:私はこのpostからのコードを使用していますツリープロットに
「世界中の人々のグループが突然精神的にリンクされています」私はこの木を持っています:
、私はチャイルズを持っていない言葉に興味がないんだけど、このケースでは[(linked,1),(are,2),(suddenly,2),(mentally,2),(group,2),(A,3),(of,3),(people,4)....]
:私は手に入れたいものをこのツリーから
は、ツリー内の単語とそれに対応する深さを持つタプルのリストです:私はこれまでにできることは、子供がいる単語のリストだけを取得することです。このコードを使用しています。
def get_words(root,words):
children = list(root.children)
for child in children:
if list(child.children):
words.append(child)
get_words(child,words)
return list(set(words)
[to_nltk_tree(sent.root).pretty_print() for sent in doc.sents]
s_root = list(doc.sents)[0].root
words = []
words.append(s_root)
words = get_words(s_root,words)
words
[around, linked, world, of, people, group]
これで、単語とそれぞれの深さで希望のタプルを得る方法はありますか?
私はspaCyから依存ツリーをプロットするためにnltkを使用しています。なぜなら、それは "children"メソッドを持っているからです。 http://stackoverflow.com/questions/36610179/how-to-get-the-dependency-tree-with-spacy –