目录
Flashtext 只匹配完整的单词。作为文本替换效率远高于replace()方法。
from flashtext import KeywordProcessor as kp
k = kp(case_sensitive=False) # case_sensitive参数设置关键词匹配是否区分大小写
text = "张三请选择学习一种语言:如Python语言,Java语言,php语言,请在三分钟内做出选择。"
添加关键词
add_keyword
(字符串)单个关键词:add_keyword(self, keyword, clean_name=None): 参数-->
- keyword 检索的词
- clean_name 显示或要被替换为的词(默认keywords本身),如果匹配到keyword,则会返回clean_name。
keywords_oldstr, keywords_newstr = '张三', '李四' k.add_keyword(keywords_oldstr, keywords_newstr)
add_keywords_from_list
(列表)多个关键词:add_keywords_from_list(self, keyword_list):参数-->
- keyword_list 要添加的关键词列表
keywords_list = ['python', 'js'] k.add_keywords_from_list(keywords_list)
add_keywords_from_dict
(字典)多个关键词:add_keywords_from_dict(self, keyword_dict):参数-->
- keyword_dict 其中key类似于clean_name,value类似于keyword ,如果匹配到value,则会返回key。
keywords_dic = { 'JS': ['Java', 'Swift', 'php'], 'C++': ['c#'], '编程语言': ['语言'], } k.add_keywords_from_dict(keywords_dic)
add_keyword_from_file
txt文件添加,将文件中的每一行作为一个关键词add_keyword_from_file(r'D:\zhuomian\test_file\789.txt')
add_non_word_boundary
添加单个字符作为关键字的一部分(即改变原来的关键词),可以是拼接在关键词之前或之后。此方法不常用。
t = "选择一种手机品牌:华为、小米、OPPO、传音、vivo" k.add_keywords_from_list(['手机', 'OPPO']) old_kw = k.extract_keywords(t) k.add_non_word_boundary('、') new_kw = k.extract_keywords(t) print(old_kw,new_kw)
结果:['手机', 'OPPO'] ['手机']
set_non_word_boundaries
添加一个字符集作为关键字的一部分,相当于将字符集中的每个字符进行add_non_word_boundary操作,此方法不常用。
k = kp(case_sensitive=False) # case_sensitive参数设置关键词匹配是否区分大小写 t = "选择一种手机品牌:华为、小米、OPPO、传音、vivo" k.add_keywords_from_list(['手机', 'OPPO']) old_kw = k.extract_keywords(t) k.set_non_word_boundaries('、一种牌') # 添加一个字符集作为关键字的一部分,相当于将字符集中的每个字符进行add_non_word_boundary操作 new_kw = k.extract_keywords(t) print(old_kw, new_kw)
结果:['手机', 'OPPO'] []
删除关键词
remove_keyword
(字符串)删除单个关键词
k.remove_keyword('PHP')
remove_keywords_from_list
(列表)删除多个关键词
k.remove_keywords_from_list(keywords_list)
remove_keywords_from_dict
(字典)删除多个关键词,同字典添加,value作为关键词
rm_keywords_dic = { '自定义关键词1': ['选择', '出', '分钟'], '自定义关键词2': ['python', 'Java', 'php'] } k.remove_keywords_from_dict(rm_keywords_dic)
提取关键词
extract_keywords
# 参数sentence:被提取关键词的文本语句。
# 参数span_info:是否返回提取到的关键字在文本语句中位置索引,默认false,只提取关键词,返回一个关键词列表;true时,返回一个包含关键词及关键词索引位置的元祖的列表。keywords_found1 = k.extract_keywords(text) keywords_found2 = k.extract_keywords(text,span_info=True) print(keywords_found1) print(keywords_found2)
结果:
['李四', '编程语言']
[('李四', 0, 2), ('编程语言', 9, 11)]
替换关键词
replace_keywords
new_text = k.replace_keywords(text) print(new_text)
结果:李四请选择学习一种编程语言:如Python语言,Java语言,php语言,请在三分钟内做出选择。
获取关键词
get_keyword
# 同dict一样,通过key获取value
print(k.get_keyword('张三'))
get_all_keywords
# 递归构建当前关键词字典 p = k.get_all_keywords() print(p) print(p.keys()) print(p.values())
结果:
{'张三': '李四', 'swift': 'JS', 'c#': 'C++', '语言': '编程语言', '三国': '三国'}
dict_keys(['张三', 'swift', 'c#', '语言', '三国'])
dict_values(['李四', 'JS', 'C++', '编程语言', '三国'])