【NLP】fastMatch: 大规模字符串精确匹配工具

fastMatch是一个用于大规模精确字符串匹配的c++库,主要解决以下几个问题:
  • 单模式串 - 单文本串匹配

  • 单模式串 - 多文本串匹配

  • 多模式串 - 单文本串匹配

  • 多模式串 - 多文本串匹配

  • 最大正向匹配分词

代码:https://github.com/zejunwang1/fastMatch
fastMatch库实际上仅包含头文件,我们提供了一个可执行程序fastMatch用于大规模字符串匹配。

Usage

使用make进行编译:

git clone https://github.com/zejunwang1/fastMatchcd fastMatchmake

Multiple texts

./fastMatch --help
Large-scale Exact String Matching Tool! Usage: --input text string file path --pattern pattern string or pattern string file path --num_threads number of threads --num_patterns number of matching patterns returned --fast enable fast matching mode --hit enable hit matching mode --seg enable maximum forward matching word segmentation --N total number of text strings --M total number of pattern strings  --help -h       show help information
# match all patterns./fastMatch --input data/query.txt --pattern data/disease.txt
# return a fixed number of matched patterns./fastMatch --input data/query.txt --pattern data/disease.txt --num_patterns 2
# search only once for each position of the text string./fastMatch --input data/query.txt --pattern data/disease.txt --fast
# return only one hit pattern for each text string./fastMatch --input data/query.txt --pattern data/disease.txt --hit
# maximum forward matching word segmentation./fastMatch --input data/query.txt --pattern data/disease.txt --seg
部分匹配结果如下:
婴幼儿肺炎咳喘  肺炎右眼外伤性白内障右眼完全看不清怎么办?怎么才能怀上宝宝  白内障怀孕后痔疮会加重吗  痔疮如何治疗焦虑症都是哪些办法  焦虑症在检查白癜风要多少钱  白癜风宫颈息肉了怎么样治  宫颈息肉  息肉子宫内膜息肉手术后注意事项  子宫内膜息肉  息肉小儿癫痫要注意哪些饮食呢  小儿癫痫  癫痫合肥女性多囊卵巢综合症能怀孕吗  多囊卵巢综合症  囊卵巢综合症急性非淋巴白血病m2a这个病该如何治疗这个病该如何治疗  非淋  白血病


Single text

#include <fastMatch.h>
int main() { string disease_path = "data/disease.txt"; FastMatch fastMatch(disease_path); string query = "乙肝大三阳抗病毒治疗需要多长时间?"; // Single-pattern matching string pattern = "抗病毒治疗"; int pos = match(query, pattern); if (pos >= 0) cout << "Find pattern at position: " << pos << endl; // Multi-pattern matching auto result = fastMatch.parse(query); cout << "\nMulti-pattern matching result:\n"; for (int i = 0; i < result.size(); i++) cout << result[i].first << " " << result[i].second << endl; // Maximum forward matching word segmentation cout << "\nMaximum forward matching word segmentation result:\n"; auto words = fastMatch.maxForwardMatch(query); for (auto& word : words) cout << word << " "; cout << endl; return 0; }

运行 ./singleExample

fastMatch是基于MIT许可证的。

往期精彩回顾



  • 交流群

欢迎加入机器学习爱好者微信群一起和同行交流,目前有机器学习交流群、博士群、博士申报交流、CV、NLP等微信群,请扫描下面的微信号加群,备注:”昵称-学校/公司-研究方向“,例如:”张小明-浙大-CV“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~(也可以加入机器学习交流qq群772479961


相关推荐

  • 【Python】十大保姆级Python可视化绘制工具推荐~~
  • 【学术相关】带了不太聪明的研究生是一种什么体验?
  • 如何用 Nacos 构建服务网格生态
  • OLAP数仓入门:进阶篇
  • [开源]一个基于互联网技术架构实现的社区系统,支持一键源码部署
  • 读懂Redis源码,我总结了这7点心得
  • 多组学数据整合更精确,川大团队借助迁移学习揭示细胞异质性可用于改善数据整合
  • 幻觉降低30%!首个多模态大模型幻觉修正工作Woodpecker
  • 哈工大发布大模型思维链推理综述:200+文献全面解析大语言模型思维链推理最新进展
  • 1028.AI日报:AI创造了很大的价值,并不等于就能够形成有效的回报
  • 为什么 Node 里要用 Winston 打印日志?
  • offer 选择难?说说我的 2 个思考
  • 盘点JS中数组去重写法
  • 逃离国企,我好快乐!
  • Yarn 4.0正式发布,现代化的软件包管理器
  • 3202年了,为啥SSR并没有预想中的流行?
  • 大模型如何开启输入法的“iPhone时刻”?对话讯飞输入法总经理程坤
  • TF线下活动报名 | 11月4日,TF121邀您一起寻找企业数字化的第二曲线!
  • 最好7B模型再易主!打败700亿LLaMA2,苹果电脑就能跑|开源免费
  • 姚期智Hinton Bengio联名发文:18个月内AI规模将扩大100倍,得有人管管了