#python #list #for-loop #nested-lists #stemming
#питон #Список #для-петли #вложенные списки #вытекающий
Вопрос:
У меня есть список Python с несколькими вложенными списками, содержащими токены в качестве tokens
. Я хочу поместить в него токены, чтобы результат был таким stemmed_expected
.
tokens = [['cooked', 'lovely','baked'],['hotel', 'going','liked'],['room','looking']] stemmed_expected: [['cook', 'love','bake'],['hotel', 'go','like'],['room','look']]
Цикл for, который я попробовал, выглядит следующим образом:
from nltk.stem import PorterStemmer ps = PorterStemmer() stemmed_actual = [] for m in tokens: for word in m: word = ps.stem(word) stemmed_actual.append(word)
Но вывод этого цикла for таков:
stemmed_actual = ['cook', 'love', 'bake', 'hotel', 'go', 'like', 'room', 'look']
Как я могу изменить цикл for, чтобы получить исходные слова в вложенных списках в том виде, в каком они есть stemmed_expected
?
Ответ №1:
Вы можете использовать понимание вложенных списков:
from nltk.stem import PorterStemmer tokens = [['cooked', 'lovely','baked'],['hotel', 'going','liked'],['room','looking']] ps = PorterStemmer() stemmed = [[ps.stem(word) for word in sublst] for sublst in tokens] print(stemmed) # [['cook', 'love', 'bake'], ['hotel', 'go', 'like'], ['room', 'look']]