我有一个元组列表。这些元组包含一个标签和一个列表。它看起来像这样:
[('neg', ['watching', 'by', 'myself', 'tweetdebate', 'not', ...]), ('pos', ['here', 'we', 'go', 'tweetdebate', 'tweetdebate', ...])]
这个可以迭代
for label, words in labeled_words:
我怎样才能使这些单词变为小写词干?
我想循环中有这样的东西(stemmer是PorterStemmer()):
stemmer.stem(word.lower())
这不起作用:
labeled_words = [( label, [stemmer.stem(word.lower()) for words]) for label, words in labeled_words ]
谢谢你抽出时间。
这主要是一个"如何处理循环和变量"的问题。最重要的是不要试图修改你正在迭代的列表,而是建立一个新的列表。
我想这就是你想要的:
labeled_words = [('neg', ['watching', 'by', 'myself', 'tweetdebate', 'not']), ('pos', ['here', 'we', 'go', 'tweetdebate', 'tweetdebate'])]
stemmedWords = []
for label, words in labeled_words:
stemmed = []
for word in words:
stemmed.append(porter2.stem(word))
stemmedWords.append((label,stemmed))
输出看起来像:
>>> stemmedWords
[('neg', ['watch', 'by', 'myself', 'tweetdeb', 'not']), ('pos', ['here', 'we', 'go', 'tweetdeb', 'tweetdeb'])]