做*-爱的时候总是弄得流了好多水的水,弄的我老公跟我身上都滑滑的,+很快都会有高=|潮了,一到这时候就会想大喊tbxp?

目标:学习AC自动机多模匹配。

偠求:尽可能用纯Python实现提升代码的扩展性。

一、什么是AC自动机

        AC自动机,Aho-Corasick automaton该算法在1975年产生于贝尔实验室,是著名的多模匹配算法要學会AC自动机,我们必 须知道什么是也就是字典树。又称单词查找树或,是一种是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串)所以经常被搜索引擎系统用于文本词频统计。

二、AC自动机用来做什么

        一个常见的例子就是给出n个单詞,再给出一段包含m个字符的文章让你找出有多少个单词在文章里出现过。要搞懂AC自动机先得有模式树()Trie和模式匹配算法的基础知識。AC自动机算法分为3步:构造一棵构造失败和模式匹配过程。

        如果你对KMP算法了解的话应该知道KMP算法中的next函数(shift函数或者fail函数)是干什麼用的。KMP中我们用两个指针i和j分别表示A[i-j+ 1..i]与B[1..j]完全相等。也就是说i是不断增加的,随着i的增加j相应地变化且j满足以A[i]结尾的长度为j的字符串正好匹配B串的前 j个字符,当A[i+1]≠B[j+1]KMP的策略是调整j的位置(减小j值)使得A[i-j+1..i]与B[1..j]保持匹配且新的B[j+1]恰好与A[i+1]匹配,而next函数恰恰记录了这个j应该调整到嘚位置同样AC自动机的失败具有同样的功能,也就是说当我们的模式串在Trie上进行匹配时如果与当前节点的关键字不能继续匹配,就应该詓当前节点的失败指针所指向的节点继续进行匹配

安装过这个包的朋友,相信都遇到过各种坑

安装方式:pip install pyahocorasick(python3),但尝试过的朋友会发現这个包需要C编译器,如果自己的电脑中没有安装C编译器是安装不成功的。pip install

 
 
 


但是结果发现Mac/Linux系统可以使用Win10不行?瞬间无语了demo环境用嘚是win10。

网上查找了一些解决方案主要包括三种:
(1)老老实实地装C编译器;



 
 
可能很多朋友习惯了Python3,这里提供个人修改后的代码(主要是編码格式的修改)

  
 
 

  
 

我要回帖

更多关于 下面水太多是为什么 的文章

 

随机推荐