0

我有一个元组列表。这些元组包含一个标签和一个列表。它看起来像这样:

[('neg', ['watching', 'by', 'myself', 'tweetdebate', 'not', ...]), ('pos', ['here', 'we', 'go', 'tweetdebate', 'tweetdebate', ...])]

它可以通过这个迭代

for label, words in labeled_words:

我怎样才能改变这些词以获得它们的小写词干?

我猜是这样的循环(词干分析器是 PorterStemmer() ):

stemmer.stem(word.lower())

这不起作用:

labeled_words = [( label, [stemmer.stem(word.lower()) for words]) for label, words in labeled_words ]

感谢您的时间。

4

1 回答 1

3

这主要是一个“我如何处理循环和变量”的问题。最主要的是不要尝试修改您正在迭代的列表。相反,建立一个新列表。

我认为这就是你要找的:

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'])]
于 2013-02-19T00:45:46.407 回答