Как я могу измерить подобие между 2 строками? [закрытый]

Попробуй это.

NSInteger lengthOfText = [[textView.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length];
55
задан Guillermo Gutiérrez 22 January 2014 в 10:01
поделиться

9 ответов

There are various different ways of doing this. Have a look at the Wikipedia "String similarity measures" page for links to other pages with algorithms.

I don't think any of those algorithms take sounds into consideration, however - so "staq overflow" would be as similar to "stack overflow" as "staw overflow" despite the first being more similar in terms of pronunciation.

I've just found another page which gives rather more options... in particular, the Soundex algorithm (Wikipedia) may be closer to what you're after.

42
ответ дан 7 November 2019 в 07:18
поделиться

Расстояние Левенштейна , вероятно, то, что вы ищете.

27
ответ дан 7 November 2019 в 07:18
поделиться

Некоторое время назад я написал реализацию двойного метафона на C # . Вы обнаружите, что он значительно превосходит Soundex и тому подобное.

Также предлагалось расстояние Левенштейна, и это отличный алгоритм для множества применений, но фонетическое сопоставление - это не совсем то, что он делает; это только иногда кажется таким, потому что фонетически похожие слова также обычно пишутся одинаково. Я провел анализ различных алгоритмов нечеткого сопоставления , которые также могут оказаться полезными.

5
ответ дан 7 November 2019 в 07:18
поделиться

Вы можете искать строковые «расстояния», например расстояние Левенштейна .

3
ответ дан 7 November 2019 в 07:18
поделиться

Чтобы справиться с «подобными звуками», вы можете захотеть изучить кодирование с использованием фонетического алгоритма, такого как Double Metaphone или soundex. Я не знаю, будет ли полезно вычисление расстояний Левенштейна на строках с фонетической кодировкой, но это возможно. В качестве альтернативы вы можете использовать эвристику, например: преобразовать каждое слово в строке в его закодированную форму и удалить все слова, встречающиеся в обеих строках, и заменить их одним представлением перед вычислением расстояния Левенштейна.

4
ответ дан 7 November 2019 в 07:18
поделиться

Модуль Perl Text :: Phonetic имеет реализации различных алгоритмов.

3
ответ дан 7 November 2019 в 07:18
поделиться

Джефф Этвуд писал о поиске аналогичного решения для определения авторства сообщений вики, которое может помочь вам сузить область поиска.

2
ответ дан 7 November 2019 в 07:18
поделиться

Если вы сравниваете значения в базе данных SQL, вы можете использовать функцию SOUNDEX . Если вы запросите Google для SOUNDEX и C #, некоторые люди написали аналогичную функцию для этого и VB.

2
ответ дан 7 November 2019 в 07:18
поделиться

Я тоже должен рекомендовать Soundex, я использовал его в прошлом для обработки орфографических ошибок названия городов. Вот хорошая ссылка для использования: http://whitepapers.zdnet.com/abstract.aspx?docid=352953

1
ответ дан 7 November 2019 в 07:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: