让jieba分词支持带特殊字符的关键字

最近在做微博预处理的时候遇到这样一个问题:博文中的的表情符号被转换为如: [微笑][生气][白眼] 这种用方括号描述方法,但是在jieba自定义词典中添加上述描述后,分词的结果却依然是['[','微笑',']']。这种方式有时并不符合我们的需求。我们可以通过改jieba包中的init.py几个正则表达式来解决这个问题。用户词典中词词性用@@分隔。

  • 搜索
re_han_default = re.compile("([\u4E00-\u9FD5a-zA-Z0-9+#&._]+)", re.U)
re_userdict = re.compile('^(.+?)( [0-9]+)?( [a-z]+)?$', re.U) 
word, freq = line.split(' ')[:2]
re_han_cut_all = re.compile("([\u4E00-\u9FD5]+)", re.U) 

改成

re_han_default = re.compile("(.+)", re.U) 
re_userdict = re.compile('^(.+?)(\u0040\u0040[0-9]+)?(\u0040\u0040[a-z]+)?$', re.U)
word, freq = line.split('\u0040\u0040')[:2] 
re_han_cut_all = re.compile("(.+)", re.U)

对了,如果你需要自定义一些特殊词的词性标注,也需要对import jieba.posseg 中的正则进行修改,为了满足我的需求(表情符号进行词性标注,比如自定义词典: [微笑] pos,[生气] neg),只需要改jieba.posseg包中的__init__.py文件,搜索为:

re_han_internal = re.compile("([\u4E00-\u9FD5a-zA-Z0-9+#&\._]+)")

修改为:

re_han_internal = re.compile("(.+)")

通过测试,成功将一句话中的[微笑] 词性标记为pos

你可能感兴趣的:(让jieba分词支持带特殊字符的关键字)