迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Python 中的 Soundex

作者:迹忆客 最近更新:2023/06/13 浏览次数:

Python 的 soundex 函数是将文本字符串转换为 Soundex 代码的函数。 它有助于在数据库中索引名称或查找相似名称。

名字的 Soundex 代码是基于它的发音,而不是它的拼写。 它是比较发音不同但拼写准确的单词的便捷工具。

在数据库中搜索名称时很有用。


Python 中的 soundex 简介

soundex 函数是一种用于对字符串进行编码的简单语音算法。 该算法旨在生成类似于 Soundex 系统生成的代码。

该函数是用 Python 编写的,可以在任何 Python 项目中轻松实现。 soundex 函数将一个字符串作为输入,并根据该字符串的发音返回一个代码。

它根据每个单词的发音为每个单词分配一个代码,因此发音不同但具有相同代码的单词被认为是等效的。 在搜索可能拼写不同但发音相同的名称时,它会很有帮助。

当您比较发音不同但拼写完全相同的单词时,它会很有用。 例如,cat 和 bat 具有相同的 soundex 代码。


在 Python 中使用 soundex

Python 中的 soundex 函数将一个字符串作为输入,并输出一个代表该字符串声音的代码。 该代码基于字符串的发音,而不是拼写。

它有助于匹配发音不同但发音相同的名字。

soundex 过程是一种通过声音索引名称的方法。 它是一种简单的语音算法,用于按英语发音对单词进行索引。

目标是生成一个 Soundex 代码,在忽略拼写差异的同时捕获名称的基本发音。

要使用 soundex 功能,首先需要导入包含它的模块; 然后,您可以使用字符串作为参数调用该函数。 该函数将返回字符串的 Soundex 代码。

Soundex 代码是一个四位代码,用于表示姓名的发音。 该代码源自名字的第一个字母,后跟代表名字的三个辅音的三个数字。

该代码被设计为可发音的,因此具有相似发音的单词将具有相同的代码。

示例代码:

# First, we will create a Soundex generator function
def soundex_generator(token):

    # Now Convert the word to upper
    token = token.upper()
    soundex = ""

    # Will Retain the First Letter
    soundex += token[0]

    # Now, will Create a dictionary that maps
    # letters to respective Soundex
    # codes. Vowels and 'H', 'W' and
    # 'Y' will be represented by '.'

    dictionary = {"BFPV": "1", "CGJKQSXZ": "2",
                  "DT": "3",
                  "L": "4", "MN": "5", "R": "6",
                  "AEIOUHWY": "."}

    # Now encode as per the dictionary
    for char in token[1:]:
        for key in dictionary.keys():
            if char in key:
                code = dictionary[key]
                if code != '.':
                    if code != soundex[-1]:
                        soundex += code


    # Trim or Pad to make Soundex a
    # 7-character code
    soundex = soundex[:7].ljust(7, "0")
    return soundex

# driver code
print(soundex_generator('Thecodeishere'))

输出:

T232600

soundex 函数忽略的事情

soundex 过程忽略名称中的非字母字符,因此不考虑标点符号和空格。

此外,soundex 仅对姓氏的首字母(如果是辅音字母)进行编码,因此以元音字母开头的姓氏不进行编码。

最后,soundex 根据发音对名称进行编码,因此发音不同的同名变体(例如 Smith 和 Smyth)将具有不同的代码。


Python中soundex的规则

但是,Soundex 流程有几条规则。

  1. 首先,由于 soundex 代码是基于英语语音的,因此它不太适合为非英语语言的名称建立索引。
  2. 其次,给定名称的 soundex 代码可能会因使用的英语方言而异。 例如,姓名 Smith 在通用美国英语中编码为 S530,而在南方英语中编码为 S520。
  3. 第三,Soundex 过程有时会产生模棱两可的结果,尤其是当两个或多个名称具有相同的 soundex 代码时。 例如,Smith 和 Smythe 这两个名字都有 Soundex 代码 S530,这使得在使用基于 Soundex 的索引时很难找到特定的名字。
  4. 第四,Soundex 过程在索引发音与拼写不同的名称时不是很有效。 例如,名字 Stevenson 发音为 STEH-ven-son,但根据其拼写会被编码为 S315,这使得使用基于 Soundex 的索引时很难找到名字。

总的来说,Soundex 过程是一种简单而有效的通过声音索引名称的方法。 但是,它有几个使用时应考虑的限制。


总结

在总结 Python 中关于 soundex 的文章之前,我们讨论了 soundex 的工作原理和规则。 此外,我们还讨论了一个实际示例,演示了 soundex 在 Python 中的工作原理。

上一篇:Python 读取 Outlook 电子邮件

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Python 读取 Outlook 电子邮件

发布时间:2023/06/13 浏览次数:170 分类:Python

本文将讨论如何借助 win32com.client 模块从 outlook 应用程序读取电子邮件。 我们还学习了如何在 Python 中过滤具有不同属性的电子邮件。使用 win32com.client 模块从 Outlook 应用程序读取电子邮件

Python 多处理日志记录

发布时间:2023/06/13 浏览次数:150 分类:Python

本文将讨论 multiprocessing 的概念。 在此之后,我们将讨论 Python 中的多处理和使用 Python 代码进行多处理的日志处理。

Python multiprocessing 共享对象

发布时间:2023/06/13 浏览次数:81 分类:Python

在 Python 中,共享内存多处理由连接多个处理器组成,但这些处理器必须能够直接访问系统的主内存。 这将允许所有连接的处理器访问它们使用或创建的其他处理器数据。

在 Python Lambda 中使用 Await

发布时间:2023/06/13 浏览次数:143 分类:Python

在 Python 中,要实现异步编程,我们可以将 async/await 特性与函数一起使用,但我们使用 lambda 函数来实现。 本文将讨论在 Python lambda 函数中使用 await 的可能性。Python Lamda 中没有async/await lambda

Python Lambda 闭包

发布时间:2023/06/13 浏览次数:141 分类:Python

本篇文章将介绍在 Python 中使用 lambda 函数和闭包。在 Python 中使用 Lambda 函数的语法

Python 中的最长公共子序列

发布时间:2023/06/02 浏览次数:147 分类:Python

本篇文章讲介绍在 Python 中查找两个序列之间最长公共子序列的长度。使用 Naive 方法在 Python 中查找最长公共子序列;使用动态规划在 Python 中查找最长公共子序列

在 Python 请求中使用 Cookie

发布时间:2023/06/02 浏览次数:98 分类:Python

本篇文章介绍如何使用 requests.get() 借助 Python 中的 cookies 参数获取 cookies,以及如何访问需要登录的特定网页。

在 Python 中设置请求的最大重试次数

发布时间:2023/06/02 浏览次数:67 分类:Python

本教程描述了为什么我们会收到错误消息,指出超出了最大重试次数,以及我们如何在 Python 中为请求设置 max_retries。 如果服务器上的负载导致此错误,它还会为我们提供提示。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便