将 nltk.tree.Tree 的结果保存到 Python 中的列表
Save result from nltk.tree.Tree to list in Python
我有一个问题,我想将 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
有没有我可以做的解决方法或者我应该如何解决这个问题?如果有我没有提供的信息,请告诉我,以便我可以更正我的问题。
反正我的英语不好所以请理解。
谢谢你。 ^-^
先生,您可以这样做,但是计算不是最好的
list_test = []
for result in range(len(parsing)) :
temp_list1 = []
temp_list1.append(parsing[0].label())
for item in parsing[result]:
temp_list2 = []
for words in item:
temp_list3 = []
temp_list3.append(words.label())
temp_list4 = []
for word in words:
temp_list4.append((word.label(),word[0]))
temp_list3.append(temp_list4)
temp_list2.append(item.label())
temp_list2.append(temp_list3)
temp_list1.append(temp_list2)
list_test.append(temp_list1)
for result in list_test :
print(result)
print("\n")
你会得到这样的东西:
['S', ['SUB', ['FNOM', [('NND', 'seorang'), ('NP', 'mahasiswa')]]], ['PRE', ['FVERB', [('MD', 'boleh'), ('VB', 'meminjam')]]], ['OBJ', ['FNOM', [('CD', 'beberapa'), ('NP', 'buku')]]]]
我有一个问题,我想将 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
有没有我可以做的解决方法或者我应该如何解决这个问题?如果有我没有提供的信息,请告诉我,以便我可以更正我的问题。
反正我的英语不好所以请理解。
谢谢你。 ^-^
先生,您可以这样做,但是计算不是最好的
list_test = []
for result in range(len(parsing)) :
temp_list1 = []
temp_list1.append(parsing[0].label())
for item in parsing[result]:
temp_list2 = []
for words in item:
temp_list3 = []
temp_list3.append(words.label())
temp_list4 = []
for word in words:
temp_list4.append((word.label(),word[0]))
temp_list3.append(temp_list4)
temp_list2.append(item.label())
temp_list2.append(temp_list3)
temp_list1.append(temp_list2)
list_test.append(temp_list1)
for result in list_test :
print(result)
print("\n")
你会得到这样的东西:
['S', ['SUB', ['FNOM', [('NND', 'seorang'), ('NP', 'mahasiswa')]]], ['PRE', ['FVERB', [('MD', 'boleh'), ('VB', 'meminjam')]]], ['OBJ', ['FNOM', [('CD', 'beberapa'), ('NP', 'buku')]]]]