主要内容

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

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

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

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

连接到啁啾

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

消费主义=“abcdefghijklmnop123456789”;consumersecret =“qrstuvwxyz123456789”;访问令牌=“123456789 abcdefghijklmnop”;秘密=“123456789QRSTUVXYZ”;c=twitter(consumerkey、ConsumerCret、accesstoken、accesstokensecret);

检查Twitter连接。如果状态描述属性的值为好吧,则连接成功。

c.StatusCode
ans =好

检索的最新消息

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

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

身份以100个结构的单元格数组形式包含推文数据。每个结构包含一个推文文本字段,其余字段包含关于推文的其他信息。

搜索并检索自上一个请求之后发生的下100个tweet。

sRefresh=搜索(c、tweetquery、,“数”,100,...“since_id”,s.Body.Data.search\u metadata.max\u id\u str);statuses=[statuses;sRefresh.Body.Data.statuses];

身份除了之前的100条推文外,还包含最近的100条推文。

检索所有可用的tweet

方法检索有关金融服务行业的所有可用Tweets循环。使用伊斯菲尔德功能和结构领域next_results

isfield(s.Body.Data.search\u元数据,“next_results”)将结果转换为字符串nextresults=字符串(s.Body.Data.search\u metadata.next\u results);%提取最大Tweet标识符max_id=extractBetween(下一个结果,“max_id=”,"&");%将最大Tweet标识符转换为字符向量cmax_id=char(max_id);%搜索推文s=搜索(c、tweetquery、,“数”,100,“max_id”, cmax_id);%检索每个Tweet的Tweet文本statuses=[statuses;s.Body.Data.statuses];结束

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

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

tweetTimes包含每个Tweet的创建时间。推特文本包含每个Tweet的文本。

制定时间表推特通过使用每条Tweet的文本和创建时间查询所有Tweet。

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

在推特上进行情绪分析

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

关键词={“快乐”,“伟大的”,‘好’,...“快”,“优化”,“很好”,“有趣”,“神奇的”,“顶级”,“奖励”,...“获胜者”,“胜利”,“酷”,“谢谢”,“有用的”};

关键词是一个字符向量的单元格数组。每个字符向量都是一个表示积极情绪的单词。

在每条微博中搜索积极情绪词汇。确定包含积极情绪的tweet的总数。在积极推文总数中,确定总转发数。

%确定tweet的总数numTweets=高度(tweets);%确定积极的推文numPosTweets=0;numPosRTs=0;对于我= 1:numTweets%比较推特和积极情绪词汇表dJobs =包含(tweets.tweetTexts {}, poskeywords,“无知案例”,对);如果dJobs%包含积极情绪的推文总数增加1numPosTweets=numPosTweets+1;%确定正面推文是否为转发RTs = strncmp (“RT @”,tweets.tweets文本{i},4);如果即时战略%积极转发总数增加1numPosRTs=numPosRTs+1;结束结束结束

小糖果包含有正面情绪的推文总数。

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

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

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

负关键字是一个字符向量的单元格数组。每个字符向量都是一个表示负面情绪的单词。

在每条推文中搜索负面情绪词汇。确定包含负面情绪的tweet的总数。在消极推文总数中,确定retweet的总数。

%确定负面推文numNegTweets = 0;numNegRTs = 0;对于我= 1:numTweets%将Tweet与负面情绪词汇进行比较dJobs =包含(tweets.tweetTexts {}, negkeywords,“无知案例”,对);如果dJobs%将负面情绪推文总数增加1numNegTweets = numNegTweets + 1;%确定负面推文是否为转发RTs = strncmp (“RT @”,tweets.tweets文本{i},4);如果numNegRTs = numNegRTs + 1;结束结束结束

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

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

显示情感分析结果

创建包含以下列的表:

  • 的微博

  • 有积极情绪的推文数量

  • 正面转发数

  • 负面情绪的推文数量

  • 负转发数

matlabTweetTable =表(numTweets numPosTweets、numPosRTs numNegTweets, numNegRTs,...“变化无常”, {“Number_of_Tweets”,“积极的推特”,“积极转发”,...“Negative_Tweets”,“Negative_Retweets”});

显示Tweet数据表。

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

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

另见

功能

物体

相关的话题

外部网站