Python - НЛП-код не работает должным образом
Я воссоздаю учебное пособие SentDex по НЛП, где он опробует TextBlob и Vader на наборе данных с обзорами фильмов. Используя приведенный ниже код (см. Ссылку для полного кода), SentDex достигает точности 80,6% при положительных отзывах и 91,7% при отрицательных (3921 против 2747 образцов соответственно):
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
analyzer = SentimentIntensityAnalyzer()
with open("positive.txt","r") as f:
for line in f.read().split('\n'):
vs = analyzer.polarity_scores(line)
if not vs['neg'] > 0.1:
if vs['pos']-vs['neg'] > 0:
pos_correct += 1
pos_count +=1
# Repeat for negative
Мой подход сначала загружает данные в df(unlabeled_reviews), затем пытается заново создать приведенный выше код. Однако, когда я запускаю свой код, я получаю только 48,0% точности для отрицательного и 83,4% для положительного, что сильно отличается от результатов, достигнутых SentDex. Может кто-нибудь объяснить мне, как следующий код дает результаты, отличные от того, что делает код SentDex?:
for lines in unlabeled_reviews['review']:
pol_score = analyzer.polarity_scores(lines)
pol_score['review'] = lines
results.append(pol_score)
results = pd.DataFrame(results)
results = results[['review', 'compound', 'pos', 'neu', 'neg']]
positive_results = results.copy()
positive_results = positive_results[positive_results['neg'] < 0.1]
positive_results['score'] = positive_results['pos'] - positive_results['neg']
positive_results = positive_results[positive_results['score'] > 0.0]
positive_results['class'] = 'positive'
# Repeat for negative
Пожалуйста, найдите мой полный скрипт вместе с используемыми данными в моем хранилище Github.