通常,我建议您为返回的每个单词生成一个Soundex,将您要查找的单词的Soundexes对整个列表评分,作为匹配的一部分字符,并使用这些评分来确定哪个单词更可能成为比赛.
例如,开始编码为S363,停止编码为S310.下表根据单词的百分比对匹配的单词进行评分:
Word Soundex S363 S310
---- ------- ---- ----
stocks S320 0.50 0.75
stock S320 0.50 0.75
stop S310 0.50 1.00
start S363 1.00 0.50
stops S312 0.50 0.75
starks S362 0.75 0.50
---- ----
Average Score 0.63 0.71
不幸的是,这带来了错误的答案(即使您知道说开始,您说停止的可能性也更高),因为您的两个词有很多共同点.当识别器匹配您的目标单词中的一个并将其与另一个目标单词混为一谈时,您实际上就无法知道说话者实际说了哪个.
您可以通过选择不太相似的单词来解决此问题,例如go和stop或begin和end.然后,您可以完全放弃Soundex,而只在返回的列表中查找目标词.您必须在应用程序的其他本地化版本中注意这一点,因为其他语言也可能存在类似的问题(例如法语,其中包含allez和arrêtez).
HTH.