0

テキストのセットと比較して、それらが互いにどの程度類似しているか/関連しているかを知りたいのですが、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);
4

1 に答える 1

0

JS バージョンを使用できます。

http://phpjs.org/functions/similar_text/

JS コードに最新のコードが表示されます (コードは変更できます)。

return (sum * 200) / (firstLength + secondLength);

これがお役に立てば幸いです!

編集:

JSでsimilar_textを使用するには?

  1. 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);
     }
    }
    
  2. 次の行を入力します。

      <script type="text/JavaScript" src="YOUR_PATH/similar_text.js"></script>
    
  3. これで、体内で使用できます。

      <script>
       similar_text('Hello World!', 'Hello phpjs!');
      </script>
    

7が出力されます。

これがあなたを助けることを願っています!

于 2013-07-10T11:27:17.877 に答える