词表匹配工具FlashText

1、安装

pip install flashtext

2、使用示例

提取文本中字典涉及的关键词并将多个词归一化为某个关键词

from flashtext import KeywordProcessor
keyword_processor = KeywordProcessor()
# keyword_processor.add_keyword(<unclean name>, <standardised name>)
keyword_processor.add_keyword('Big Apple', 'New York')
keyword_processor.add_keyword('Bay Area')
keywords_found = keyword_processor.extract_keywords('I love Big Apple and Bay Area.')
keywords_found

具体用法可参考:

https://github.com/vi3k6i5/flashtext

3、中文匹配问题

3.1 中文匹配关键词遗漏的问题

3.2 中文、数字混合字符遗漏匹配

4、解决方法

4.1 中文匹配关键词遗漏的问题问题解决方法

修改pyenv/lib/python3.6/site-packages/flashtext/keyword.py 523行的代码idx = sequence_end_pos 为idx = sequence_end_pos - 1

4.2 中文、数字混合字符遗漏匹配问题解决方法

from flashtext import KeywordProcessor
keyword_processor = KeywordProcessor()
keyword_processor.set_non_word_boundaries(set('-'))
keyword_processor.add_keyword('测试')
keyword_processor.extract_keywords('3测试')

5、中文多词匹配

思路:

1)为多词匹配设置别名,原始词为多词中的单词,附加信息为多词串,例如【中学】为原始词,【中学&教材】为中学的附加信息

keyword_processor.add_keyword('中学', '中学&教材')

2)匹配信息返回多词串,再判断多词串是否都在目标字符串中

from flashtext import KeywordProcessor
keyword_processor = KeywordProcessor()
keyword_processor.set_non_word_boundaries(set('-'))
keyword_processor.add_keyword('中学', '中学&教材')
keyword_processor.add_keyword('教材', '中学&教材')
string = '中学教材很好'
keywords_found = set(keyword_processor.extract_keywords(string))
for keyword in keywords_found:
    if '&' in keyword:
        keyword_seg = keyword.split('&')
        flag = True
        for seg in keyword_seg:
            if seg not in string:
                flag = False
    if flag:
        print(keyword + 'is matched')

参考:

https://github.com/vi3k6i5/flashtext/issues/43

https://github.com/vi3k6i5/flashtext

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值