python的高性能trie和ahocarasick自动机(ac automata)

cyac的Python项目详细描述


#cyac
高性能trie&keyword匹配和替换工具。

trie的数据结构是cedar,它是一个优化的双数组trie。它支持python2.7和3.4+。它支持pickle转储和加载。



快速启动
此模块用cython编写。[BR/>然后创建Cyac导入TIE < BR/> & gt & gt;Tre=TrIe():BR/>“BR/> B//>添加/获取/删除关键字BR/>‘BR/> & Gt;& gt;& Tre。插入(u)For)返回关键字ID在TIE中,返回- 1如果不存在
& Gt;& Gt;您需要安装Cython。
BR/>‘BR/> PIP安装CYAC < BR/> 'BR'Br在TIE中返回(U-FION))返回关键字1,如果不存在,则BR/> & Gt;& gt;& T.e。在trie中测试关键字是否在trie中;对于key,id在trie.items中;对于key,id在trie.items():
>;
>>>>>>>>>>>>>>>>>>>>
>>>gt;对于key,id在trie.items():
>>;>print(key,id)print(key,id
``
>

>prefix/prepredict
```
>>>gt;;返回trie中以给定字符串开头的字符串字符串的字符串,该字符串在trie中以给定字符串开头
>;>;对于trie.predict中的id,predict(u“_”):
>;gt;print(id)
>>>;gt;gt;返回trie中给定字符串的前缀。对于id,len_in trie.prefix中的id,preid中的len。prefix(u“_;对于id,trie.prex中的len。prefix(u“_勠勠__”中
```
>;>python_id=trie.insert(u“python”)
>;>;trie.replace_longest(“python”,{python_id:u“hahah”},set([ord(“)))第二个参数是separator。如果指定分隔符。它只匹配分隔符之间的字符串。例如,它不会匹配“apython”
&g t>gt>gt>gt;对于id,以trie开头,以trie结尾;匹配最长(u“python”,设置([ord(“““”)):
>>gt>gt;打印(id,开始,结束)
````>br/>

>aho corasick extract
```
>>gt>gt;对于id,以ac开头,以ac结尾;对于id,以ac最长(u“python”,u“ruby”]
>>gt>gt>gt>gt;对于id,以ac开头,以ac开头,以ac结尾;对于id,以ac开头,以ac开头,以ac结束。.match(u“python ruby”):
&g t;>;在ubuntu 14.04.5/intel(r)core(tm)i7-4790k cpu@4.00ghz上打印(id,start,end)
````





Br/> Tre
与HatTrie相比,地轴为记号。垂直轴使用时间(秒)。< BR> >插入< BR>![插入性能](./bench/insert_u performance.png)

[获得性能](./bench/get_performance.png)

[删除性能](./bench/remove_performance.png)

此任务中的正则表达式太慢(请参阅FlashText的基准点)。地轴是匹配的。垂直轴使用时间(秒)。< BR/>< BR>[提取性能](./bench/extract_performance.png)
![替换性能](./长凳/ RePasePosial.PNG)
BR/>α-AHO CARASICK算法
与PyHasasasic相比,地轴是匹配的。垂直轴使用时间(秒)。[空调性能](..bench/ac_performance.png)

=len(u“stanbul.lower())在python3中
```


在不区分大小写的匹配中,此库处理事实并返回正确的偏移量。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
CentOS上的java Spring Boot简易应用程序需要很长时间才能启动   java如何检查字符串值是否等于null?   收集器中的java映射值。分组方式()   java需要支持Azure AD B2C webapp集成   java如何加入线程以停止它?   java如何使用意图传递类的对象?   java如何在战争环境中发现CDI生产者?   多模块项目中java奇怪的编译器行为   java如何在web应用程序中管理密码?   java从http服务器、filehandler中删除冗余代码   java使用反射来获取泛型类的字段   java Spring MVC/Hibernate/MySQL 400错误请求错误   给定正整数a的java幂为3   在Java中将元素拆分为不同数量的列表?   java展开折叠窗格