хранить значения из цикла в списке списков или в списке кортежей - PullRequest
0 голосов
/ 29 июня 2018

есть!

Я пытаюсь вывести все возможные части речи (pos) каждого слова в тексте. Однако мне нужно распечатать вывод как «список списков» или «список кортежей» для дальнейшего использования.

Любой может помочь, большое спасибо!

import nltk
from nltk.tokenize import word_tokenize

text = "I can answer those question ."     # original text
tokenized_text = word_tokenize(text)       # word tokenization
wsj = nltk.corpus.treebank.tagged_words()  
cfd1 = nltk.ConditionalFreqDist(wsj)       # find all possible pos of each word

i = 0
while i< len(tokenized_text):
    pos_only = list(cfd1[tokenized_text[i]])
    y = pos_only
    print(y)
    i+=1

мой вывод

['NNP', 'PRP']
['MD', 'NN']
['NN', 'VB']
['DT']
['NN', 'VBP', 'VB']
['.']

мой ожидаемый результат -

[['NNP', 'PRP'], ['MD', 'NN'], ['NN', 'VB'], ['DT'], ['NN', 'VBP', 'VB'], ['.']]

или

[('NNP', 'PRP'), ('MD', 'NN'), ('NN', 'VB'), ('DT'), ('NN', 'VBP', 'VB'), ('.')]

1 Ответ

0 голосов
/ 29 июня 2018

Я думаю, вам нужно будет создать пустой список и добавить элементы во время итерации. Я предположил, print(y) выводит ['NNP', 'PRP'] и т. Д. Затем вы должны преобразовать y в кортеж и добавить его в список во время итерации. Этот кусок кода должен сделать это.

alist = []
i = 0
while i < len(tokenized_text):
    pos_only = list(cfd1[tokenized_text[i]])
    y = pos_only
    alist.append(tuple(y))
    i += 1
print(alist)
...