在单词数组中查找相似的单词
Find similar words in array of words
这些天我用谷歌搜索,但没有任何帮助。我现在不确定它是否可能,所以我想我只是在堆栈溢出时。
情况:用户可以输入单词或在输入框中输入。当他完成一个函数时,检查单词是否在单词数组中 - 很容易。现在我想写一个帮助,如果缺少一个字母或字母写错了,应该弹出一条消息。
要搜索的密钥是什么?我试过了:
- JavaScript 在数组中查找字符串
- JavaScript 在数组中查找相似的单词
- JavaScript正则表达式相似词
- 。等等
我希望你明白我的意思,并可以给我一些提示。
Levenshtein 距离是计算相似单词之间距离的度量。对于每个更改,随机或丢失的字母,距离都会增加。您可以在此处阅读更多内容:http://en.wikipedia.org/wiki/Levenshtein_distance
并在此处参考不同语言的实现:http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance
我希望这有所帮助,并感谢您的评论投票;)
有关检查单词之间相似性的算法,请参阅此处。
使用那里的代码,您可以使用array.any?{|e| e.similar?(user_input)}
您可以根据需要调整阈值。当然,这是Ruby,所以你必须翻译成javascript...
我从那里复制了代码:
class String
def levenstein(other, ins=2, del=1, sub=1)
return nil if self.nil? || other.nil?
dm = []
dm[0] = (0..self.length).collect { |i| i * ins}
fill = [0] * (self.length - 1)
for i in 1..other.length
dm[i] = [i * del, fill.flatten]
end
for i in 1..other.length
for j in 1..self.length
dm[i][j] = [
dm[i-1][j-1] + (self[i-1] == other[i-1] ? 0 : sub),
dm[i][j-1] + ins,
dm[i-1][j] + del
].min
end
end
dm[other.length][self.length]
end
def similar?(other, thresh = 2)
self.levenstein(other) < thresh
end
end
# Tryout
"Foobar".similar?("Fuubar", 3) # => true
相关文章:
- 当鼠标悬停在文本中的单词上时显示警报
- 匹配一个单词,其中候选人可以跨越顺序组(跨度)
- 如何使用jquery强制一个单词更改大小写等以保留品牌
- 拆分单词jquery
- 如何让程序检查所选单词中是否有按键
- 如何在悬停时流畅地更改单词
- EmberJS中支持单字母单词模型
- 字母计数:返回重复字母数最多的第一个单词
- 如何在Javascript中从字符串中提取某些单词
- 如何创建一个“;表单弹出框“;在chrome中右键单击时位于突出显示的单词上方
- 在javascript中查找单词
- 我如何制作一个JS函数,它可以从相似的原始颜色双向更改为某个颜色
- 使用jQuery检查提交时添加到句子中的单词
- 如何在PHP中获取特定的字符串单词
- 停止较大单词的重叠
- 如何在没有单词的情况下从命令行运行Node.js程序'节点'
- 用于匹配不带字符的单词的正则表达式
- 从输入值中删除最后一个单词
- 如何使用Javascript在给定的句子中找到大写单词并在其前面添加一个字符
- 在单词数组中查找相似的单词