Ruby可以识别同一单词的不同拼写吗?

时间:2018-08-11 16:02:50

标签: ruby

在获取用户输入时,除了编写"gr*y"*之类的每个拼写之外,还有一种方法可以识别"grey"(其中"gray"字符无关紧要)在我的代码中?

2 个答案:

答案 0 :(得分:1)

这可以使用正则表达式来实现。不过,您可能可能不想匹配任何字符-它可能在此特定情况下有效,但可能会完全改变其他单词的含义。

例如,/gr(a|e)y/将同时匹配“灰色”和“灰色”。

如果您确实想匹配任何个字符,则可以使用一个范围,例如/gr[a-zA-Z]y/

这是Rubular上的一个有效示例。

也可能有一颗宝石包裹了所有这些常见的拼写。我建议在rubygems.org和ruby-toolbox.com上进行搜索。

答案 1 :(得分:1)

您要查找的术语称为fuzzy matchfuzzy search

我发现了3个库,它们提供了这样的功能:

您可以浏览每个文档的内容并做出决定,这对您而言更可取。我仅显示amatch的示例:

require 'amatch'
include Amatch

m = Levenshtein.new("grey")
m.match('gray') # 1
m.match('pray') # 2

它计算两个单词之间的Levenshtein距离:将一个单词转换为另一个单词所需的最小单字符编辑(插入,删除或替换)次数。因此,为了将graygrey个单词计数为相同,您需要将允许距离设置为1