主要内容

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

这个例子展示了如何搜索和检索过去7天内所有可用的推文,并将它们导入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
好的

检索最新推文

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

tweetquery =“金融服务”;S = search(c,tweetquery,“数”, 100);status = s. body . data .status;暂停(2)

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

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

sRefresh = search(c,tweetquery,“数”, 100,...“since_id”, s.Body.Data.search_metadata.max_id_str);srefresh . body . data . stats = [status; srefresh . body . data . stats];

状态包含最新的100条tweet和之前的100条tweet。

检索所有可用推文

检索关于金融服务行业的所有可用推文循环。方法检查可用数据isfield函数和结构字段next_results

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

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

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

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

制定时间表微博通过使用每条推文的文本和创建时间为所有推文。

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

对推文进行情感分析

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

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

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

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

确定tweet的总数numTweets = height(tweets);确定积极的推文numPosTweets = 0;numPosRTs = 0;i = 1:numTweets比较推文和积极情绪词汇表。dJobs = contains(tweets. tweetextts {i},poskeywords,“IgnoreCase”,真正的);如果dJobs增加一个正面情绪的推文总数numPosTweets = numPosTweets + 1;确定正面推文是否为转发。RTs = strncmp(“RT @”我,tweets.tweetTexts {}, 4);如果即时战略游戏将正面转发总数增加1numPosRTs = numPosRTs + 1;结束结束结束

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

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

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

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

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

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

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

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

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

显示情绪分析结果

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

  • 推文数量

  • 具有积极情绪的推文数量

  • 正面转发数

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

  • 负面转发数

matlabTweetTable = table(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条是转发。

另请参阅

功能

对象

相关的话题

外部网站