惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Hacker News
The Hacker News
博客园_首页
人人都是产品经理
人人都是产品经理
博客园 - 聂微东
J
Java Code Geeks
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
博客园 - 三生石上(FineUI控件)
A
About on SuperTechFans
V
Visual Studio Blog
小众软件
小众软件
MyScale Blog
MyScale Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
F
Full Disclosure
酷 壳 – CoolShell
酷 壳 – CoolShell
T
The Exploit Database - CXSecurity.com
C
CERT Recently Published Vulnerability Notes
T
Threat Research - Cisco Blogs
AWS News Blog
AWS News Blog
T
Tor Project blog
Jina AI
Jina AI
GbyAI
GbyAI
C
Comments on: Blog
IT之家
IT之家
Apple Machine Learning Research
Apple Machine Learning Research
A
Arctic Wolf
有赞技术团队
有赞技术团队
SecWiki News
SecWiki News
L
Lohrmann on Cybersecurity
Security Latest
Security Latest
Webroot Blog
Webroot Blog
C
Cisco Blogs
雷峰网
雷峰网
云风的 BLOG
云风的 BLOG
博客园 - 叶小钗
K
Kaspersky official blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
宝玉的分享
宝玉的分享
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
O
OpenAI News
H
Hacker News: Front Page
D
Darknet – Hacking Tools, Hacker News & Cyber Security
D
Docker
P
Palo Alto Networks Blog
The Register - Security
The Register - Security
B
Blog RSS Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
WordPress大学
WordPress大学
阮一峰的网络日志
阮一峰的网络日志

博客园 - DotCat

幽默的David Solomon MSDN上ReportViewer的两个代码下载地址 .NET threading in C# Training Highlights sharing Converting RDL and RDLC Files VS打SP1后reportviewer用custom assembly的变化 Meet 牛人 @ April: Jeffrey Richter & David Solomon 当你聊天你会想起谁--Vista Sidebar Gadget DIY 哈,IE7!--dudu的CNBlogs DotText 1.0 Beta 2中FreeTextBox对IE7的不兼容性 CCS bug之8: 有关设置精华帖的操作在帖子的操作历史里浏览出错 CCS bug之7: 设置精华帖后在精华区不能看到 [CodeProject每日一荐]实现Double Metaphone语音匹配算法[三,四] VBScript调用COM;存储过程实现及高级话题 MSN和Windows Live Messenger机器人大赛 [CodeProject每日一荐]实现Double Metaphone语音匹配算法[二]:Visual Basic的COM实现和关系数据库解决方案 [CodeProject每日一荐] 基于xml的在线选择题小测试(调查问卷) 解决问题: .Net异常 Method not found: Void System.Web.UI.WebControls.BaseDataList.set_Caption(System.String). 解决问题: sql server 2000 企业管理器打不开了 推荐解除文件锁定软件: unlocker CuteChat3.0 (for CommunityServer2.0) 发布了 CommunityServer 2.1 的消息
[CodeProject每日一荐]实现Double Metaphone语音匹配算法[一]:介绍与C++实现
DotCat · 2006-06-02 · via 博客园 - DotCat

Implement Phonetic ("Sounds-like") Name Searches with Double Metaphone Part I: Introduction & C++ Implementation By Adam Nelson 
最大的特色是作者用C++, COM (Visual Basic等), 脚本 (VBScript, JScript, ASP), SQL, and .NET (C#, VB.NET 和其他.NET 语言)分别实现了经典Double Metaphone算法.还提供了Lawrence Phillips原有的实现源码(译者:文中最上面的链接已失效,可在此找到ftp://ftp.cuj.com/pub/2000/cujjun2000.zip).

[摘要]
用语音搜索信息时,有时候不总是能精确匹配,这时需要匹配发音近似的词.本系列讨论Lawrence Phillips的Double Metaphone语音匹配算法,来实现这一点,可在其他很多解决方案中应用

[介绍]
做语音匹配算法的很多,最古老,也许同时是最有名的是20世纪早期的专利: 用于打孔机的Soundex 算法, Soundex根据简单的计算产生一个key,用来表达原始单词(至少是单词的第一部分).Soundex简单而快速,但效果也比较差.1990年Lawrence Phillips在Computer Language 杂志发表了Metaphone算法,将一些英语拼写规则纳入考虑,产生了更可信的key.作为Soundex 的改进,Metaphone算法仍不能处理一些明显同音的词,如"Bryan" 和 "Brian".最后,2000年,Lawrence Phillips在C/C++ User’s Journal上发表了Double Metaphone算法,引入了其他推断来改进Metaphone的弱点,产生了第二个(替代的)key,用来表示单词的原始发音(较之美语的外来语发音).有了这些改进,Double Metaphone算法已满足大多数语音匹配实用需求.

第一部分介绍了 Double Metaphone和 C++ 实现. 第二部分用Visual Basic写COM实现.第三部分用ASP和 VBScript写COM实现,第四部分用Sql Server中扩展存储过程实现. 第五部分用.NET实现. 第六部分介绍了语音匹配的替代方案和其他资源.

[背景]
Phillips的原有 Double Metaphone 实现,使用了MFC string的一个子类MString.对一个单词调用DoubleMetaphone 方法后,会产生两个key,主key表示美语中的发音,次key表示外来语或姓名等的原始发音(可能为空).Metaphone key有4个字母(对短单词只有3个字母),主要描述单词前面的部分的发音,这个"神奇的长度"是个匹配的错误率和相关性之间的很好折衷.比较两个单词时,主key相等则为强匹配,主key与次key相等则为一般匹配,只有次key相等则为弱匹配.

[改进实现]
作者的C++实现用C++的模板实现,带一个长度参数,允许程序员控制产生key的长度,实践证明,4是个最好的长度.改进包括
(1)不基于MFC.不依赖于windows的任何元素,可用于支持模板的编译器
(2)不继承于string,而采用了Metaphone key类
(3)实现了Metaphone key类== 和 != 操作符
(4)比原来的实现快了约2倍

略...

[Unsigned Short改进]
Phillips提出了可用Unsigned Short代替string来保存ke以提高效率,但未实现,作者进行了实现.