社交型新媒体分析方法——以Twitter为例
一、研究背景和目的
随着国际互联网络的进一步普及以及网络之上所承载的信息量的进一步丰富,互联网成为新的媒体已经是不争的事实,众多社交网站的访问量已不亚于传统媒体,以Facebook、Twitter、微博为代表的社交网站已经成为了互联网信息传播的新势力,它们散发出的巨大能量使得传播领域出现了一个新的名词——社交媒体。同时,由社交媒体产生的社交媒体数据也蕴含着巨大的信息。本文拟探索一种以Twitter网站数据为基础,对用户的社交媒体数据进行统计分析方法,利用Python NLTK技术,实现对社交媒体数据的关键字提取、情感分析用户相似度分析、社群划分等任务,为用户提供数据推荐。
二、相关研究现状
由于涉及到利润和经济效益问题,目前出现的多数社交媒体分析工具中,以面向企业的企业社交媒体分析软件和工具居多,企业可以通过社交媒体分析软件在社交网站中进行市场调查、收集客户数据,并使用社交媒体分析软件和针对社交媒体的文本挖掘工具对相关数据进行分析挖掘,了解用户对其产品的口碑评价。当前越来越多的软件厂商也从这场互联网社交网络浪潮中看到了新的机遇,商业智能和分析软件生产厂商也开始涉足到社交媒体这一领域,这让社交媒体分析软件的发展走上了快车道。比如商业智能和分析软件与服务厂商SAS在2010年发布了一款社交媒体分析套装,旨在帮助企业了解互联网上用户对于他们品牌的口碑如何[1];而IBM也发布了一个升级的SPSS功能模块(数据挖掘厂商SPSS在2009年被IBM所收购),该模块对特定的200多个行业进行了细致的分类设计,可以帮助企业挖掘出社交媒体中出现的关键字。
Python Natural Language Toolkit(Python NLTK)是一个效果比较好的文本挖掘工具库,该工具库是以Python编程语言实现的一个包含多种类库和程序的自然语言处理
工具包,该工具包应用于自然语言处理,可以对自然语言进行符号化和统计分析,学术方面和工业方面都有很多成功的文本分析和处理的应用工具是基于Python NLTK实现的。本文拟使用Python NLTK作为进行文本分析的基础类库,目的是利用Python NLTK对自然语言处理的基础优势,实现对社交媒体数据分析逻辑的快速设计和构建。
三、社交新媒体分析方法
互联网社交媒体众多,因Python NLTK对英文的理解能力更优秀,分析方法设计时选取具有代表性的Twitter社交网站,针对Twitter设计一种社交媒体分析方法,实对媒体数据进行关键字分析、情感分析、用户相似度分析、社群划分等任务。
关键字分析
首先加载Python NLTK类库,随后等待Twitter后台抓取的数据对象。从Twitter后台获得的数据对象包含了所有Twitter能够向开发者提供的有用信息。接收到数据对象后,从中抽取text、user.screen_name、user.id以及created_at字段,这三个字段分别包含了推文正文、用户显示名称、用户标识符以及推文发布时间。
本方法分析的对象主要针对英文文本,这就需要过滤推文的语言种类,避免对非英文句子做无效的分析,利用JSON数据对象中user.lang字段能够达到很好的英文过滤效果。通过统计推文正文的英文字符所占比例及JSON数据对象中的user.lang字段,可以实现对推文是否以英文为主要语言的判断,若推文所用语言大部分不是英文,则将该JSON数据对象丢弃,记录日志,取消本次分析任务,重新等待新的数据对象到来。
当确定推文可以进行进一步分析后,使用Python NLTK提供的word_tokenize方法对推文正文做分词处理,得到分词后的单词序列;然后用pos_tag方法对单词序列做词性标注,最终获得具有NN(名词)或NNP(专有名词)标签的单词。
在关键字名词抽取过程中,每一次分析过程超时时,会将分析过程中止,放弃本次分
析过程,避免时效性受到过多不利影响。 开始加载NLTK包等待数据到来抽取数据对象中的推文、用户名、发布时间推文语言80%以上是英文对推文做分词对英文单词做词性标注丢弃数据,记录日志,结束本次任务抽取词性标记为NN或NNP的单词保存分析结果结束
情感分析
本分析方法的另一个任务是对推文进行情感分析[38-40],以此推断发出推文的用户当前的主观状态是消极或是积极,为内容推送提供更多参考依据。
对文本进行情感分析的方法是在 Python NLTK 提供的一个朴素贝叶斯分类器[2]基础上进行训练,训练使用的语料库是一个电影评论语料库,其中包含了1000 份积极评价文件和 1000 份消极评价文件,通过训练可以得到一个能够对文本进行情感分析的朴素贝叶斯分类器,然后使用该朴素贝叶斯分类器对推文正文进行情感分析,分析结论值域为{neg, pos},“neg”表示推文正文包含消极情绪,“pos”表示推文正文包含积极情绪。
情感分析算法执行过程同样受到计时器的监控,监控方法与关键字名词抽取相同。 其具体步骤如下:
第1步,系统启动后,加载NLTK包,初始化类对象nltk.classify和nltk.corpus; 第2步,从nltk.classify导入NLTK提供的一个朴素贝叶斯分类器实例,由于NLTK工具包和所提供的朴素贝叶斯分类器本身不提供数据集,所以从nltk.corpus加载预先从互联网下载的语料库movie_reviews;
第3步,将movie_reviews下pos目录内的所有文件内的所有单词标记为pos,将neg目录内的所有文件内的所有单词标记为neg;
第4步,利用pos集合呢neg集合对朴素贝叶斯分类器进行训练;
第5步,以上初始化工作结束后,工作流程进入暂停状态,等待包含关键字名词抽取逻辑的部分将推文数据发送过来;
第6步,当有推文分词结果到来时,利用分词结果以及在第4步得到的朴素贝叶斯分类器对推文做情感分析,得出neg或pos结论,并将分析结果提交到数据维护模块;
第7步,得到本次分析结果后,使用本次分析结果继续对朴素贝叶斯分类器进行训练,
从而使该分类器具备自我更新能力。
社群划分
在进行社群划分时,首先对将要进行社群划分的用户群中的用户进行相似度排序,相似度排序的目的是为了确定在社群划分时哪些用户之间更有可能属于同一个社群,具体方法如下:
第1步,从数据单元中加载基础用户群用户列表以及关注关系;
第2步,根据用户间的关注关系建立邻接矩阵,并根据该邻接矩阵建立概率矩阵[3]; 第3步,默认设定概率因子,迭代计算概率向量,迭代次数设置为500次; 第4步,迭代计算完成后,根据计算结果合并两个最相似的结果,并记录合并前后顺序,利用JSON对象记录合并过程;
当结果合并到只有1个时,计算结束。
社群划分在用户相似度计算结果的基础上进行,运用Q值方法计算[4],直接目的是寻找一条能够使得Q值最大的水平切割方案。由于一般的社群划分方案总是会将用户群划分成至少2个社群,所以在计算时跳过第一条切割线,直接从将用户群划分成3个社群的方案开始,具体方法如下:
第1步,初始化 Q=0;
第2步,获取表示相似度计算结果的JSON数据对象,至少从第3层开始解析,将JSON对象解析成若干子对象,直到符合预定切割深度,形成一个划分方案,每个JSON子对象代表一个社群;
第3步,根据所得的JSON子对象集合中的用户,以及用户间的关注关系,建立矩阵 第4步,进行Q值迭代计算;
第5步,将新的Q值与上次计算所得Q值做比较,若新值比旧值大,则启用新值,同
时记录在JSON数据对象中,即标记划分方案;
第6步,将水平切割深度增加1,若未达到最底层,则跳到第2步重复执行,否则跳到第7步执行;
第7步,根据最大Q值对应的划分方案,将用户群划分为若干社群,保存划分结果,退出计算。
四、分析效果预测
本文在对社交媒体深入分析的基础上,探讨一种面向Twitter,以Python NLTK以及用户相似度和Q值联合算法为基础的实时社交媒体分析方法。预计能够实现以下效果:
实现了针对Twitter社交媒体网站的实时社交媒体分析。可以针对不同用户所关注的不同热点关键字,向其做个性化推荐。
通过该方法所提供的数据推送服务,用户可以快速获得系统对当前网络中具有相似话题的用户的数据推送,满足用户对社群活动的信息需求,让用户能够快速及时地获取与之相似的热点信息和用户,提高用户在社群中的活跃度。
参考文献:
1. 王亮.SNS社交网络发展现状及趋势[J].现代电信科技,2009,6(6):9-10.
2. 程泽凯,林士敏,陆玉昌,等.基于Matlab的贝叶斯分类器实验平台MBNC[J].复旦学报(自然科学版),2004,43(5):729-732.
3. 程远,严伟,李晓明.基于矩阵模型的数据布局算法[J].计算机工程,2004,3(3):104-105,188.
4. Newman M E J,Girvan M.Finding and evaluating community structure in networks[J].Physical review E,2004,69(2):36-48.
因篇幅问题不能全部显示,请点此查看更多更全内容