如何识别类似的话,在拼写上的差别如何识别类似的话,在拼写上的差别(how to recognize

2019-05-12 10:29发布

我想从数据库中筛选出重复的客户名称。 一个客户可能有不止一个进入该系统具有相同的名称,但在拼写差异不大。 所以这里有一个例子:一个名为布鲁克客户可以有三个条目与这个变化的系统:

  1. 布鲁克伯塔
  2. 布鲁克伯塔
  3. Biruk伯塔

假设我们在一个数据库列把这个名字。 我想知道不同的机制来识别这种重复形成说10万分的记录。 我们可以使用正则表达式在C#中通过的所有记录或其他一些模式匹配技术进行迭代,我们也可能这些记录导出到此类查询什么都最适合(SQL正则表达式的能力))。

这是我认为是一个解决方案

  • 写C#代码通过记录每个迭代
  • 获取只有辅音字母排序(在上述情况下:BrKBrt)
  • 搜索从考虑发音相似的字母像(C,K)(C,S)其他记录相同的辅音模式,(F,PH)

所以,请转发任何想法。

Answer 1:

该双音位算法,发表于2000年,是在1918年获得专利Soundex算法的一个新的和改进的版本。

文章在许多语言中的链接双音位实现。



Answer 2:

看一看探测法

有在Transact-SQL(见探测法功能http://msdn.microsoft.com/en-us/library/ms187384.aspx ):

SELECT 
SOUNDEX('brook berta'),
SOUNDEX('Bruck Berta'),
SOUNDEX('Biruk Berta')

返回相同的值B620对于每个示例值



Answer 3:

查找字符串相似性显而易见,建立(有据可查)算法是:

  • 编辑距离
  • 探测法


Answer 4:

我会考虑写东西,如“著名的”蟒蛇拼写检查器。

http://norvig.com/spell-correct.html

这将需要一个单词,并寻找基于丢失的信件所有可能的选择,添加字母,交换信函等



Answer 5:

你可能想谷歌的phonetic similarity algorithm ,你会发现很多这方面的信息。 包括此文章CodeProject上关于实现在C#中的解决方案。



Answer 6:

考虑同音。 这是一个在大多数语言中一个相当标准库已经做了你需要的东西,即算法识别语音相似。 http://en.wikipedia.org/wiki/Soundex



Answer 7:

有一个非常漂亮的R(只要搜索“R”在谷歌)包记录链接。 该标准针对的例子恰好您的问题: [R RecordLinkage

在C-代码探测法等直接取自PostgreSQL的!



Answer 8:

我会建议探测法和派生的算法在列弗距离该解决方案。 编辑距离更适合拼写检查解决方案恕我直言。



文章来源: how to recognize similar words with difference in spelling