我正在重新创建SentDex的NLP tutorial,在那里他在一个带有标签的电影评论数据集上试用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)中,然后尝试重新创建以上代码。但是,当我运行代码时,与SentDex相比,负数的准确度仅为48.0%,正数的准确度为83.4%。有人可以向我解释以下代码如何与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 repository中找到我的完整脚本以及使用的数据。