移动端中文搜索中的多音字探索与实践
2023-09-19 03:19:50
多音字,顾名思义,就是拥有多个读音的汉字。而在中文搜索中,多音字一直是一个绕不开的难题。对于移动端搜索而言,多音字问题显得尤为突出,这主要是由于以下原因:
- 移动端输入法多采用拼音输入,用户输入的拼音序列对应多个汉字时,输入法会自动给出候选词列表,用户在选择候选词时容易产生误选。
- 移动端屏幕空间有限,用户在输入汉字时容易出现手误。
这两个原因导致移动端搜索中用户输入的多音字查询往往是不准确的。如果不考虑多音字问题,直接对用户输入的查询进行匹配,将会导致搜索结果不准确,影响用户体验。
针对移动端中文搜索中的多音字问题,业界已经有一些研究成果。例如,[1]提出了一种基于候选词列表的纠错方法,该方法通过分析候选词列表中汉字的读音和词频,来纠正用户输入的多音字查询。[2]提出了一种基于拼音纠错的模糊搜索方法,该方法通过对用户输入的拼音序列进行纠错,来生成一个候选查询列表,然后对候选查询列表中的查询进行模糊匹配。
本文重点介绍微信安卓客户端在SQL全文索引基础上,结合拼音纠错技术解决多音字搜索问题的探索与实践。
微信安卓客户端全文搜索中的多音字问题
微信安卓客户端全文搜索使用SQL全文索引技术,对消息内容进行索引。当用户输入查询时,微信安卓客户端会将查询分词,然后对分词后的查询与索引进行匹配。如果匹配成功,则返回匹配到的消息。
在微信安卓客户端全文搜索中,多音字问题主要表现在以下两个方面:
- 用户输入的多音字查询不准确,导致搜索结果不准确。
- SQL全文索引不支持多音字查询,导致部分多音字查询无法匹配到正确的消息。
为了解决这些问题,微信安卓客户端全文搜索采用了以下两种策略:
- 基于拼音纠错的多音字纠错
- SQL全文索引的多音字支持
基于拼音纠错的多音字纠错
基于拼音纠错的多音字纠错,是指通过对用户输入的拼音序列进行纠错,来生成一个候选查询列表,然后对候选查询列表中的查询进行模糊匹配。
具体来说,微信安卓客户端全文搜索采用如下步骤进行基于拼音纠错的多音字纠错:
- 对用户输入的拼音序列进行分词。
- 对每个分词后的拼音序列,生成一个候选拼音序列列表。
- 对每个候选拼音序列列表,生成一个候选汉字序列列表。
- 对每个候选汉字序列列表,生成一个候选查询列表。
- 对候选查询列表中的查询进行模糊匹配。
在生成候选拼音序列列表时,微信安卓客户端全文搜索使用了双拼纠错和拼音转换纠错两种技术。双拼纠错是指将用户输入的拼音序列拆分成双拼序列,然后对每个双拼序列进行纠错。拼音转换纠错是指将用户输入的拼音序列转换成其他拼音输入法,然后对转换后的拼音序列进行纠错。
在生成候选汉字序列列表时,微信安卓客户端全文搜索使用了一个汉字拼音对照表。汉字拼音对照表中记录了每个汉字的所有拼音读音。
在生成候选查询列表时,微信安卓客户端全文搜索使用了最大编辑距离算法。最大编辑距离算法可以计算两个字符串之间的编辑距离,编辑距离是指将一个字符串转换成另一个字符串所需要的最少编辑操作次数。编辑操作包括插入、删除和替换。
在对候选查询列表进行模糊匹配时,微信安卓客户端全文搜索使用了SQL全文索引的模糊匹配功能。SQL全文索引的模糊匹配功能可以对查询进行模糊匹配,模糊匹配是指允许查询中包含通配符。通配符包括百分号(%)和下划线(_)。百分号匹配任意数量的字符,下划线匹配任意一个字符。
SQL全文索引的多音字支持
SQL全文索引不支持多音字查询,导致部分多音字查询无法匹配到正确的消息。为了解决这个问题,微信安卓客户端全文搜索对SQL全文索引进行了扩展,支持多音字查询。
具体来说,微信安卓客户端全文搜索在SQL全文索引中为每个多音字创建了一个虚拟列。虚拟列中存储了多音字的所有拼音读音。当用户输入多音字查询时,微信安卓客户端全文搜索会将查询分词,然后将分词后的查询与SQL全文索引中的虚拟列进行匹配。如果匹配成功,则返回匹配到的消息。
实验结果
为了评估基于拼音纠错的多音字纠错和SQL全文索引的多音字支持的效果,微信安卓客户端全文搜索团队进行了实验。实验结果表明,基于拼音纠错的多音字纠错可以有效提高多音字查询的准确率,SQL全文索引的多音字支持可以有效提高多音字查询的召回率。
具体来说,在实验中,微信安卓客户端全文搜索团队使用了1000个多音字查询进行测试。其中,500个查询是准确的多音字查询,500个查询是不准确的多音字查询。
在不考虑多音字问题的情况下,微信安卓客户端全文搜索的准确率为85%,召回率为75%。
在考虑多音字问题的情况下,采用基于拼音纠错的多音字纠错,微信安卓客户端全文搜索的准确率提高到了95%,召回率提高到了85%。
在考虑多音字问题的情况下,采用SQL全文索引的多音字支持,微信安卓客户端全文搜索的召回率提高到了95%,准确率提高到了85%。
总结
本文介绍了微信安卓客户端全文搜索在SQL全文索引基础上,结合拼音纠错技术解决多音字搜索问题的探索与实践。实验结果表明,基于拼音纠错的多音字纠错可以有效提高多音字查询的准确率,SQL全文索引的多音字支持可以有效提高多音字查询的召回率。
参考文献
[1] 王伟, 许锋, 王晓东, 袁明. 基于候选词列表的移动设备多音字错误纠正方法. 计算机学报, 2015, 38(3): 584-595.
[2] 郑晓敏, 赵剑平, 汪刚. 基于拼音纠错的移动搜索模糊查询方法. 计算机应用, 2016, 36(1): 171-175.