主要内容

使用历史推文进行情感分析

这个例子展示了如何搜索和检索过去7天内所有可用的tweet,并将它们导入MATLAB®.导入数据后,可以进行情绪分析。这种分析使您能够从文本数据中确定主观信息,如情绪、意见或情绪反应。这个例子搜索关于金融服务行业的积极情绪和消极情绪。

要运行这个示例,您需要Twitter®凭证。要获得这些凭据,您必须首先登录您的Twitter帐户。然后,填写表格创建一个应用程序

要访问示例代码,请输入编辑TwitterExample.m在命令行。

连接到推特

使用您的凭证创建一个Twitter连接。(本例中的值并不代表真正的Twitter凭证。)

consumerkey =“abcdefghijklmnop123456789”;consumersecret =“qrstuvwxyz123456789”;accesstoken =“123456789 abcdefghijklmnop”;accesstokensecret =“123456789 qrstuvwxyz”;c = twitter (consumerkey consumersecret、accesstoken accesstokensecret);

检查Twitter连接。如果StatusCode财产有价值好吧,连接成功。

c.StatusCode
ans =好

检索的最新消息

使用Twitter连接对象搜索有关金融服务行业的最新100条tweet。使用搜索词金融服务.进口推®数据进入MATLAB工作空间。

tweetquery =“金融服务”;s =搜索(c tweetquery“数”, 100);状态= s.Body.Data.statuses;暂停(2)

状态包含Tweet数据作为一个包含100个结构的单元格数组。每个结构都包含一个用于Tweet文本的字段,其余字段包含关于Tweet的其他信息。

搜索并检索自上一个请求以来出现的下100个tweet。

sRefresh =搜索(c tweetquery“数”, 100,...“since_id”, s.Body.Data.search_metadata.max_id_str);状态=[状态;sRefresh.Body.Data.statuses];

状态包含前100条推文之外的最新100条推文。

检索所有可用的tweet

检索有关金融服务行业的所有可用tweet循环。方法检查可用数据isfield功能和结构领域next_results

isfield (s.Body.Data.search_metadata“next_results”将结果转换为字符串nextresults =字符串(s.Body.Data.search_metadata.next_results);提取最大推文标识符max_id = extractBetween (nextresults," max_id = "“&”);将最大推文标识符转换为字符向量cmax_id = char (max_id);搜索推文的百分比s =搜索(c tweetquery“数”, 100,“max_id”, cmax_id);检索每个Tweet的Tweet文本状态=[状态;s.Body.Data.statuses];结束

检索每个Tweet的创建时间和文本。通过在结构单元格数组中访问非结构化数据来检索其创建时间。对于结构化数据,通过换位结构数组中的字段来访问创建时间。

如果iscell(状态)%非结构化数据numTweets =长度(状态);确定tweet的总数tweetTimes =细胞(numTweets, 1);为推文时间和推文文本分配空间tweetTexts = tweetTimes;i = 1:numTweets tweetTimes{i} = status {i}.created_at;检索每个Tweet的创建时间tweetTexts{我}{我}=状态。text;检索每个Tweet的文本结束其他的%的结构化数据tweetTimes = {statuses.created_at} ';tweetTexts = {statuses.text} ';结束

tweetTimes包含每个Tweet的创建时间。tweetTexts包含每条Tweet的文本。

创建时间表微博使用每条Tweet的文本和创建时间。

微博=时间表(tweetTexts,“RowTimes”...datetime (tweetTimes“格式”'eee MMM dd HH:mm:ss +SSSS yyyy'));

对推文进行情感分析

创建一个与积极情绪相关的词汇表。

poskeywords = {“快乐”“伟大的”‘好’...“快”“优化”“不错”“有趣的”“神奇的”“高级”“奖”...“赢家”“赢了”“酷”“谢谢”“有用的”};

poskeywords是字符向量的单元格数组。每个字符向量都是一个词,代表积极情绪的一个实例。

在每条Tweet中搜索积极情绪词汇表中的单词。确定包含积极情绪的推文总数。从正面推文的总数中,确定转发的总数。

确定tweet的总数numTweets =身高(微博);确定积极的推文numPosTweets = 0;numPosRTs = 0;我= 1:numTweets将Tweet与积极情绪词汇表进行比较dJobs =包含(tweets.tweetTexts {}, poskeywords,“IgnoreCase”,真正的);如果dJobs增加正面情绪推文的总数numPosTweets = numPosTweets + 1;确定积极的推文是否是转发RTs = strncmp (“RT @”我,tweets.tweetTexts {}, 4);如果即时战略游戏增加正面转发的总数numPosRTs = numPosRTs + 1;结束结束结束

numPosTweets包含正面情绪的推文总数。

numPosRTs包含积极情绪的转发总数。

创建一个与负面情绪相关的词汇表。

negkeywords = {“伤心”“可怜的”“坏”“慢”“削弱”“的意思是”“无聊”...“普通”“底”“损失”“失败者”“失去”“没把握的”...“批评”“没用的”};

negkeywords是字符向量的单元格数组。每个字符向量都是一个词,代表一个负面情绪的实例。

在每条Tweet中搜索负面情绪词汇表中的单词。确定包含负面情绪的推文总数。从负面推文的总数中,确定转发的总数。

确定负面推文numNegTweets = 0;numNegRTs = 0;我= 1:numTweets将推文与负面情绪词汇表进行比较dJobs =包含(tweets.tweetTexts {}, negkeywords,“IgnoreCase”,真正的);如果dJobs增加负面情绪推文的总数numNegTweets = numNegTweets + 1;确定负面推文是否是转发。RTs = strncmp (“RT @”我,tweets.tweetTexts {}, 4);如果RTs numNegRTs = numNegRTs + 1;结束结束结束

numNegTweets包含负面情绪推文的总数。

numNegRTs包含负面情绪转发的总数。

展示情感分析结果

创建一个包含以下列的表:

  • 的微博

  • 有积极情绪的推文数量

  • 积极转发数

  • 带有负面情绪的推文数量

  • 负面转发数

matlabTweetTable =表(numTweets numPosTweets、numPosRTs numNegTweets, numNegRTs,...“VariableNames”, {“Number_of_Tweets”“Positive_Tweets”“Positive_Retweets”...“Negative_Tweets”“Negative_Retweets”});

显示推文数据表。

matlabTweetTable
matlabTweetTable = 1×5表Number_of_Tweets Positive_Tweets Positive_Retweets Negative_Tweets Negative_Retweets  ________________ _______________ _________________ _______________ _________________ 11465 688 238 201 96

在过去7天内关于金融服务行业的11465条推文中,688条推文具有正面情绪,201条推文具有负面情绪。在积极的推文中,有238条推文是转发。负面推文中,96条是转发。

另请参阅

功能

对象

相关的话题

外部网站

Baidu
map