考虑到您正在尝试对学校名称列表进行模糊搜索,因此我认为您不希望使用Levenshtein距离之类的传统字符串相似性。 我的假设是,您正在接受用户的输入(键盘输入或通过电话说出),并且想要快速找到匹配的学校。

距离量度告诉您两个字符串基于替换,删除和插入的相似程度。 但是这些算法并没有真正告诉您有关字符串与人类语言中单词的相似程度的任何信息。

例如,考虑单词“ smith”,“ smythe”和“ smote”。 我可以通过两个步骤从“ smythe”转到“ smith”:

smythe -> smithe -> smith

从“骗子”到“史密斯”分两个步骤:

smote -> smite -> smith

因此,两者与字符串的距离相同,但作为单词的距离却明显不同。 如果有人(说语言)告诉您他正在寻找“ Symthe College”,那么您几乎可以肯定地说:“哦,我想您是说史密斯。” 但是,如果有人说“ Smote College”,那么您根本不知道他在说什么。

您需要的是像Soundex或Metaphone这样的语音算法。 基本上,这些算法将一个单词分解为音素,并表示该单词在口语中的发音方式。 然后,您可以将结果与已知单词列表进行比较以找到匹配项。

这样的系统比使用距离度量要快得多。 考虑到使用距离量度,您需要将用户输入的内容与列表中的每个单词进行比较以获得距离。 这在计算上是昂贵的,而且正如我用“史密斯”和“傻子”所演示的那样,结果可能很糟糕。

使用语音算法,您可以创建每个已知单词的音素表示,并将其放置在字典中(哈希图或trie)。 这是一次性的启动成本。 然后,每当用户输入搜索词时,您就创建其输入的音素表示并在字典中查找。 这样快得多,并且产生更好的结果。

还要考虑一下,当人们拼错专有名称时,他们几乎总是会正确输入第一个字母,并且更多时候会发出拼错的声音,就像他们想拼写的实际单词一样。 如果真是这样,那么语音算法无疑是正确的选择。

c++ 模糊搜索 正则表达式_模糊搜索算法(近似字符串匹配算法)相关推荐

  1. java 字符串匹配_多模字符串匹配算法原理及Java实现代码

    多模字符串匹配算法在这里指的是在一个字符串中寻找多个模式字符字串的问题.一般来说,给出一个长字符串和很多短模式字符串,如何最快最省的求出哪些模式字符串出现在长字符串中是我们所要思考的.该算法广泛应用于 ...

  2. java正则表达式获取指定两个字符串之间内容

    xml解析利用正则表达式获取指定两个字符串之间内容 在遇到解析复杂xml的时候,想到大家所想到的都是利用dom4j作为首发工具,但是当遇到层次很多,较为复杂,我们难道还需要从根节点一层一层的解析下去吗 ...

  3. 所有字符不含换行 正则表达式_网络爬虫 | 正则表达式

    正则表达式中匹配与查找 正则表达式,简称为regex,是文本模式的描述方法. >>> import re>>> pattern = re.compile('\d\d ...

  4. 正则表达式匹配不包含特定字符串解决匹配溢出问题

    匹配溢出问题在正则表达式当中算是比较常见的问题,它常常导致我们匹配结果莫名其妙的出错,本文专门为你讲解如何通过匹配不包含特定字符串的方法来解决这类问题. 那么,什么是匹配溢出呢? 下面我们来看个例子: ...

  5. java正则表达式 ascii,是否可以检查字符串是否在Java中仅包含ASCII?

    使用正则表达式 您可以使用以下正则表达式查找特定的String值是否包含ASCII字符-\\A\\p{ASCII}*\\z String类的matches()方法接受正则表达式,并验证当前字符串是否与 ...

  6. c++ 模糊搜索 正则表达式_c++使用正则表达式提取关键字的方法

    下面看下c++通过正则表达式提取关键字,代码如下所示: string text = "岳云鹏的对象叫铁锤"; regex pattern("(.*)的对象叫(.*)&qu ...

  7. c# 用正则表达式获取开始和结束字符串中间的值

    c# 用正则表达式获取开始和结束字符串中间的值 /// <summary> /// 获得字符串中开始和结束字符串中间得值 /// </summary> /// <para ...

  8. 21天Jmeter打卡Day17 后置处理器_JSON_正则表达式_边界提取器_完成删除场景模拟测试

    1天Jmeter打卡Day17 后置处理器_JSON_正则表达式_边界提取器_完成删除场景模拟测试 https://www.jianshu.com/p/5c1d64e5d724 Json提取器见Day ...

  9. MySQL基础_模糊查询—between and in is null <=>(安全等于)等关建字

    文章目录 MySQL基础_模糊查询-in关键字 MySQL基础_模糊查询-is null关键字 MySQL基础_[补充]安全等于的介绍 eg: select * from table where 字段 ...

最新文章

  1. HTTP的KeepAlive是开启还是关闭?
  2. C# static的用法详解
  3. C# WinForm编程之System.Windows.Forms.DataGridViewRow.DataBoundItem Property
  4. halcon学习笔记——(1)单摄像机标定
  5. 让NVIDIA Jetson AGX Xavier火力全开的秘密
  6. openssh升级sftp_CentOS6.5升级OpenSSH 8.3版本
  7. 【一起去大厂系列】针对left join以及limit的两条优化小技巧
  8. php 消息队列_消息队列篇——windows本地搭建RabbitMQ Server
  9. linux怎么执行frida脚本,Frida使用和Hook代码整理
  10. fadein和fadeto_jQuery fadeIn,fadeOut,fadeTo
  11. AI圣经《深度学习》作者斩获2018年图灵奖,100 万奖励!
  12. dtft性质及证明_数字信号处理1 时域分析和DTFT.pptx
  13. TMC8670 – 集成EtherCAT通讯和FOC伺服运动控制芯片适用2/3相永磁同步电机
  14. finecms V5 会员头像任意文件上传漏洞 附修复代码
  15. matlab多元回归模型分析,matlab多元回归工具箱 Excel数据分析工具进行多元回归分析.doc...
  16. fifa11键盘按键_FIFA 20 Player集群
  17. JAVAWEB之JSTL标签
  18. 同源策略的限制,没有同源策略会怎么样?
  19. [OpenGL] shadow mapping(实时阴影映射)
  20. 2010年第五届站长大会现场视频直播

热门文章

  1. 会声会影试用版到期了怎么办_corel 会声会影2018试用版如何卸载?
  2. 互联网日报 | 7月1日 星期四 | 滴滴正式登陆纽交所;奈雪的茶上市首日破发;2021年铁路暑运今日正式启动...
  3. 【音频处理】音高 与 频率 对照表 ( 音符频率算法 )
  4. 《数据库系统概念》学习笔记——恢复系统
  5. flink-cdc 使用
  6. 自学c程序设计之路,谭浩强第五版,(一)程序设计与c语言
  7. 半自动化批量下载专利全文pdf傻瓜攻略
  8. 运营技巧|APP如何提升用户粘性与用户留存率
  9. Android onTouch事件传递机制
  10. Mac上Unity打ab包报错 Moving file failed. … No Such file or director