如何高效的判断一段文本中是否包含一个字典中的某个词——黄反识别

虽然市面上有很多开箱即用的黄反接口,但是如果我想自定义黄反词,可能支持的不太好。
目标也就是判断一段文本中是否包含一个字典中的某个词。
我这个词典有5w条,循环遍历太慢了。
在网上找了半天,只找到这条结果 如何高效的判断一段文本中是否包含一个字典中的某个词?,看了一下,感觉效果不是很好。
但是切词给了我灵感,我只要把文本切词,然后和词典取交集即可。
但是问题来了,词典中有的词是一个小短句,肯定会被切开,这样就匹配不到。
想到了jieba切词,可以导入自定义词典,按照词典来切词,那我导入黄反词典不就可以了?!

import jieba
def check(s):
    huangfan_path = 'path/to/dict.txt'
    jieba.load_userdict(huangfan_path)
    huangfan_words_dict = set()
    with open(huangfan_path, 'rb') as fr:
        for line in fr.readlines():
            huangfan_words_dict.add(line.strip().decode('utf-8'))
    return set(jieba.lcut(s)) & self.huangfan_words_dict

亲测有效,速度很快!

你可能感兴趣的:(如何高效的判断一段文本中是否包含一个字典中的某个词——黄反识别)