Я хотел бы сравнить с набором текста и узнать, насколько они похожи / релевантны друг другу, я использую Similar_text(), но я обнаружил, что это не так точно
Я хотел бы сравнить набор текста и выяснить, насколько они похожи / релевантны друг другу, я использую Similar_text(), но я обнаружил, что это не так точно. Спасибо.
Например, следующий текст дает мне 66%
Text1: Инновационная игра, ешьте, спите, дышите инновациями. Он любит творчество и страсть к интернет-драйве. Мы понимаем, что время величайший актив, вызов уложиться в срок
Text2: коммунистическая политика Советского Союза; Германия лига организации маскировки энергии избили разыскивается.
Мой код, как показано ниже:
echo $student_answer = removeCommonWords($answer)."<br><br>";
$student_answer = strip_tags($student_answer);
echo $memo = removeCommonWords2($memo)."<br><br>";
echo similar_text($memo, $student_answer);
1 ответ
Вы можете использовать версию JS:
http://phpjs.org/functions/similar_text/
Код JS показывает код прецента (вы можете изменить код):
return (sum * 200) / (firstLength + secondLength);
Я надеюсь, что это поможет вам!
РЕДАКТИРОВАТЬ:
Как использовать Similar_text в JS?
Создайте файл с именем Similar_text.js и скопируйте в него этот код:
function similar_text (first, second, percent) { // http://kevin.vanzonneveld.net // + original by: Rafał Kukawski (http://blog.kukawski.pl) // + bugfixed by: Chris McMacken // + added percent parameter by: Markus Padourek (taken from http://www.kevinhq.com/2012/06/php-similartext-function-in-javascript_16.html) // * example 1: similar_text('Hello World!', 'Hello phpjs!'); // * returns 1: 7 // * example 2: similar_text('Hello World!', null); // * returns 2: 0 // * example 3: similar_text('Hello World!', null, 1); // * returns 3: 58.33 if (first === null || second === null || typeof first === 'undefined' || typeof second === 'undefined') { return 0; } first += ''; second += ''; var pos1 = 0, pos2 = 0, max = 0, firstLength = first.length, secondLength = second.length, p, q, l, sum; max = 0; for (p = 0; p < firstLength; p++) { for (q = 0; q < secondLength; q++) { for (l = 0; (p + l < firstLength) && (q + l < secondLength) && (first.charAt(p + l) === second.charAt(q + l)); l++); if (l > max) { max = l; pos1 = p; pos2 = q; } } } sum = max; if (sum) { if (pos1 && pos2) { sum += this.similar_text(first.substr(0, pos2), second.substr(0, pos2)); } if ((pos1 + max < firstLength) && (pos2 + max < secondLength)) { sum += this.similar_text(first.substr(pos1 + max, firstLength - pos1 - max), second.substr(pos2 + max, secondLength - pos2 - max)); } } if (!percent) { return sum; } else { return (sum * 200) / (firstLength + secondLength); } }
В вашем поле поставить следующую строку:
<script type="text/JavaScript" src="YOUR_PATH/similar_text.js"></script>
Теперь вы можете использовать его в своем теле:
<script> similar_text('Hello World!', 'Hello phpjs!'); </script>
Будет выведено 7.
Надеюсь, это поможет вам!