博客
关于我
AC自动机的使用案例
阅读量:298 次
发布时间:2019-03-03

本文共 1009 字,大约阅读时间需要 3 分钟。

#coding:utf-8import ahocorasickdef make_AC(AC, word_set):    for word in word_set:        AC.add_word(word,word)    return ACdef test_ahocorasick():    '''    ahocosick:自动机的意思    可实现自动批量匹配字符串的作用,即可一次返回该条字符串中命中的所有关键词    '''    key_list = ["苹果", "香蕉", "梨", "橙子", "柚子", "火龙果", "柿子", "猕猴挑"]    AC_KEY = ahocorasick.Automaton()    AC_KEY = make_AC(AC_KEY, set(key_list))    AC_KEY.make_automaton()    test_str_list = ["我最喜欢吃的水果有:苹果、梨和香蕉", "我也喜欢吃香蕉,但是我不喜欢吃梨"]    for content in test_str_list:        name_list = set()        for item in AC_KEY.iter(content):#将AC_KEY中的每一项与content内容作对比,若匹配则返回            name_list.add(item[1])        name_list = list(name_list)        if len(name_list) > 0:            print(content, "--->命中的关键词有:", "\t".join(name_list))if __name__ == "__main__":    test_ahocorasick()我最喜欢吃的水果有:苹果、梨和香蕉 --->命中的关键词有: 梨	香蕉	苹果我也喜欢吃香蕉,但是我不喜欢吃梨 --->命中的关键词有: 梨	香蕉————————————————版权声明:本文为CSDN博主「追梦杏花天影」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/u010569893/article/details/97136696

 

你可能感兴趣的文章
Java基础之反射
查看>>
线程池之SingleThreadPool学习
查看>>
对象的创建、内存布局和访问定位
查看>>
TCP第4次挥手为何要等待2MSL才关闭?
查看>>
Redis支持的5种数据类型
查看>>
FreeRTOS学习笔记(9)——内存管理
查看>>
FreeRTOS学习笔记(10)——中断管理
查看>>