什么是使用Python的准确的Twitter情感分析解决方案?

问题描述 投票:0回答:1

我有一个2万个tweets的CSV文件,其中包含所有信息,例如位置,用户名和日期,我想通过Python为每个tweet分配一个标签正/中/负。我将以下textblob库中的Python代码用于Tweets Sentiment Analysis

import csv
from textblob import TextBlob
import sys

# Do some version specific stuff
if sys.version[0] == '3':
    from importlib import reload
    sntTweets = csv.writer(open("sentimentTweets.csv", "w", newline=''))

if sys.version[0] == '2':
    reload(sys)
    sys.setdefaultencoding("utf-8")
    sntTweets = csv.writer(open("sentimentTweets.csv", "w"))

alltweets = csv.reader(open("Corona.csv", 'r'))

for row in alltweets:
    blob = TextBlob(row[2])
    print (blob.sentiment.polarity)
    if blob.sentiment.polarity > 0:
        sntTweets.writerow([row[0], row[1], row[2], row[3], blob.sentiment.polarity, "positive"])
    elif blob.sentiment.polarity < 0:
        sntTweets.writerow([row[0], row[1], row[2], row[3], blob.sentiment.polarity, "negative"])
    elif blob.sentiment.polarity == 0.0:
        sntTweets.writerow([row[0], row[1], row[2], row[3], blob.sentiment.polarity, "neutral"])

此代码运行完美,并生成了sentimentTweets.csv文件。我喜欢这样的想法:对于每个推文,它都给我两个标签:-1和1之间的数字,并且还将推文分类为负面/中性/正面。

但不准确。例如,对于以下推文,它将分配正数,编号为:0.285714285714285。“ RT @eliyudin:“我会带电晕...拿着病毒!!-爸爸现在在佛罗里达某处度假”]但是如您所知,上述推文的情绪应该是负面的。如何使它准确?以及如何找到输出的准确性?

python machine-learning deep-learning nlp sentiment-analysis
1个回答
0
投票

TextBlob根据输入的单词和块的极性(此处为代码:https://github.com/sloria/TextBlob/blob/e6cd9791ae42e37b5a2132676f9ca69340e8d8c0/textblob/_text.py#L854)来估计极性。这种方法很容易与诸如Tweets之类的嘈杂文本混淆。这很难改善,因为它取决于基础语言资源的质量。

我建议使用完全机器学习的模型,例如Flair:

import flair
flair_sentiment = flair.models.TextClassifier.load('en-sentiment')
s = flair.data.Sentence(sentence)
flair_sentiment.predict(s)
total_sentiment = s.labels

在FastText中训练模型也应该很容易:https://github.com/charlesmalafosse/FastText-sentiment-analysis-for-tweets

© www.soinside.com 2019 - 2024. All rights reserved.