Алгоритм сравнения Word

Посмотрите здесь - запятая обозначает несколько выражений / операторов. Например, в вашем коде вы можете использовать такую ​​строку:

var a=0, b=0, c=0;

Это объявило бы все три переменные без записи:

var a=0;
var b=0;
var c=0;

Надеюсь, что это поможет.

14
задан disc0dancer 23 January 2009 в 16:22
поделиться

7 ответов

Вы могли бы хотеть проверить расстояние Левенштейна алгоритм как начальная точка. Это оценит "расстояние" между двумя словами.

Это ТАК распараллеливает при реализации стиля Google, "Вы имеете в виду...?" система может обеспечить некоторые идеи также.

18
ответ дан 1 December 2019 в 08:20
поделиться

Я не знаю, какой язык Вы кодируете в, но если это - PHP, необходимо рассмотреть следующие алгоритмы:

levenshtein () : Возвращает минимальное количество символов, которые необходимо заменить, вставить или удалить для преобразования одной строки в другого.
soundex () : Возвращает soundex ключ с четырьмя символами слова, которое должно совпасть с ключом для любого подобно звучащего слова.
метафон () : Подобный soundex и возможно более эффективный для Вас. Это более точно, чем soundex (), поскольку это знает основные правила английского произношения. Сгенерированные ключи метафона имеют переменную длину.
similar_text () : Подобный levenshtein (), но это может возвратить процентное значение вместо этого.

9
ответ дан 1 December 2019 в 08:20
поделиться

Я имел некоторый успех с расстояние Левенштейна алгоритм, существует также Soundex.

, В каком языке Вы реализуете это? мы можем указывать на определенные примеры

2
ответ дан 1 December 2019 в 08:20
поделиться

Я на самом деле реализовал аналогичную систему. Я использовал расстояние Левенштейна (в качестве других плакатов, уже предложенных) с некоторыми модификациями. Проблема с неизмененным расстоянием редактирования (относился к целым строкам) состоит в том, что это чувствительно к переупорядочению слова, таким образом, "Acme Digital Incorporated World Company" будет соответствовать плохо против "Высшей точки Digital Incorporated World Company", и такие переупорядочения были довольно распространены в моих данных.

я изменил его так, чтобы, если расстояние редактирования целых строк было слишком большим, алгоритм отступил к соответствующим словам друг против друга для нахождения хорошего соответствия от слова к слову (квадратичная стоимость, но было сокращение, если было слишком много слов, таким образом, это работало хорошо).

2
ответ дан 1 December 2019 в 08:20
поделиться

Я реализую его в PHP, и я теперь пишу часть кода, который разобьет 2 строки в словах и сравнит каждое из слов от первой строки со словами второй строки с помощью levenshtein и примет любление возможных значений. Иллинойс отправляет его, когда я сделан.

Большое спасибо.

Обновление: вот то, что я придумал:

function myLevenshtein( $str1, $str2 )
{
  // prepare the words
  $words1 = explode( " ",  preg_replace( "/\s+/", " ", trim($str1) ) );
  $words2 = explode( " ",  preg_replace( "/\s+/", " ", trim($str2) ) );

  $found = array(); // array that keeps the best matched words so we don't check them again
  $score = 0;       // total score
  // In my case, strings that have different amount of words can be good matches too
  // For example, Acme Company and International Acme Company Ltd. are the same thing
  // I will just add the wordcount differencre to the total score, and weigh it more later if needed
  $wordDiff = count( $words1 ) - count( $words2 );
  foreach( $words1 as $word1 )
  {
    $minlevWord = "";
    $minlev = 1000;
    $return = 0;
    foreach( $words2 as $word2 )
    {
      $return = 1;
      if( in_array( $word2, $found ) )
        continue;
      $lev = levenshtein( $word1, $word2 );
      if( $lev < $minlev )
      {
        $minlev = $lev;
        $minlevWord = $word2;
      }
    }
    if( !$return )
      break;
    $score += $minlev;
    array_push( $found, $minlevWord );
  }

  return $score + $wordDiff;
}
0
ответ дан 1 December 2019 в 08:20
поделиться

Я взял SoundEx, Levenshtein, подобие PHP и двойной метафон и упаковал их в C# в одном наборе дополнительных методов на Строке.

Все сообщение в блоге здесь .

2
ответ дан 1 December 2019 в 08:20
поделиться

Существует несколько алгоритмов, чтобы сделать просто, что, и большинство баз данных даже включают ту по умолчанию. Это - на самом деле довольно общее беспокойство.

, Если его примерно английские слова, SQL Server, например, включает SOUNDEX, который может использоваться для сравнения на получающемся звуке слова.

http://msdn.microsoft.com/en-us/library/aa259235%28SQL.80%29.aspx

0
ответ дан 1 December 2019 в 08:20
поделиться
Другие вопросы по тегам:

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