![9f783476f0dbc15702822f264202e0f6.png](https://i-blog.csdnimg.cn/blog_migrate/42749cb5f46324736f5eb18f616ec42e.jpeg)
与本文相关内容链接:
[数说弹幕]我不小心看了后浪弹幕_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com![7a215c76c0ccf38acf0497e5678c1fbe.png](https://i-blog.csdnimg.cn/blog_migrate/b8abe46c394bd9b5fc95df6bd40a15db.jpeg)
![b13dfb18f45cad296d27b1baa0fd05ac.png](https://i-blog.csdnimg.cn/blog_migrate/e21261059d5a657e3a110b0ed0e7b900.jpeg)
这一篇内容我着重讲述分词的方法,以及在分词过程中需要注意的点,这里主要使用的工具是jieba分词。前半部分是理论介绍,后半部分是代码,如果对理论很熟悉的可以跳过前半部分。
一、你需要知道的几个常用词典
这个网站有很多词典可以下载使用:https://github.com/fighting41love/funNLP
我在做中文分词,包括后面的情感分析主要使用的词典有以下几种
- 停用词典(停用词,颜文字,emoji)
由于B站弹幕上充满了网络用语和二次元表情,处理起来不是一个简单的停用词表可以解决的。这样你的停用词典就要分成三类,停用词,颜文字((≧ω≦)/,(ω),(∩▽∩),(๑•́ ₃ •̀๑),⊙ω⊙)和emoji
![d24a1e5e67d5a6f612d188dbbd2cb715.png](https://i-blog.csdnimg.cn/blog_migrate/71f5b8c037157a3711b6161041c69059.png)
颜文字可以将其拆解为一个个符号进行剔除,如果想保留可以建立自己的颜文字表。
emoji都有对应的Unicode,可以查找他们的编码进行识别处理。
- 否定词典,程度副词词典
《面向微博短文本的情感分析研究》中指出,正向情感类被否定词修饰后,其情感趋向于负向情感类,而负向情感类被否定词修饰后,其情感趋向于无情感,或稍微倾向于正向情感。而程度副词分为两类一类是增强情感,一类是削弱情感。
- 情感极性词典,多维情感词典
情感极性词典将情感分为正向、中性、负向三种。
情感多维词典也就是情绪词典,通常根据七情六欲中的七情将情感分为喜、怒、忧、思、悲、恐、惊,也有更多的划分。具体可以参考微博舆情的情绪模型。
其他的大家可以留言补充。
二、统一字符、统一大小写、统一繁简体
- 统一字符
统一字符,就是将文本内容中的全角字符串转换为半角字符串,这样会避免在自然语言处理的过程中由于字符不统一而导致的信息混乱问题。有规律的字符全角的十进制范围是[65281,65374],半角是[33,126],全角和半角之间的差值为65248,因此我们直接在全角数值上减去65248即可的到半角数值。在转换的过程中使用两个函数:ord和chr,ord是将字符串转换为对应的数值,chr是将数值转换为Unicode字符串。
- 统一大小写
针对英文词组,或者英文缩写,一个英文词组同样的意思因为大小写不一致,会被识别为不同的词组。这里使用upper()函数转换为大写,或者lower()函数转换成小写。
- 统一繁简体
针对中文词组,同样的中文词组,由于繁简体不一致会被识别为不同的词组。
langconv.py
zh_wiki.py
将这两个包下载下来,放在与代码同样的文件夹下,然后倒入。第一个包是用来实现繁体转简体,第二个包是用来实现简体转繁体。
三、添加无法识别的词和字典中没有的新词
因为B站的二次元环境就注定了很多常用词组是在日常生活中没有的,jieba也同样识别不出来,这样就需要我们手动添加,比如”老番茄“,“哔哩哔哩”,“小破站”等。只需要使用jieba.add()函数就可以了。
四、python代码实现分词
这里的代码不会将上面说的点都实现,因为有些是同样的逻辑,只是重复工作而已,道理已经讲清楚了,自己实现起来不难。
import
添加词组
#添加jieba无法识别的词组,tag用来定义词性
读取停用词
#读取停用词典,其他词典同样道理,这里codecs需要import一下
繁体转简体
from
全角转半角
def
结巴分词
def
在下一篇文章我会介绍制作词云的几个方法,敬请期待。