【问题标题】:comparing two sets of text比较两组文本
【发布时间】:2011-02-20 11:07:21
【问题描述】:

我有两段文本,一段保存在文件中,另一段是用户输入的一段,愿意写相同的实际段落。现在我想比较两者并告诉用户他复制同一段落的效率如何。关于如何做到这一点的任何技术? 我正在考虑这些问题,这使它变得复杂。

  • 如果用户拼错了单词怎么办
  • 如果用户在两者之间跳过了一个单词会怎样
  • 如果用户跳过了两个单词而其余的文本相同,该怎么办。

【问题讨论】:

  • 你可以看看 Hirschberg 的算法,我相信它是 Levenstein 编辑距离的衍生物。
  • 一个问题:您将如何访问“保存在文件中的文本”?您知道您无法使用 Javascript 访问用户计算机中的任何文件,对吗?该文本是否在远程服务器中,而您使用的是 AJAX?还是它与您的页面一起加载并且您使用 DOM 访问文本?
  • 页面加载完毕

标签: javascript string text compare


【解决方案1】:

对输入和文件进行比较,这里有一个 javascript 库 http://code.google.com/p/google-diff-match-patch/ 会告诉你具体有什么不同,然后你可以使用这些信息来确定复制效率

【讨论】:

    【解决方案2】:

    您正在寻找友好的diff 输出。尝试这样的事情: Javascript Diff Algorithm

    示例应该足够简单:

    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

    【讨论】:

      【解决方案3】:

      您可以通过两种方式做到这一点:

      1. 这个给出了相当精确的报告:

        衡量用户写作的时间

        使用 split 将文件中的每个单词组成一个数组,并与输入的文本相同

        将用户输入的每个单词与您列表中的相似单词进行比较,并与之前和下一个单词进行比较(因为您需要 2 看看他是否跳过了一个单词,否则......从那里开始的一切都会出错)

        计算错误(您可以使用列文斯坦距离来比较每个单词中有多少错误)

        报告

      2. 在 2 个字符串上使用 levenstein 距离(是的...将所有文本视为单个字符串)。

        这个比较好用……但报告不是那么精确。

      【讨论】:

        猜你喜欢
        • 2011-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多