如何将SpaCy列表转换为NLTK树?

时间:2019-02-01 13:16:08

标签: python nltk spacy

为什么我似乎找不到如此简单的功能来达成解决方案?

一方面,我有一个结构:

[树( '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'])])]))))))))))]])

只需使用简单功能SpaCyto_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树将很有用。有什么提示吗?也许我在拍脚,要实现这一目标要简单得多?

0 个答案:

没有答案