aho-corasick php,GitHub - coralh/php-akm: Ahocorasick keyword match. Supports php7 and php5
Ahocorasick keyword match
____ __ ______ ___ __ __ __ ___
/ __ \/ / / / __ \/ | / //_// |/ /
/ /_/ / /_/ / /_/ / /| | / ,< / /|_/ /
/ ____/ __ / ____/ ___ |/ /| |/ / / /
/_/ /_/ /_/_/ /_/ |_/_/ |_/_/ /_/
关键字快速查找匹配
编译安装
$ git clone https://github.com/imaben/php-akm.git
$ cd php-akm
$ phpize
$ ./configure
$ make
$ sudo make install
php.ini配置
[akm]
extension=akm.so
akm.enable=On|Off
akm.dict_dir=/home/dict
说明:
akm.enable表示扩展启用或关闭
akm.dict_dir用来指定关键词词典所在的文件夹
函数说明
akm_match
关键词匹配
array akm_match(string $dict_name, string $text)
参数说明
dict_name:字典名称,即akm.dict_dir配置所在文件夹下的字典库名称(文件名)
text:待匹配的文本
返回值
返回匹配含有keyword、offset、extension字段数组列表的二维数组,如:
[
{
"keyword" : "敏感词",
"offset": 123,
"extension": "扩展文本"
},
{
"keyword" : "敏感词2",
"offset": 1231,
"extension": "扩展文本"
}
]
说明:
keyword:敏感词
offset:敏感词所在文本中的位置
extension:扩展文本
akm_replace
关键词替换
int akm_replace(string $dict_name, string &$text, callable $callback)
参数说明
dict_name: 字典名称,即akm.dict_dir配置所在文件夹下的字典库名称(文件名)
text:待替换文本
callback:处理匹配字符串的回调,接受三个参数
string keyword:匹配出的关键词
int index:关键词在文本中的位置
string extension:扩展文本
如回调中返回一个字符串,则把匹配到的关键词替换成返回值。如无返回值,则不做任何处理
返回值
返回成功匹配的关键词个数
akm_get_dict_list
获取词典列表
array akm_get_dict_list()
返回值
返回已索引的词典名称列表
字典数据结构
关键词|扩展文本
keyword1|extension_text1
keyword2|extension_text2
keyword3|extension_text3
说明:
“|”为关键词和扩展文本之间的分割符
“|”只对首行第一个有效,例“发票|政治|敏感”,则认定发票为关键词,政治|敏感为扩展文本
如无“|”符,则整行被认为一个关键词,返回时无扩展文本
每行定义一个关键词,空行自动跳过
性能测试
PC配置:
CPU:Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz
内存:4GB*3 1600MHz
硬盘:东芝Q300
操作系统:Linux 4.6.4-1-ARCH
测试代码:
$dict_name = 'dict';
$text = file_get_contents("text.txt");
$start = microtime(true);;
$result = akm_match($dict_name, $text);
$end = microtime(true);;
echo '耗时' . ($end - $start) . "毫秒\n";
echo '内存占用:' . memory_get_usage() / 1024 / 1024 . "MB\n";
关键词数量:45423条
测试文本大小:8KB
测试结果:
第一次:
耗时0.488毫秒
内存占用:0.365MB
第二次:
耗时0.491毫秒
内存占用:0.365MB
第三次:
耗时0.462毫秒
内存占用:0.365MB
aho-corasick php,GitHub - coralh/php-akm: Ahocorasick keyword match. Supports php7 and php5相关推荐
- TypeScript:Aho–Corasick算法实现敏感词过滤
敏感词过滤应该是许多后端同事经常会遇到的需求,无论是评论.弹幕.文章,都需要做敏感词过滤处理来规避风险.在前端开发中,使用replace函数来替换字符串是我们的常规操作,在这之前我思考过如果用Java ...
- ac自动机 匹配最长前缀_Aho Corasick自动机结合DoubleArrayTrie极速多模式匹配
本文使用Double Array Trie实现了一个性能极高的Aho Corasick自动机,应用于分词可以取得1400万字每秒,约合27MB/s的分词速度.其中词典为150万词,构建耗时1801 m ...
- Aho-Corasick算法
2018-03-15 10:25:02 在计算机科学中,Aho–Corasick算法是由Alfred V. Aho和Margaret J.Corasick 发明的字符串搜索算法,用于在输入的一串字符串 ...
- aho-corasick php,更快的Aho-Corasick PHP实现
在 PHP中是否有一个 Aho–Corasick的工作实现?维基百科文章中提到了一个 Aho-Corasick string matching in PHP: /* This class perfor ...
- 如何开始在 github 上学习东西?
恭喜你发现了一个宝藏网站!! 先明确自己想要学什么,然后利用好Github的搜索 基础版 比较粗粒度,比如:想学习Go,那就直接检索 'go tutorial' 优先看「star高」+「更新及时」的r ...
- Aho-Corasick 多模式匹配算法(AC自动机) 的算法详解及具体实现
多模式匹配 多模式匹配就是有多个模式串P1,P2,P3-,Pm,求出所有这些模式串在连续文本T1-.n中的所有可能出现的位置. 例如:求出模式集合{"nihao","ha ...
- github php项目,12月份GitHub上最热门的PHP项目
原标题:12月份GitHub上最热门的PHP项目 开源最前线(ID:OpenSourceTop) 猿妹整编 链接:https://www.itcodemonkey.com/article/1913.h ...
- 抢答网页PHP,GitHub - zhaiwenjun/vie-to-answer: 用于小型多人的线下知识竞赛活动的在线抢答器...
云抢答系统 用于小型多人的线下知识竞赛活动的在线抢答器,过去的一年间曾多次在厦门集美中学校园活动中使用. 使用该系统你需要一台电脑作为服务器和显示屏,然后让参与者的手机连接到这台电脑上,访问对应的地址 ...
- GitHub 上排名前 100 的 Android 开源库介绍
转自:http://www.codeceo.com/article/github-top-100-android-libs.html 本项目主要对目前 GitHub 上排名前 100 的 Androi ...
最新文章
- iOS 模糊效果相关
- runtime error: invalid memory address or nil pointer dereference
- zone.js在bootstrap阶段对window对象里一些标准方法的注入逻辑
- FileZilla 安装配置参考
- 利用SVN的post-commit钩子实现多项目自动同步
- 北京最值得逛的50个地方:后海、798、簋街...
- Open vSwitch流表应用实战
- Hadoop Hive与Hbase关系 整合
- win10 mysql zip 安装教程_windows10+mysql8.0.11zip安装教程详解
- WAF Bypass数据库特性(Oracle探索篇)
- Win7如何硬盘安装Ubuntu实现双系统
- 石河子大学计算机研究生好考吗,石河子大学2020考研经验分享
- C# libUSBDotNet 操作USB
- win10系统服务器不能创建对象,win10系统Activex部件不能创建对象的详细技巧
- Python练手项目之微信机器人、恢复被撤回的微信消息
- 密码学简史(一)--- 谍战中的古典密码学
- win7计算机未连接网络,Win7无线网络显示未连接但可以上网的解决办法
- Ubuntu登录界面键盘鼠标失灵
- 大厂面试:一个四年多经验程序员的BAT面经(转载)
- 学习第1天:认识Linux系统和红帽认证
热门文章
- 皮一皮:当你和朋友只打算玩一盘游戏放松时...
- Spring Boot 2.x基础教程:快速入门
- 电子工程可以报考二建_电子科学与技术专业能报考二级建造师吗?
- mysql workbench pdm_MySQL Workbench
- 3rd_party/flatbuffers/tmp/flatc: No such file or directory
- VS2019 Android .so开发
- _findnext()调试中断,发生访问错误,错误定位到ntdll.dll
- win10 窗口无边框
- android操作ui线程
- NMS和roi pooling 实现以及加速