基于规则的文本中颜文字识别方法【附:颜文字词典】

2020-02-06  本文已影响0人  长行徇上

最近在做弹幕话题分析的时候,我发现颜文字可以承载情感,有分析价值,但是数量很多,匹配起来很麻烦,所以考虑探索一下基于规则的颜文字识别方法。

我汇总了搜狗输入法、QQ输入法等几个输入法的颜文字,以及我自己从抓取的弹幕中提取的颜文字共计1716个。
颜文字词典下载

通过对这些颜文字的分析,我发现颜文字基本上符合如下特征:

import re
def find_emoticons(sentence: str):
    """ 在字符串中识别颜文字
    :param sentence: <str> 需要识别的句子
    :return: <list> 识别出的颜文字
    """
    number_list = list("0123456789")  # 数字列表
    common_list = list(",.?!,。、?!T()()《》")  # 其他常用字符列表
    emoticons_list = list()
    for maybe_emoticons in re.findall("[^a-zA-SU-Z\u4e00-\u9fa5]{2,}", sentence):
        character_list = set()
        for character in maybe_emoticons:
            if character not in character_list and character not in number_list and character not in common_list:
                character_list.add(character)
        if len(character_list) <= 1:
            continue
        emoticons_list.append(maybe_emoticons)
    return emoticons_list

运行测试:

if __name__ == "__main__":
    string = "稳一点啊阿水(/TДT)/"
    print(find_emoticons((string)))

运行结果:

['(/TДT)/']

代码下载

上一篇下一篇

猜你喜欢

热点阅读