ruby - Ruby 可以识别同一个单词的不同拼写吗?
问题描述
在获取用户输入时,除了在我的代码中编写每个拼写,还有其他方法可以识别"gr*y"
(*
字符无关紧要)吗?"grey"
"gray"
解决方案
您要查找的术语称为fuzzy match
or fuzzy search
。
我找到了 3 个库,它们提供了这样的功能:
- https://github.com/seamusabshere/fuzzy_match
- https://github.com/kiyoka/fuzzy-string-match
- https://github.com/flori/amatch
您可以查看他们每个人的文档并决定,这对您来说更可取。我只是展示以下示例amatch
:
require 'amatch'
include Amatch
m = Levenshtein.new("grey")
m.match('gray') # 1
m.match('pray') # 2
它计算两个单词之间的 Levenshtein 距离:将一个单词更改为另一个单词所需的单字符编辑(插入、删除或替换)的最小数量。因此,为了计数gray
和grey
单词相同,您需要将允许距离设置为1
。
推荐阅读
- android - 在通话期间,是否有一种官方的、受数据保护的方式来显示当前电话应用程序的来电显示信息?
- python - Python For 循环打印语句
- arrays - 如何为我的蛇的数组 x 和 y 设置吸气剂?
- vue.js - 从另一个模块访问状态
- object - 在QGIS中组合相交的多边形
- react-native - React Native Async 操作与 ProgressDialog 作为一个功能
- c - 搜索二维数组时出现分段错误(核心转储)错误
- postgresql - 加入 PostgreSQL 的 IF 语句
- google-picker - 是否可以在文档搜索视图中显示文件父共享驱动器或文件夹路径?
- python-3.x - 如何在 sklearn 管道中调整 RobustScaler 中的 quantile_range?