Java 剽窃分析器(与Web内容进行比较)

Java 剽窃分析器(与Web内容进行比较),java,mysql,web-crawler,plagiarism-detection,Java,Mysql,Web Crawler,Plagiarism Detection,大家好,全世界的人 背景 我是计算机科学的大四学生。我已经提出了我的最后一个双模块项目,这是一个剽窃分析器,使用Java和MySQL 剽窃分析器将: 扫描上传文件的所有段落。分析从哪个网站复制的每个段落的百分比 在每个段落中,仅突出显示从哪个网站复制的单词 我的主要目标是开发类似Turnitin的产品,如果可能的话进行改进 我只有不到6个月的时间来开发这个项目。我已确定以下范围: 网络爬虫程序的实现。可能会利用Lucene API或开发我自己的爬虫程序(哪一个在时间开发和可用性方面更好?) 哈希

大家好,全世界的人

背景

我是计算机科学的大四学生。我已经提出了我的最后一个双模块项目,这是一个剽窃分析器,使用Java和MySQL

剽窃分析器将:

  • 扫描上传文件的所有段落。分析从哪个网站复制的每个段落的百分比
  • 在每个段落中,仅突出显示从哪个网站复制的单词
  • 我的主要目标是开发类似Turnitin的产品,如果可能的话进行改进

    我只有不到6个月的时间来开发这个项目。我已确定以下范围:

  • 网络爬虫程序的实现。可能会利用Lucene API或开发我自己的爬虫程序(哪一个在时间开发和可用性方面更好?)
  • 哈希和索引。以改进搜索和分析
  • 问题

    以下是我的问题:

  • MySQL可以存储那么多信息吗
  • 我错过了什么重要的话题吗
  • 你对这个项目有什么看法
  • 进行相似性分析有什么建议或技巧吗
  • 一段文字和一段文字可以用散列法吗
  • 提前感谢您的帮助和建议^^

    1)制作自己的网络爬虫?看起来您可以轻松地将所有可用时间用于此任务。试着使用一个标准的解决方案:它不是你程序的核心

    你仍然有机会自己做一个,或者以后再尝试另一个(如果你还有时间的话!)。 您的程序应该只在本地文件上工作,以免绑定到特定的爬虫程序/API

    也许你甚至需要为不同的网站使用不同的爬虫

    2) 散列整段是可能的。你可以随意散列任何字符串。 但这当然意味着你只能检查完整的paragrpahs复制准确。 也许句子是一个更好的测试单元。 在散列之前,您可能应该“规范化”(转换)句子/段落,以区分大小写等细微差异

    3) MySQL可以存储大量数据

    通常的建议是:坚持使用标准SQL。如果您发现您有太多的数据,您仍然有可能使用另一个SQL实现


    当然,如果你有太多的数据,首先要考虑减少数据的方法,或者至少要减少mySQL中的数据。例如,您可以将散列存储在MySQL中,但原始页面(如果需要)可以存储在普通文件中。

    您是否考虑过另一个不会因为缺乏可用资源而注定失败的项目

    如果你真的想走“嘿,让我们爬过整个网络!”的路线,你需要突破诸如HBase、Hadoop和许多机器之类的东西。MySQL将严重不足。TurnItIn声称已经对120亿页进行了爬网和索引。谷歌的索引更像[修订版]。MySQL,或者任何RDBMS,都不能扩展到这个级别

    你能做到这一点的唯一现实的方法是,如果你做了一件非常聪明的事情,并想出如何构造对谷歌的查询,从而发现谷歌索引中已经存在的文档的剽窃行为。我建议使用消息队列并同步访问搜索API。消息队列还允许您将查询限制到合理的速率。避免使用停止词,但您仍然在寻找近似精确的匹配项,因此查询应该是这样的:
    “*quick brown fox跳过了*lazy dog”
    不要麻烦运行这样的查询:
    “**God***”
    ,忽略返回的94000000次点击的结果。这些不是剽窃,而是名言或过于笼统的问题。你要找的是10次以下的点击或者几千次的点击,这些点击都与你原来的句子或者类似的指标完全匹配。即使这样,这也应该是一种启发——除非有很多危险信号,否则不要标记文档。相反,如果所有的东西都以零点击率的形式返回,那么它们就是不同寻常的原创。图书搜索通常需要更精确的查询。足够可疑的东西应该会触发对原始页面的HTTP请求,最终的决定应该始终是人类的权限。如果一份文件引用了它的来源,那不是剽窃,你会想要发现它。误报是不可避免的,即使不是恒定的,也很可能是常见的

    请注意,TOS禁止永久存储Google索引的任何部分


    无论如何,你已经选择做一些非常困难的事情,不管你如何构建它,而且可能非常昂贵和耗时,除非你涉及谷歌。

    在线代码通常是在开源许可下发布的。大部分代码只是教程。按照你的逻辑,从任何网站复制任何东西都是剽窃。这意味着你不能接受和使用你在这里得到的任何答案。如果你真的想完成你的项目,只需编写一个系统来比较来自同一个班级和以前班级学生的代码。它的效率要高得多。这类系统的一个例子是(还有一篇文章讨论了它是如何工作的)。没有任何网络爬虫,这东西真的很有效。

    这难道不算是在欺骗你的同学吗?;-)您可能想看看标准化压缩距离:非常感谢Stephan202突出显示了这一点!;)所以你做完了吗?:)您还可以通过连接第三方服务来丰富您的服务成果。我可以为此推荐API。此外,维基百科页面的点击率比其他页面更危险,至少在维基百科中,下载整个内容并直接处理是合理的。感谢一百万Bob Aman提供的所有建议和意义