3

Python の NLTK モジュールを使用して選択したツイートに対して感情分析を実行する NLP の最初のショットを試みています。私はこのチュートリアルに従い、 Sentiment140 ツイート コーパスをトレーニング データ セットとしてダウンロードしました。

私のコードはここにあります。これは iPython Notebook の Python 2 で行われていることに注意してください。

質問パート 1 トレーニング セットから 10,000 行を使用してコードをテストし、160 万行すべてをフィードする前に動作するかどうかを確認しています。コードを実行すると、96 行目で None が返されます。

print classifier.show_most_informative_features(32)
Most Informative Features
None

ただし、チュートリアルでは、次のようなものが表示される必要があることを示唆しています。

Most Informative Features
contains(not) = False          positi : negati =      1.6 : 1.0
contains(tired) = False          positi : negati =      1.2 : 1.0
contains(excited) = False          negati : positi =      1.2 : 1.0
contains(great) = False          negati : positi =      1.2 : 1.0
contains(looking) = False          positi : negati =      1.2 : 1.0
contains(like) = False          positi : negati =      1.2 : 1.0
contains(love) = False          negati : positi =      1.2 : 1.0
contains(amazing) = False          negati : positi =      1.2 : 1.0
contains(enemy) = False          positi : negati =      1.2 : 1.0
contains(about) = False          negati : positi =      1.2 : 1.0
contains(best) = False          negati : positi =      1.2 : 1.0
contains(forward) = False          positi : negati =      1.2 : 1.0
contains(friend) = False          negati : positi =      1.2 : 1.0
contains(horrible) = False          positi : negati =      1.2 : 1.0

分類子が機能しているかどうかを示す指標として 96 行を使用しています。私がすでに試した修正に関しては、87行目が次のようになることを示唆するチュートリアルのコメントを見ました。

training_set = nltk.classify.util.apply_features(extract_features, tweets)

現在のものの代わりに:

training_set = nltk.classify.apply_features(extract_features, tweets)

これらのバリエーションの両方を試しました。

1.6m 行のデータセット全体を実行して分類器をトレーニングする前に、これを解決したいと思います。

ノートブックのすべてのインポート ステートメントを次に示します (一部のインポート ステートメントは、ノートブックの他の領域で使用されます)。

import pandas as pd
import numpy as np
import matplotlib
from matplotlib import pyplot as plt
from mpl_toolkits.basemap import Basemap
from pandas.tseries.resample import TimeGrouper
from pandas.tseries.offsets import DateOffset
import nltk
from nltk.corpus import stopwords
from nltk import FreqDist
from nltk.classify import NaiveBayesClassifier
from nltk.corpus import subjectivity
from nltk.sentiment import SentimentAnalyzer
import nltk.sentiment.util
import csv
import re
import networkx as nx
import time
%matplotlib inline
%pylab inline

質問パート 2 このコードを微調整して、極性スコア自体を返すにはどうすればよいですか。何かのようなもの:

compound: -0.6759, neg: 0.41, neu: 0.59, pos: 0.0

この NLTK ページに基づいて、.polarity_socres() メソッドを呼び出すように見えますが、コードのどこでそれを行うかはわかりません。上記を返すコードは次のとおりです。

sid = SentimentIntensityAnalyzer()
for sentence in sentences:
    print(sentence)
    ss = sid.polarity_scores(sentence)
    for k in sorted(ss):
        print('{0}: {1}, '.format(k, ss[k]), end='')
4

0 に答える 0