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 に答える