2013-07-10 39 views
0

我想比较一组文本,并得到如何类似/相关他们对彼此,我使用similar_text(),但我发现它不是那么准确。谢谢。我想比较一组文本,并获得他们对彼此有多么相似/相关,我使用similar_text(),但我发现它不是那么准确

例如下面的文本给了我66%

文本1:创新游戏,吃饭,睡觉,呼吸创新。它喜欢创意&激情动力互联网驱动器。我们了解时间最大的资产,挑战时间截止日期。

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); 
+0

你将不得不根据你定义“准确”的含义。例如,告诉我们你对两个样本字符串的期望结果,以及你用来得出这个结果的方法的简短描述。 – RandomSeed

+0

按照此代码的百分比准确度:echo similar_text($ memo,$ student_answer,$ percentage); 假设你想比较学生的答案和备忘录中的答案。 – user2553806

+0

但是你说这个函数没有给你满意的结果? – RandomSeed

回答

0

您可以使用JS版本:

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

的JS代码显示了precent代码(你可以修改代码):

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

我希望这能帮到你!

编辑:

如何使用similar_text在JS?

  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.

希望这WIL帮助您!

+0

好吧,我对JS很不好,但我会看看它,谢谢。 – user2553806

+0

我很乐意帮助你在JS中使用similar_text。 –

+0

我会用步骤编辑我的答案。 –

相关问题