【发布时间】:2021-06-22 03:26:19
【问题描述】:
我有一个问题,我想将 nltk.tree.Tree 类型的结果保存到列表中。这是我的解析结果代码:
for result in range(len(parsing)):
print(parsing[result])
Tree.fromstring(str(parsing[result])).pretty_print()
>>>
(S
(SUB (FNOM (NND seorang) (NP mahasiswa)))
(PRE (FVERB (MD boleh) (VB meminjam)))
(OBJ (FNOM (CD beberapa) (NP buku))))
S
_______________|____________________________
SUB PRE OBJ
| | |
FNOM FVERB FNOM
_____|_______ _____|______ ______|____
NND NP MD VB CD NP
| | | | | |
seorang mahasiswa boleh meminjam beberapa buku
我期望的是,树形式的结果可以像这样以列表的形式存储:
['S', ['SUB', ['FNOM', [('NND', 'seorang'), ('NP', 'mahasiswa')]]], ['PRE', ['FVERB', [('MD', 'boleh'), ('VB', 'meminjam')]]], ['OBJ', ['FNOM', [('CD', 'beberapa'), ('NP', 'buku')]]]]
或类似列表形式的输出。 有关其他信息,以下是变量“解析”结果的输出类型:
print(type(parsing[0]))
>>>
<class 'nltk.tree.Tree'>
我之所以要更改为“列表”的问题是因为我无法从“S”、“SUB”、“PRE”、“OBJ”、“FNOM”等树中检索结果。所有我可以从树中取出列表中的单词。这是一个例子:
print(str(parsing[0]) + '\n')
print(str(parsing[0][0]) + '\n')
print(str(parsing[0][0][0]) + '\n')
print(str(parsing[0][0][0][0]) + '\n')
print(str(parsing[0][0][0][0][0]) + '\n')
>>>
(S
(SUB (FNOM (NND seorang) (NP mahasiswa)))
(PRE (FVERB (MD boleh) (VB meminjam)))
(OBJ (FNOM (CD beberapa) (NP buku)))) #How to get "S"
(SUB (FNOM (NND seorang) (NP mahasiswa))) #How to get "SUB"
(FNOM (NND seorang) (NP mahasiswa)) #How to get "FNOM"
(NND seorang) #How to get "NND"
seorang #Showing word but not tag
我有什么解决方法或者我应该如何解决这个问题?如果有我没有提供的信息,请告诉我,以便我更正我的问题。
反正我的英语不好,所以请理解。
谢谢你。 ^-^
【问题讨论】: