在对文本数据的情感分析中,基于情感词典的方法是最简单也是最常用的一种了。
它的大体思路如下:
对文档分词,找出文档中的情感词、否定词以及程度副词,然后判断每个情感词之前是否有否定词及程度副词,将它之前的否定词和程度副词划分为一个组,如果有否定词将情感词的情感权值乘以-1,如果有程度副词就乘以程度副词的程度值,最后所有组的得分加起来,大于 0 的归于正向,小于 0 的归于负向。
这两天,学校的一个团队让我帮忙爬取某网站的两份带有权值的情感词典。
第一份是“台湾大学情感词汇库”,有 11086 个带有权值的情感词。

台湾大学情感词汇库
第二份是“萌泰情感词汇库”,有 27466 个带有权值的情感词。

萌泰情感词汇库
分析这个网站,我们发现每一个网络请求都需要携带 Token,即身份认证。
所以,我们需要先通过登陆请求,获取到该用户的 Token,之后的每次请求带上该 Token 才能爬取到该网站的数据。
为了快速完成爬取这两份情感词典的任务,我使用了两套开源代码,RestSharp 和 Newtonsoft.Json。
RestSharp
利用该开源代码可以得到网络请求之后的 Json 数据,其下载地址如下:
https://github.com/restsharp/RestSharp

RestSharp
Newtonsoft.Json
利用该开源代码可以对得到的 Json 数据进行反序列化,得到 C# 对应的类,其下载地址如下:
https://github.com/JamesNK/Newtonsoft.Json

Newtonsoft.Json
Newtonsoft.Json 这套开源代码,我在 [如何利用 C# 爬取「猫眼电影专业版:票房」数据!]以及 [如何做一款「桌面版百度翻译」软件?]中使用过,以前网络请求部分都是通过 HttpWebRequest直接写的,这次偷懒使用了 RestSharp 这套来源代码。
如果大家对这两套开源代码感兴趣,给我留言,我再来写几篇图文介绍它们,下面来看看爬取情感词典的代码。
1. 构造接收 Token 的类 UserInfor。
public class Token{ public string token;}public class UserInfor{ public Token rt_info;}
2. 得到登陆用户的Token数据。
public string GetToken(string baseUrl,string username,string password){ string value = "{"username":"" + username +