主要内容

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

此示例显示如何在过去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'));

对Tweets进行情感分析

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

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是转推。

另请参阅

功能

对象

相关话题

外部网站