问题标签 [soundex]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1460 浏览

python - 可以对这个 soundex 编码使用一些帮助

美国人口普查局使用一种称为“soundex”的特殊编码来定位有关个人的信息。soundex 是一种基于姓氏发音方式而不是拼写方式的姓氏(姓氏)编码。听起来相同但拼写不同的姓氏,如 SMITH 和 SMYTH,具有相同的代码并一起归档。soundex 编码系统的开发是为了让您可以找到一个姓氏,即使它可能是用各种拼写记录的。

在本实验中,您将设计、编码和记录一个程序,该程序在输入姓氏时会生成 soundex 代码。系统将提示用户输入姓氏,程序应输出相应的代码。

基本 Soundex 编码规则

姓氏的每个 soundex 编码都由一个字母和三个数字组成。使用的字母始终是姓氏的第一个字母。根据下面显示的 soundex 指南,将数字分配给姓氏的其余字母。如有必要,在末尾添加零以始终生成四字符代码。忽略其他字母。

Soundex 编码指南

Soundex 为各种辅音分配一个编号。发音相似的辅音被分配相同的数字:

数字辅音

1 B、F、P、V 2 C、G、J、K、Q、S、X、Z 3 D、T 4 L 5 M、N 6 R

Soundex 忽略字母 A、E、I、O、U、H、W 和 Y。

遵循 3 个额外的 Soundex 编码规则。一个好的程序设计会将这些实现为一个或多个单独的功能。

规则 1. 双字母的名字

如果姓氏有任何双字母,则应将其视为一个字母。例如:

  • Gutierrez 的编码是 G362(G,3 代表 T,6 代表第一个 R,第二个 R 被忽略,2 代表 Z)。

规则 2. 具有相同 Soundex 代码编号的并排字母名称

如果姓氏在 soundex 编码指南中并排有不同的字母且具有相同的数字,则应将它们视为一个字母。例子:

  • Pfister 编码为 P236(P,F 被忽略,因为它被认为与 P 相同,S 为 2,T 为 3,R 为 6)。

  • Jackson 编码为 J250(J,C 为 2,K 与 C 相同忽略,S 与 C 相同忽略,N 为 5,添加 0)。

规则 3. 辅音分隔符

3.a. 如果元音 (A, E, I, O, U) 分隔两个具有相同 soundex 代码的辅音,则元音右侧的辅音被编码。例子:

  • Tymczak 编码为 T-522(T,5 代表 M,2 代表 C,Z 被忽略(参见上面的“并排”规则),2 代表 K)。由于元音“A”将 Z 和 K 分开,因此 K 被编码。

3.b。如果 "H" 或 "W" 分隔两个具有相同 soundex 代码的辅音,则右侧的辅音不被编码。例子:

*Ashcraft 编码为 A261(A,S 为 2,C 被忽略,因为与 S 相同,中间有 H,R 为 6,F 为 1)。它没有编码 A226。

到目前为止,这是我的代码:

该代码足以满足其要求,我只是不确定如何编写这三个规则。那就是我需要帮助的地方。因此,任何帮助表示赞赏。

0 投票
5 回答
6929 浏览

ms-access - 在 VBA 中查找相似的发音文本

我的经理告诉我,有一种方法可以评估拼写不同但发音相似的名称。理想情况下,我们希望能够评估用户输入的搜索名称并返回完全匹配以及“听起来相似”的名称。他称这个过程为“声音”,但我在谷歌上找不到任何信息。

这存在吗?有谁知道它是否可用于 VBA(访问)?

0 投票
3 回答
3871 浏览

python - Python 中的 Soundex 算法(作业帮助请求)

美国人口普查局使用一种称为“soundex”的特殊编码来定位有关个人的信息。soundex 是一种基于姓氏发音方式而不是拼写方式的姓氏(姓氏)编码。听起来相同但拼写不同的姓氏,如 SMITH 和 SMYTH,具有相同的代码并一起归档。soundex 编码系统的开发是为了让您可以找到一个姓氏,即使它可能是用各种拼写记录的。

在本实验中,您将设计、编码和记录一个程序,该程序在输入姓氏时会生成 soundex 代码。系统将提示用户输入姓氏,程序应输出相应的代码。

基本 Soundex 编码规则

姓氏的每个 soundex 编码都由一个字母和三个数字组成。使用的字母始终是姓氏的第一个字母。根据下面显示的 soundex 指南,将数字分配给姓氏的其余字母。如有必要,在末尾添加零以始终生成四字符代码。忽略其他字母。

Soundex 编码指南

Soundex 为各种辅音分配一个编号。发音相似的辅音被分配相同的数字:

数字辅音

1 B、F、P、V 2 C、G、J、K、Q、S、X、Z 3 D、T 4 L 5 M、N 6 R

Soundex 忽略字母 A、E、I、O、U、H、W 和 Y。

遵循 3 个额外的 Soundex 编码规则。一个好的程序设计会将这些实现为一个或多个单独的功能。

规则 1. 双字母的名字

如果姓氏有任何双字母,则应将其视为一个字母。例如:

Gutierrez 的编码是 G362(G,3 代表 T,6 代表第一个 R,第二个 R 被忽略,2 代表 Z)。规则 2. 具有相同 Soundex 代码编号的并排字母名称

如果姓氏在 soundex 编码指南中并排有不同的字母且具有相同的数字,则应将它们视为一个字母。例子:

Pfister 编码为 P236(P,F 被忽略,因为它被认为与 P 相同,S 为 2,T 为 3,R 为 6)。

Jackson 编码为 J250(J,C 为 2,K 与 C 相同忽略,S 与 C 相同忽略,N 为 5,添加 0)。

规则 3. 辅音分隔符

3.a. 如果元音 (A, E, I, O, U) 分隔两个具有相同 soundex 代码的辅音,则元音右侧的辅音被编码。例子:

Tymczak 编码为 T-522(T,5 代表 M,2 代表 C,Z 被忽略(参见上面的“并排”规则),2 代表 K)。由于元音“A”将 Z 和 K 分开,因此 K 被编码。3.b。如果 "H" 或 "W" 分隔两个具有相同 soundex 代码的辅音,则右侧的辅音不被编码。例子:

*Ashcraft 编码为 A261(A,S 为 2,C 被忽略,因为与 S 相同,中间有 H,R 为 6,F 为 1)。它没有编码 A226。

到目前为止,这是我的代码:

足以满足要求,我只是不确定如何编写这三个规则。那就是我需要帮助的地方。因此,任何帮助表示赞赏。

0 投票
1 回答
1172 浏览

soundex - 是否有用荷兰语实现的“Sounds-Like”字符串匹配算法?

我知道用于英语中“类似声音”的字符串匹配的 Soundex 和 Double-Methaphone 算法。我在哪里可以找到类似的算法,或荷兰语算法之一的端口?

0 投票
2 回答
12818 浏览

php - PHP/MySQL:突出显示“SOUNDS LIKE”查询结果

快速 MYSQL/PHP 问题。如果使用普通搜索查询未找到任何结果,我将使用“不那么严格”的搜索查询作为后备,以调整:

现在,我使用 PHP 来突出显示结果,例如:

但是当我不知道要突出什么时,这种方法就会失败。有什么方法可以在运行该 mysql 查询时找出“声音相似”匹配是什么?

也就是说,如果有人搜索“Joan”,我希望它改为突出显示“John”。

0 投票
5 回答
28502 浏览

sql - 在 SQL Server 上逐字使用 SOUNDEX()

这是我的问题。例如,我有一个表Products,其中包含一个字段Name

我目前正在为 iPhone 网络应用程序实现一个简单的搜索引擎(SQL Server 和 ASP .NET、C#),我想使用SOUNDEX()SQL Server 函数。

问题是,我不能直接SOUNDEXName字段上使用。(这将无关紧要,因为名称中有几个单词。)我想将该函数应用于名称SOUNDEX字段中的每个单词,然后查看其中是否有任何与研究的关键字匹配。

如果有人知道如何做到这一点,那就太棒了。

0 投票
1 回答
243 浏览

php - 尝试在查询中使用 SOUNDEX,但在 mysql 中的数据库列方面出现错误

试图弄清楚出了什么问题,一定是一种愚蠢的语法。

我得到的错误是:

MySqli 错误:“字段列表”中的未知列“sndx”异常类型:QMySqliDatabaseException

没有 sndx 列。目的是使用 SOUNDEX... 匹配帐户中的值。

0 投票
1 回答
2586 浏览

sql - 优化 Soundex 查询以查找相似名称

我的应用程序将为“听起来像”给定类型名称的英文名称提供建议列表。

查询将需要优化并尽快返回结果。哪个选项最适合快速返回结果。(或者你自己的建议,如果你有的话)

A. 生成 Soundex 哈希并将其存储在“名称”表中,然后执行以下操作:(这样可以节省每次查询至少为我的数据库中的每一行生成 soundex 哈希,对吗?)

从 NameSoundex = Soundex('Ann') 的名称中选择名称

B. 使用差异函数(这必须为表中的每个名称生成 soundex?)

从差异(名称,'Ann')> = 3的名称中选择名称

C. 简单比较

从名称中选择名称其中 Soundex(name) = Soundex('Ann')

  • 选项 A 在我看来是最快的返回结果,因为它只为一个字符串生成 Soundex,然后与索引列“NameSoundex”进行比较

  • 选项 B 应该比选项 A 提供更多结果,因为名称不必与 soundex 完全匹配,但可能会更慢

  • 假设我的表可以包含数百万行,什么会产生最好的结果?

0 投票
6 回答
7252 浏览

sql - LINQ to SQL SOUNDEX - 可能吗?

我对此进行了一些研究,并浏览了 StackOverflow 上的一些文章以及一些博客文章,但还没有找到确切的答案。我还读到使用 4.0 框架可以做到这一点,但还没有找到任何支持证据。

所以我的问题是,是否可以通过 LINQ to SQL 查询执行 SOUNDEX?

0 投票
3 回答
421 浏览

sql - 在 Mysql 中查找相似行的建议

我想根据行的标题列选择相似的行。标题列大多有 5 或 6 个六个关键字。你推荐哪种算法?Soundex 也许?

PS:标题列具有 unicode 字符,例如Ç,Ö,Ş...