项目介绍
在Twitter上选择一个你感兴趣的话题,比如一部电影,一个名人,或者任何流行语。收集至少200条与此主题相关的tweet。用手动将它们标记为positive, neutral 或者negative。接下来,将他们随机分成75%的tweet作为训练集,剩下的25%作为测试集。在这些tweet上部署几个分类器来执行情绪分析。报告分类准确度、AUC,并绘制混淆矩阵。最后评估哪个分类器的性能在这里优于其他分类器。
本项目包含:
-
描述收集tweet并手动标记它们的过程以及如何表示每个tweet进行分类。
-
获得的数据集的描述。
-
对于每种分类器,描述其工作原理、分类程序和参数设置。
-
每个分类器的分类精度,AUC与混淆矩阵。
-
哪个分类器的性能比其他分类器在这里更适合?
项目开始
1
《花木兰》是最近上映的一部题材丰富的电影,在这个项目中,我们通过收集关于《花木兰》的推文进行情感分析。
为了收集我们感兴趣的数据,我们首先申请twitter开发者帐户,然后使用twitter API和Tweepy进行授权搜索。数据集通过一个简单的python程序采集,如下图。
我们收集了400多条包含“花木兰”一词的推文,并忽略了这些转发或非英语推文的语言。所有数据将保存在一个名为“result_mulan2.csv”的csv文件中。然后,我们手工标记这些推文为积极的、中性的或消极的。
积极的推文判断标准为: 赞美的话;高兴或者快乐,点赞的emoji表情;准备推荐给其他人等等。
中性的推文判断标准为:既没有积极的推文内容,也没有消极的推文的内容,有着普通的感受或者客观的分析等等。
消极的推文判断标准为: 批评的话,讽刺的话,反讽等与其他优秀电影比较的话,消极的emoji表情等等。
在手动标记的同时我们要将那些毫不相关的推文或者广告性质的删除掉。最后我们保留了248条数据。
Tweets包含很多twitter handles(@user),这是twitter用户在twitter上识别的方式。我们将从数据中删除所有这些twitter句柄,因为它们不能传递太多信息。
在一般的文本处理中,标点、数字和特殊字符不是很有帮助。在这里,我们将用空格替换除字符和标记以外的所有内容。删除所有长度为3或更短的单词。例如,像“嗯”和“哦”这样的词。因为我们收集的微博都是基于‘木兰’这个关键词,所以所有的微博都会包含‘木兰’、‘电影’、‘迪士尼’、‘迪士尼’、‘迪士尼’和‘迪士尼’这几个词,为了防止overfit,我们会删除这些词。同时删除数据集中包含“http”或“https”的所有链接。
然后,我们将标记数据集中所有已清理的tweet。
词干提取是一个基于规则的过程,从一个单词中去掉后缀(“ing”、“ly”、“es”、“s”等)。
例如,“play”、“player”、“playing”、“play”和“playing”是“play”一词的不同变体.
随机分成75%的tweet作为训练集,剩下的25%作为测试集.
我们使用word袋来构造文本特征.
使用sklearn库中的DecisionTreeClassifier来获得分数。然后我们计算精度&#x