这个例子展示了如何搜索和检索过去7天内所有可用的Tweets,并将它们导入MATLAB®.导入数据后,您可以进行情感分析。此分析使您可以从文本数据中确定主观信息,例如情绪,意见或情绪反应。此示例搜索金融服务业的积极和消极情绪。
要运行此示例,您需要Twitter®凭证。要获得这些凭证,您必须首先登录您的Twitter帐户。然后,填写表格创建一个应用程序.
要访问示例代码,请输入编辑twittexample.m.
在命令行。
使用您的凭证创建一个Twitter连接。(本例中的值并不代表真正的Twitter凭据。)
confecerkey =“abcdefghijklmnop123456789”;consumersecret ='qrstuvwxyz123456789';AccessToken =.“123456789 abcdefghijklmnop”;AccessTokensecret =.'123456789qrstuvwxyz';C = Twitter(Confecerkey,ConfeceSecret,AccessToken,AccessTokensecret);
检查Twitter连接。如果statuscode.
属性的值为好吧
,则连接成功。
c.StatusCode
ans =好
使用Twitter连接对象搜索关于金融服务行业的最新100条tweet。使用搜索词金融服务
.进口推®数据到MATLAB工作区。
Tweetquery ='金融服务';s =搜索(c,tweetquery,“数”, 100);状态= s.Body.Data.statuses;暂停(2)
状态
包含推文数据作为100个结构的单元数组。每个结构都包含推文文本的字段,其余字段包含有关推文的其他信息。
搜索并检索自上一个请求之后发生的下100个tweet。
srefresh = search(c,tweetquery,“数”,100,......“since_id”,s.body.data.search_metadata.max_id_str);stationes = [状态; srefresh.body.data.statuses];
状态
除了以前的100推文外,还包含最新的100推文。
方法检索有关金融服务行业的所有可用Tweets而
环形。使用该数据检查可用数据伊斯特菲尔德
功能和结构领域next_results
.
而Isfield(s.body.data.search_metadata,“next_results”)将结果转换为字符串nextresults = string(s.body.data.search_metadata.next_result);%提取最大推文标识符max_id = extractbetween(nextresults,“max_id =”那“&”);%将最大Tweet标识符转换为字符向量cmax_id = char(max_id);%搜索推文s =搜索(c,tweetquery,“数”,100,'max_id', cmax_id);%检索每个推文的Tweet文本状态= [状态; s.body.data.statuses];结尾
检索每个推文的创建时间和文本。通过在结构单元格阵列中访问它来检索非结构化数据的创建时间。对于结构化数据,通过在结构阵列中传输字段来访问创建时间。
如果iscell(状态)%非结构化数据numTweets =长度(状态);%确定推文总数tweetTimes =细胞(numTweets, 1);%为Tweet时间和Tweet文本分配空间TweetTexts = Tweettimes;为了i = 1:numTweets tweetTimes{i} = status {i}.created_at;%检索每个Tweet的创建时间TweetTexts {i} = statuses {i} .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'));
创建与积极情绪相关的词语词汇表。
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 {i},4);如果rts.%积极转发总数增加1numposrts = numposrts + 1;结尾结尾结尾
numpostweets.
包含有正面情绪的推文总数。
numposrts.
包含具有积极情绪的转发总数。
创建一个与消极情绪相关的词汇表。
negkeywords = {“伤心”那'贫穷的'那“坏”那“慢”那'削弱'那“的意思是”那'无聊的'那......“普通”那'底部'那“损失”那'失败者'那“失去”那“没把握的”那......“批评”那“没用的”};
negkeywords.
是一个细胞阵列的字符向量。每个字符矢量都是表示负面情绪实例的单词。
在每条推文中搜索负面情绪词汇。确定包含负面情绪的tweet的总数。在消极推文总数中,确定retweet的总数。
%确定负推文numNegTweets = 0;numNegRTs = 0;为了我= 1:numTweets%将Tweet与负面情绪词汇进行比较dJobs =包含(tweets.tweetTexts {}, negkeywords,'Ignorecase',真的);如果dJobs%增加了一个负面情绪的推文总数numNegTweets = numNegTweets + 1;%确定负推文是否是转发RTs = strncmp (“RT @”,Tweets.tweetTexts {i},4);如果numNegRTs = numNegRTs + 1;结尾结尾结尾
numNegTweets
包含具有负面情绪的推文总数。
numnegrs.
包含具有负面情绪的转发总数。
使用包含列的列创建表:
的微博
有积极情绪的推文数量
正面转发数
带负面情绪的推文数量
负转发数
matlabTweetTable =表(numTweets numPosTweets、numPosRTs numNegTweets, numNegRTs,......'variablenames',{“Number_of_Tweets”那'passion_tweets'那'pidden_retweets'那......“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条是转发。