主要内容

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

这个例子展示了如何搜索和检索过去7天内所有可用的Tweets,并将它们导入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条tweet之外的最新100条tweet。

检索所有可用的tweet

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

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

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

如果iscell(状态)%非结构化数据numTweets =长度(状态);%确定推文总数tweetTimes =细胞(numTweets, 1);%为Tweet时间和Tweet文本分配空间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的文本和创建时间查询所有Tweet。

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

对Tweets进行情感分析

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

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

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

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

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

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

numPosRTs包含正面情绪转发的总次数。

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

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

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

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

%确定负面推文numNegTweets = 0;numNegRTs = 0;我= 1:numTweets%将Tweet与负面情绪词汇进行比较dJobs =包含(tweets.tweetTexts {}, negkeywords,“IgnoreCase”,真正的);如果dJobs%负面情绪推文总数增加1numNegTweets = numNegTweets + 1;%确定负面推文是否为转发RTs = strncmp (“RT @”我,tweets.tweetTexts {}, 4);如果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天里,有关金融服务业的1.1465万条推文中,有688条是正面情绪,201条是负面情绪。在积极的推文中,有238条是转发。在负面推文中,96条是转发。

另请参阅

功能

对象

相关的话题

外部网站