我正在通过实施“Spelling correction as an iterative process that exploits the collective knowledge of web users”中描述的方法为搜索引擎查询构建拼写纠正器。
高级方法如下:对于给定的查询,提出每个unigram和bigram的可能的校正候选(在一定编辑距离内的查询日志中的单词),然后执行修改的Viterbi搜索以找到最可能的候选序列给出二元组频率。重复此过程,直到序列具有最大概率。
对维特比搜索的修改是这样的:如果在可信词典中找到两个相邻的单词,则至多可以校正一个单词。这对于避免将正确拼写的单字查询更正为更高频率的单词尤为重要。
我的问题是在哪里可以找到这样的词典。它应该是英文的,并且包含可能出现在搜索查询中的专有名词(名字/姓氏,地点,品牌名称等)以及常见和不常见的英语单词。即使推进正确的方向也会有用。
此外,如果有人正在阅读本文,并对本文提供的方法有任何改进建议,我也愿意接受,因为这是我第一次涉足NLP。
答案 0 :(得分:2)
用于此目的的最佳词典可能是Google Web 1T 5-gram数据集。
http://www.ldc.upenn.edu/Catalog/CatalogEntry.jsp?catalogId=LDC2006T13
不幸的是,除非你的大学是最不发达国家的成员,否则它不是免费的。
你也可以在像Python NLTK这样的软件包中尝试使用语料库,但谷歌似乎最适合你的用途,因为它已经与搜索查询相关。