用声音构建快速拼写检查器
目录
引言
大家好!很高兴能在今天来到莫斯科,和大家探讨如何构建有效的近似搜索和拼写检查技术。在开始之前,我先简单介绍一下我自己。我叫林,之前在纽约大学攻读本科学位,专注于自然语言处理,尤其是多语言和音标技术。我曾在Facebook和Palantir等公司实习,并现在伦敦工作,是一家名叫Eden Tour的人工智能初创公司的首席工程师之一。我们正在开发一个虚拟营销助手,可以通过Slack与用户进行自然对话。用户可以向该助手提问,比如询问自己在法国和俄罗斯的广告效果如何,以及本周与上个月相比有什么不同,还可以让它监控广告活动并告知是否有任何变化,甚至预测未来一周的情况。我们正在解决各种有趣的机器学习、自然语言处理和数据科学问题,其中一个有趣的问题就是模糊搜索,而本次演讲的题目可以翻译为“我们能在仅使用30行Python代码的情况下构建一个强大的搜索引擎吗?”接下来,我们将看看能够在多大程度上实现这一目标。
语音搜索和拼写检查的重要性
拼写非常困难,无论你是谁,受过多高的教育,当我们面对一个文本框时,用户总会犯很多错误。那么为什么拼写错误对于工程师和产品设计师来说非常致命呢?因为一个中心思想的拼写错误会导致产品的失败,会破坏你的产品。我们都有过这样的经历,比如你和朋友约好在一家餐厅见面,然后你想将餐厅的名字输入到Google地图或Yelp中,却不小心拼写错误。特别是在如今的时代,如果你去类似旧金山这样的地方,那里的一些商店的拼写可能非常时尚,比如他们可能用K拼写咖啡,你知道它如何拼写,但你输入时略有差错,或者你在会议上遇到了一个朋友,你记得他的名字是Natalia或Natalie之类的,然后你试了三四五种不同的拼写方式,直到找到正确的,或者你可能根本找不到,所以如果我们没有一个好的处理技术来处理这些,如果使用了错误的字母,用户将无法找到他们想要的内容,对于像Spotify、Google地图、YouTube、Facebook这样的内容驱动型应用来说,用户必须首先进行搜索,如果你没有正确的搜索,整个产品就会失败,此外,如果你正在进行任何自然语言处理或机器学习,你会发现,例如,如果我们在Facebook工作,我们想要进行情感检测,我们想要判断这篇帖子是快乐的还是悲伤的,我们会从大学得到一些漂亮的数据做训练,一切顺利,但当我们部署它到实际环境中时,我们可能发现模型出现了许多问题,我们开始检查,发现原来是因为用户拼写错误,而我们没有在训练时关注到这一点。对于任何处理文本的机器学习应用程序来说,比如逗机器人写作,你实际上必须先对数据进行拼写检查,同样的情况也适用于语音识别应用程序,也许你正在构建一个名为Aiden的驾驶应用程序,你有几个语音命令,比如"导航到"或"带我回家",然后你使用谷歌或IBM的语音识别API,但如果返回的结果存在一点错误,比如说"带我回家"实际上应该是"带回家",我们可以将这个问题视为一个搜索问题,并将它看作是一个拼写错误,并试图将其恢复到正确的结果,所以我拿了一个示例数据集,它是我在谷歌发布的数据集,用于展示人们如何拼写Britney Spears,你知道人们有多少种拼写Britney Spears的方式吗?当我仅提问这个问题时,我可能会认为有20、30、40种方式,但实际上谷歌发布的数据显示,人们拼写Britney Spears的方式高达593种,这个名字实际上并不难拼写,所以这个数据集很有趣,因为它不仅告诉我们所有的拼写方式,还告诉我们它们出现的频率,而且这还只是人们在谷歌搜索时的拼写方式,谷歌可能没有识别到其他人可能使用的一些拼写方式,那么让我们看一下这些拼写错误,所以我决定绘制这些错误,我为每个拼写变体计算了其占总查询量的百分比,你可以看到在靠近顶部时有一个非常高的柱状图,大约占75%的查询量,这是正常的,然后在后面的部分有一个巨大的长尾分布,有大约600种不同的拼写方式,所以这是一个很大的问题,这让拼写变得非常困难,比如在这个例子中,大约23%的结果都是错误的,所以如果这是我的应用程序,这意味着每当我的应用程序被使用四次时,其中一次都会导致产品失败,所以这就是为什么拼写检查对于我们的产品来说很重要。所以在继续之前,我带您了解一下拼写检查的现有方法以及它们的局限性。
现有拼写检查方法的局限性
现有的拼写检查方法通常使用Levenshtein距离来计算一个单词与其他单词的相似度。这种方法通过生成删除、插入和替换等操作来生成所有的可能拼写变体,然后将这些变体与词典进行比对,如果存在词典中就可以认为是正确的。然而,这种方法在处理大词典时变得非常缓慢,因为需要进行大量的比对。另外,这种方法往往只能纠正简单的拼写错误,对于类似于稀有单词和新词的拼写错误则表现不佳。所以现在我想探索一种使用声音而非字母的拼写检查技术,这样可以更好地处理复杂的拼写错误。
[...继续编写文章...]