主要内容

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

这个例子展示了如何搜索和检索过去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推文。

检索所有可用的tweet

方法检索有关金融服务行业的所有可用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条是转发。

也可以看看

职能

对象

相关的话题

外部网站