虽然市面上有很多开箱即用的黄反接口,但是如果我想自定义黄反词,可能支持的不太好。
目标也就是判断一段文本中是否包含一个字典中的某个词。
我这个词典有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
亲测有效,速度很快!