为什么我似乎找不到如此简单的功能来达成解决方案?
一方面,我有一个结构:
[树( 'kerb_NN',[ 'Dropped_VBN',树( 'provide_VB',[ 'to_TO',树( 'access_NN',[树( 'TO_IN',[树( 'hardstanding_VBG',[ 'new_JJ' ,'“ liquid_JJ'])])))),Tree('for_IN',[Tree('vehicle_NN',['one_CD','domestic_JJ'])])]))))))))))]])
只需使用简单功能SpaCy
从to_nltk_tree
获得。句子是:({text
)下降的路缘石,以便为一辆家用汽车提供新的透气性坚硬材料。
另一方面,我使用NLTK解析了相同的句子:
words = word_tokenize(sent_tokenize(text)[0])
sent = nltk.pos_tag(words)
grammar = "NP: {<DT>?<JJ>*<NN><IN>?<NN>*}"
find = nltk.RegexpParser(grammar)
res = find.parse(sent)
因此,我得到res
,它看起来像:
Tree('S',[('Dropped','VBD'),Tree('NP',[('kerb','NN')])),('to','TO'),( 'provide','VB'),Tree('NP',[('access','NN')]),('to','TO'),Tree('NP',[('new', ''JJ'),('可渗透','JJ'),('坚硬','NN'),('for','IN')]]),('one','CD'),Tree(' NP',[('domestic','JJ'),('vehicle','NN')]))))
那两个版本是不同的,因为在NLTK中,我不得不使用一些自定义语法。 res
的类型为tree.Tree
,而SpaCy产品是列表。
我想将此列表转换为Tree,但找不到简单的示例。我找到了类似Tree.from_string
的东西,但是却找到了相反的东西,例如Tree.from_list
。
可以像树一样查看此res
对象,使用SpaCy默认语法并作为NLTK树将很有用。有什么提示吗?也许我在拍脚,要实现这一目标要简单得多?