这是python代码。
import spacy
from nltk import Tree
en_nlp = spacy.load('en')
doc = en_nlp(u"Photos under low lighting are poor, both front and back cameras.")
def tok_format(tok):
return "_".join([tok.orth_, tok.tag_])
def to_nltk_tree(node):
if node.n_lefts + node.n_rights > 0:
return Tree(tok_format(node), [to_nltk_tree(child) for child in node.children])
else:
return tok_format(node)
[to_nltk_tree(sent.root).pretty_print() for sent in doc.sents]
output
看起来像这样:
are_VBP
_________________|___________________
| | | Photos_NNS |
| | | | |
| | | under_IN cameras_NNS
| | | | |
| | | lighting_NN front_NN
| | | | _________|_________
poor_JJ ,_, ._. low_JJ both_CC and_CC back_NN
现在,我想要的东西,
[(Photos,poor),(lighting,low)]
as(名词,形容词)来自这棵树。
答案 0 :(得分:0)
这是在spacy中提供的。
令牌中的解析信息将具有dep(字符串)和dep_(数字)属性,您可以使用这些属性来确定名词使用的形容词。
使用令牌的pos
属性可以获得特定令牌是名词的信息。
>>> import spacy
>>> nlp = spacy.load('en')
>>> parsed = nlp(u"Photos under low lighting are poor, both front and back cameras.")
>>> print(u'sentence:{0}'.format(parsed.text))
sentence:Photos under low lighting are poor, both front and back cameras.
>>> print(u'parsed_sentence_children::{0}'.format([(x.text,x.pos_,x.dep_,[(x.text,x.dep_) for x in list(x.children)]) for x in parsed]))
parsed_sentence_children::[(u'Photos', u'NOUN', u'nsubj', [(u'under', u'prep')]), (u'under', u'ADP', u'prep', [(u'lighting', u'pobj')]), (u'low', u'ADJ', u'amod', []), (u'lighting', u'NOUN', u'pobj', [(u'low', u'amod')]), (u'are', u'VERB', u'ROOT', [(u'Photos', u'nsubj'), (u'cameras', u'attr'), (u'.', u'punct')]), (u'poor', u'ADJ', u'amod', []), (u',', u'PUNCT', u'punct', []), (u'both', u'DET', u'preconj', []), (u'front', u'ADJ', u'amod', [(u'both', u'preconj'), (u'and', u'cc'), (u'back', u'conj')]), (u'and', u'CCONJ', u'cc', []), (u'back', u'ADJ', u'conj', []), (u'cameras', u'NOUN', u'attr', [(u'poor', u'amod'), (u',', u'punct'), (u'front', u'amod')]), (u'.', u'PUNCT', u'punct', [])]
>>> print(u'parsed_sentence_ancestors::{0}'.format([(x.text,x.pos_,x.dep_,[(x.text,x.dep_) for x in list(x.ancestors)]) for x in parsed]))
parsed_sentence_ancestors::[(u'Photos', u'NOUN', u'nsubj', [(u'are', u'ROOT')]), (u'under', u'ADP', u'prep', [(u'Photos', u'nsubj'), (u'are', u'ROOT')]), (u'low', u'ADJ', u'amod', [(u'lighting', u'pobj'), (u'under', u'prep'), (u'Photos', u'nsubj'), (u'are', u'ROOT')]), (u'lighting', u'NOUN', u'pobj', [(u'under', u'prep'), (u'Photos', u'nsubj'), (u'are', u'ROOT')]), (u'are', u'VERB', u'ROOT', []), (u'poor', u'ADJ', u'amod', [(u'cameras', u'attr'), (u'are', u'ROOT')]), (u',', u'PUNCT', u'punct', [(u'cameras', u'attr'), (u'are', u'ROOT')]), (u'both', u'DET', u'preconj', [(u'front', u'amod'), (u'cameras', u'attr'), (u'are', u'ROOT')]), (u'front', u'ADJ', u'amod', [(u'cameras', u'attr'), (u'are', u'ROOT')]), (u'and', u'CCONJ', u'cc', [(u'front', u'amod'), (u'cameras', u'attr'), (u'are', u'ROOT')]), (u'back', u'ADJ', u'conj', [(u'front', u'amod'), (u'cameras', u'attr'), (u'are', u'ROOT')]), (u'cameras', u'NOUN', u'attr', [(u'are', u'ROOT')]), (u'.', u'PUNCT', u'punct', [(u'are', u'ROOT')])]