4

Python NLTK を使用して、Twitter データのセンチメント分析を行っています。+ve と -ve の単語の極性を含む辞書が必要です。私はセンチワードネットに関して非常に多くのことを読みましたが、プロジェクトに使用しているとき、効率的で迅速な結果が得られません. 使い方が間違っていると思います。正しい使い方を誰か教えてください。これまでに行った手順は次のとおりです。

  1. ツイートのトークン化
  2. トークンのPOSタグ付け
  3. 各タグをセンチネットに渡す

トークン化とタグ付けに nltk パッケージを使用しています。以下の私のコードの一部を参照してください。

import nltk
from nltk.stem import *
from nltk.corpus import sentiwordnet as swn

tokens=nltk.word_tokenize(row) #for tokenization, row is line of a file in which tweets are saved.
tagged=nltk.pos_tag(tokens) #for POSTagging

for i in range(0,len(tagged)):
     if 'NN' in tagged[i][1] and len(swn.senti_synsets(tagged[i][0],'n'))>0:
            pscore+=(list(swn.senti_synsets(tagged[i][0],'n'))[0]).pos_score() #positive score of a word
            nscore+=(list(swn.senti_synsets(tagged[i][0],'n'))[0]).neg_score()  #negative score of a word
    elif 'VB' in tagged[i][1] and len(swn.senti_synsets(tagged[i][0],'v'))>0:
           pscore+=(list(swn.senti_synsets(tagged[i][0],'v'))[0]).pos_score()
           nscore+=(list(swn.senti_synsets(tagged[i][0],'v'))[0]).neg_score()
    elif 'JJ' in tagged[i][1] and len(swn.senti_synsets(tagged[i][0],'a'))>0:
           pscore+=(list(swn.senti_synsets(tagged[i][0],'a'))[0]).pos_score()
           nscore+=(list(swn.senti_synsets(tagged[i][0],'a'))[0]).neg_score()
    elif 'RB' in tagged[i][1] and len(swn.senti_synsets(tagged[i][0],'r'))>0:
           pscore+=(list(swn.senti_synsets(tagged[i][0],'r'))[0]).pos_score()
           nscore+=(list(swn.senti_synsets(tagged[i][0],'r'))[0]).neg_score()

最後に、ポジティブなツイートとネガティブなツイートの数を計算します。どこが間違っていますか?どのように使用すればよいですか?使いやすい似たような辞書は他にありませんか?

4

2 に答える 2