python高效率文本内容关键词替换:flashtext库

目录

添加关键词

add_keyword

add_keywords_from_list

add_keywords_from_dict

add_keyword_from_file

add_non_word_boundary

set_non_word_boundaries

删除关键词

remove_keyword

remove_keywords_from_list

remove_keywords_from_dict

提取关键词

extract_keywords

替换关键词

replace_keywords

获取关键词

get_keyword

get_all_keywords


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++', '编程语言', '三国'])

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值