сравнивая два набора текста - PullRequest
2 голосов
/ 20 февраля 2011

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

  • Что делать, если пользователь написал слово неправильно
  • Что делать, если пользователь пропустил слово между
  • Что делать, если пользователь пропустил два слова, а остальная часть текста такая же.

Ответы [ 3 ]

3 голосов
/ 20 февраля 2011

Сделайте diff для ввода и файла, для этого здесь есть библиотека javascript http://code.google.com/p/google-diff-match-patch/ скажет вам точно, что отличается, тогда вы можете использовать эту информацию, чтобы определить эффективность копирования

3 голосов
/ 20 февраля 2011

Вы ищете дружественный diff выход. Попробуйте что-то вроде этого: Javascript Diff Алгоритм

Образец должен быть достаточно простым:

var diff = diffString(
   "The red brown fox jumped over the rolling log.",
   "The brown spotted fox leaped over the rolling log"
);

Рабочий пример: http://jsbin.com/uhalo3

1 голос
/ 20 февраля 2011

Вы можете сделать это двумя способами:

  1. Этот отчет дает довольно точный отчет:

    Измерьте время, затраченное пользователем на запись

    Используйте split для создания массива с каждым словом в вашем файле и таким же для введенного текста

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

    Подсчитайте ошибки (вы можете использовать расстояние Левенштейна, чтобы сравнить, сколько ошибок в каждом слове)

    Дайте отчет

  2. Использовать расстояние Левенштейна по двум строкам (да ... обрабатывать весь текст как одну строку).

    Это намного удобнее в использовании ... но отчет не такой точный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...