Обычно я предлагаю вам создавать Soundex для каждого слова, которое вы возвращаете, оценивая весь сопоставьте с Soundexes слова, которые вы ищете, как часть совпадающих символов, и используйте эти оценки, чтобы решить, какое слово с большей вероятностью будет совпадением.
Например, start кодирует S363
, а stop кодирует 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
К сожалению, это приводит к неправильному ответу (вероятность того, что вы сказали stop, выше, даже если вы знаете, что сказали start), потому что у ваших двух слов много общего. Когда распознаватель сопоставляет одно из ваших целевых слов и путает его с другим в том же цикле, у вас действительно нет возможности узнать, какое слово на самом деле сказал говорящий.
Вы можете обойти это, выбрав слова, которые не очень похожи, например go и stop или begin и end. Затем вы можете полностью отказаться от Soundex и просто искать целевые слова в возвращаемом списке. Вам придется следить за этим в других локализациях вашего приложения, потому что другие языки могут иметь аналогичные проблемы (например, французский, в котором есть allez и arrêtez).
ХТН.
person
Blrfl
schedule
12.02.2011