此示例显示如何在过去7天内搜索和检索所有可用的推文,并将其导入MATLAB®.导入数据后,可以进行情感分析。这种分析使您能够从文本数据中确定主观信息,如情绪、观点或情绪反应。这个例子搜索关于金融服务业的积极和消极情绪。
要运行此示例,您需要推特®证书。要获取这些凭据,您必须首先登录您的Twitter帐户。然后,填写表格创建一个应用程序.
要访问示例代码,输入编辑TwitterExample.m
在命令行。
使用凭据创建Twitter连接。(此示例中的值不表示真实的Twitter凭据。)
consumerkey ='abcdefghijklmnop123456789';consumersecret =“qrstuvwxyz123456789”;accesstoken ='123456789abcdefghijklmnop';accesstokensecret =“123456789 qrstuvwxyz”;c = twitter (consumerkey consumersecret、accesstoken accesstokensecret);
检查Twitter连接。如果是StatusCode
财产有价值行
,连接成功。
C.Statuscode.
ans =好的
使用Twitter Connection对象搜索关于金融服务业的最新推文。使用搜索词金融服务
.导入推文®数据进入MATLAB工作空间。
tweetquery =“金融服务”;s =搜索(c tweetquery'数数',100);statees = s.body.data.statuses;暂停(2)
状态
包含Tweet数据为包含100个结构的单元格数组。每个结构包含一个用于Tweet文本的字段,其余字段包含关于Tweet的其他信息。
搜索并检索自上文请求以来发生的接下来的100推文。
sRefresh =搜索(c tweetquery'数数', 100,...'自计_ID', s.Body.Data.search_metadata.max_id_str);状态=[状态;sRefresh.Body.Data.statuses];
状态
包含前100条tweet之外的最新100条tweet。
使用a检索关于金融服务行业的所有可用推文尽管
循环。检查可用的数据使用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 = ",“&”);%将最大推文标识符转换为字符向量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);%为推文时间和推文文本分配空间tweetTexts = tweetTimes;为i = 1:numtweets tweettimes {i} = statuses {i} .created_at;%检索创建每个推文的时间tweetTexts{我}{我}=状态。text;%检索每个推文的文本结束其他的%的结构化数据tweettimes = {statuses.created_at}';tweettexts = {statusees.text}';结束
Tweettimes.
包含每个推文的创建时间。tweetTexts
包含每个推文的文本。
创建时间表微博
对于所有推文的文本和创建时间,对于所有推文。
微博=时间表(tweetTexts,'rowtimes',...DateTime(Tweettimes,“格式”,'EEE MMM DD HH:MM:SS + SSSS YYYY'));
创建一个与积极情绪相关的词汇表。
poskeywords = {“快乐”,'伟大的','好的',...'快速地',“优化”,“不错”,“有趣的”,'惊人的',“高级”,“奖”,...“赢家”,“赢了”,“酷”,“谢谢”,“有用的”};
poskeywords
是字符向量的单元格数组。每个字符向量都是代表积极情绪的一个词。
在积极情绪词汇表中搜索每个推文。确定包含积极情绪的推文总数。出于积极推文的总数,确定转推的总数。
%确定推文的总数numTweets =身高(微博);%确定积极的推文numPosTweets = 0;numPosRTs = 0;为i = 1:numTweets%比较推特和积极情绪词汇djobs =包含(Tweets.tweetTexts {i},poskeywords,“IgnoreCase”,真正的);如果DJOBS.%增加了积极情绪的推文总数numPosTweets = numPosTweets + 1;%确定积极的推文是否为转发rts = strncmp('RT @'我,tweets.tweetTexts {}, 4);如果即时战略游戏%增加一个张力转扬的总数numPosRTs = numPosRTs + 1;结束结束结束
numPosTweets
包含积极情绪的推文总数。
numPosRTs
包含正面情绪转发的总次数。
创建一个与负面情绪相关的词语词汇表。
negkeywords = {'伤心',“可怜的”,'坏的','慢',“削弱”,'意思',“无聊”,...'普通的',“底”,'损失',“失败者”,'失去','undool',...'批评','无用'};
negkeywords
是字符向量的单元格数组。每个字符向量都是一个代表消极情绪实例的单词。
在负面情绪词汇表中搜索每个推文中的单词。确定包含负面情绪的推文总数。在负关节总数中,确定转推的总数。
%确定负面推文numnegtweets = 0;numnegrts = 0;为i = 1:numTweets%比较推文到负面情绪词汇表djobs =包含(Tweets.tweettexts {i},negkeywords,“IgnoreCase”,真正的);如果DJOBS.%负面情绪推文总数增加1numnegtweets = numnegtweets + 1;%确定负面推文是否为转发rts = strncmp('RT @'我,tweets.tweetTexts {}, 4);如果RTS numnegrs = numnegrts + 1;结束结束结束
numnegtweets.
包含负面情绪的推文总数。
numNegRTs
包含了负面情绪转发的总次数。
创建包含以下字段的表:
推文数量
积极情绪的推文数量
阳性转短文数量
负面情绪的推文数量
负转派数量
matlabtweettable =表(numtweets,numpostweets,numposrts,numnegtweets,numnegrs,...“VariableNames”,{'number_of_tweets',“Positive_Tweets”,“Positive_Retweets”,...'负面_tweets','负面_retweets'});
显示推文数据表。
matlabtweettable.
matlabtweettable = 1×5表编号_of_tweets oneach_tweets oneach_retweets负面_tweets负面____________________________ _______________ ________________ 11465 688 238 201 96
在过去的7天内,关于金融服务业的11,465次推文,688名推文有积极的情绪,201推文有负面情绪。走出正面推文,238条推文是转推。出于负面推文,96是转推。