Questions tagged «string-matching»

字符串匹配是发现另一个字符串(“文本”,“干草堆”)中出现一个字符串(“模式”,“针”)的问题。





22
变长字符串的一种更好的相似度排序算法
我正在寻找一种字符串相似性算法,该算法在可变长度字符串上比通常建议的字符串(levenshtein距离,soundex等)产生更好的结果。 例如, 给定字符串A:“ Robert”, 然后字符串B:“艾米·罗伯逊” 会比这更好 字符串C:“理查德” 同样,最好该算法应该是语言不可知的(也可以使用英语以外的其他语言)。

2
Python中的高性能模糊字符串比较,使用Levenshtein或difflib
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 改善这个问题 我正在进行临床消息标准化(拼写检查),其中我对照900,000个单词的医学词典检查每个给定的单词。我更关心时间的复杂性/性能。 我想进行模糊字符串比较,但是不确定使用哪个库。 选项1: import Levenshtein Levenshtein.ratio('hello world', 'hello') Result: 0.625 选项2: import difflib difflib.SequenceMatcher(None, 'hello world', 'hello').ratio() Result: 0.625 在此示例中,两者给出相同的答案。您是否认为在这种情况下两者表现都一样?



10
合理的JavaScript模糊搜索
我正在寻找一个模糊搜索JavaScript库来过滤数组。我尝试使用Fuzzyset.js和fuse.js,但是结果很糟糕(可以在链接的页面上尝试一些演示)。 在对Levenshtein距离进行了一些阅读之后,我对用户输入时所寻找的内容的近似性感到不满意。对于那些不知道的人,系统会计算要使两个字符串匹配,需要多少个插入,删除和替换。 在Levenshtein-Demerau模型中修复的一个明显缺陷是,blub和boob都被认为与bulb相似(都需要两次替换)。很明显,但是,灯泡更类似于咕噜比布布是的,我刚才提到的模型识别到,允许换位。 我想在文本补全的背景下使用它,因此,如果我有一个数组['international', 'splint', 'tinder'],并且我的查询是int,我认为International应该比splint排名更高,即使前者的得分(高=差)为10与后者的3。 因此,我正在寻找(并且如果不存在的话将创建)一个执行以下操作的库: 权衡不同的文本操作 根据每个单词在单词中出现的位置,对每个操作进行加权加权(较早的操作比较晚的操作成本更高) 返回按相关性排序的结果列表 有没有人遇到过这样的事情?我意识到,StackOverflow并不是要求软件推荐的地方,但是上面的隐式(不再是!)是:我是否正在以正确的方式考虑? 编辑 我找到了一篇很好的论文(pdf)。一些注释和摘录: 仿射编辑距离功能为插入或删除序列分配了相对较低的开销 Monger-Elkan距离函数(Monge&Elkan 1996),它是Smith-Waterman距离函数(Durban et al。1998)的仿射变体,具有特定的成本参数 对于史密斯-沃特曼距离(Wikipedia),“史密斯-沃特曼算法无需查看总序列,而是比较所有可能长度的片段并优化相似性度量。” 这是n-gram方法。 大致上类似的度量标准(不是基于编辑距离模型)是Jaro度量标准(Jaro 1995; 1989; Winkler 1999)。在记录链接文献中,使用此方法的变体已获得了良好的结果,该变体基于两个字符串之间的公共字符的数量和顺序。 由于Winkler(1999)的不同,它也使用最长公共前缀的长度P (似乎主要用于短字符串) 为了完成文本,Monger-Elkan和Jaro-Winkler方法似乎最有意义。Winkler对Jaro度量标准的添加有效地对单词的开头进行了更重的加权。而且,Monger-Elkan的仿射方面意味着完成一个单词的必要性(这只是一系列加法)不会太不利于它。 结论: TFIDF排名在几个基于令牌的距离度量中表现最好,而Monge和Elkan提出的经过调整的仿射间隔编辑距离度量在几个字符串编辑距离度量中表现最好。令人惊讶的良好距离度量是Jaro提出并随后由Winkler扩展的快速启发式方案。这几乎和Monge-Elkan方案一样有效,但是速度要快一个数量级。结合TFIDF方法和Jaro-Winkler的一种简单方法是用基于Jaro-Winkler方案的近似令牌匹配替换TFIDF中使用的精确令牌匹配。平均而言,此组合的性能比Jaro-Winkler或TFIDF都要好,偶尔也要好得多。在性能上也接近本文所考虑的几种最佳指标的学习组合。

14
正则表达式匹配以测试有效年份
给定一个值,我想验证它是否是有效的年份。我的标准很简单,其中值应为带4字符的整数。我知道这不是最好的解决方案,因为它不会允许几年以前的时间,1000而且会允许诸如此类的时间5000。这个标准足以满足我目前的情况。 我想出的是 \d{4}$ 尽管这可行,但它也允许负值。 如何确保只允许使用正整数?

4
在dplyr中的字符串列上过滤多个值
我data.frame在其中一列中有一个字符数据。我想data.frame从同一列中过滤多个选项。有没有一种简单的方法可以做到这一点,而我却缺少了? 示例: data.frame名称=dat days name 88 Lynn 11 Tom 2 Chris 5 Lisa 22 Kyla 1 Tom 222 Lynn 2 Lynn 我想筛选出Tom与Lynn例如。 当我做: target <- c("Tom", "Lynn") filt <- filter(dat, name == target) 我收到此错误: longer object length is not a multiple of shorter object length
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.