Python 2.7 在包含Python中JSON元素(tweets)的mongodb集合上执行情绪分析

Python 2.7 在包含Python中JSON元素(tweets)的mongodb集合上执行情绪分析,python-2.7,pymongo,textblob,Python 2.7,Pymongo,Textblob,您好,我已经创建了一个python脚本,使用tweepy将基于关键字数组的tweets流式传输到mongodb集合中,该流式传输基于数组中元素的名称,该元素通过pymongo ie进行过滤(apple tweets保存到apple集合)。这个脚本以JSON格式保存它们,现在我想对这些保存的tweet执行情绪分析 我已经阅读了一些关于这方面的教程,并决定使用TextBlob模块中内置的NaiveBayesClassifier。我已经创建了一些训练数据并将其传递到分类器(只是一个普通的文本数组,每个

您好,我已经创建了一个python脚本,使用tweepy将基于关键字数组的tweets流式传输到mongodb集合中,该流式传输基于数组中元素的名称,该元素通过pymongo ie进行过滤(apple tweets保存到apple集合)。这个脚本以JSON格式保存它们,现在我想对这些保存的tweet执行情绪分析

我已经阅读了一些关于这方面的教程,并决定使用TextBlob模块中内置的NaiveBayesClassifier。我已经创建了一些训练数据并将其传递到分类器(只是一个普通的文本数组,每个元素的末尾都有情绪),但我不确定如何将这个分类器应用到我已经保存的tweet。我认为如下所示,但这不起作用,因为它抛出了一个错误:

Traceback (most recent call last):
  File "C:/Users/Philip/PycharmProjects/FinalYearProject/TrainingClassification.py", line 25, in <module>
    cl = NaiveBayesClassifier(train)
  File "C:\Python27\lib\site-packages\textblob\classifiers.py", line 192, in __init__
    self.train_features = [(self.extract_features(d), c) for d, c in self.train_set]
ValueError: too many values to unpack
任何帮助都将不胜感激。

引用

分类:对文本字符串进行分类

但是,您将传递一个集合
db.Apple
是一个集合,而不是字符串文本

appleSentiment = cl.classify(db.Apple)
                              ^
您需要编写一个查询,并使用查询结果作为参数进行分类
例如,查找任何特定推文都可以使用。欲了解更多信息,请访问您的朋友。

以下是使用TextBlob和PyMongo进行情绪分析的方法:

from textblob import TextBlob
import re

def clean_tweet(tweet):
    return ' '.join(re.sub("(@[A-Za-z0-9]+)|([^0-9A-Za-z \t]) | (\w +:\ / \ / \S +)", " ", tweet).split())


def tweet_sentiment(tweet):
    tweet_analysis = TextBlob(clean_tweet(tweet))
    if tweet_analysis.polarity > 0:
        return 'positive'
    elif tweet_analysis.polarity == 0:
        return 'neutral'
    else:
        return 'positive'

for tweet in tweets:
    print(tweet_sentiment(tweet['text']), " sentiment for the tweet: ", tweet['text'])
from textblob import TextBlob
import re

def clean_tweet(tweet):
    return ' '.join(re.sub("(@[A-Za-z0-9]+)|([^0-9A-Za-z \t]) | (\w +:\ / \ / \S +)", " ", tweet).split())


def tweet_sentiment(tweet):
    tweet_analysis = TextBlob(clean_tweet(tweet))
    if tweet_analysis.polarity > 0:
        return 'positive'
    elif tweet_analysis.polarity == 0:
        return 'neutral'
    else:
        return 'positive'

for tweet in tweets:
    print(tweet_sentiment(tweet['text']), " sentiment for the tweet: ", tweet['text'])