2009-10-14 41 views
5

大家好世界各地,剽窃分析仪(对网页内容进行比较)

背景

我最后一年的学生计算机科学。我提出了使用Java和MySQL的我的Final Double Module Project,它是一个剽窃分析器。

抄袭分析仪:

  1. 扫描所有上传文档的段落。分析从哪个网站复制的每个段落的百分比。
  2. 仅突出显示每个段落中完全从哪个网站复制的文字。

我的主要目标是开发类似Turnitin的东西,如果可能的话改进。

我有不到6个月的时间来开发这个程序。我已经作用域如下:

  1. 网络爬虫实现。可能会使用Lucene API或开发我自己的Crawler(哪一个在时间开发和可用性方面更好?)。
  2. 散列和索引。改进搜索和分析。

问题

这里是我的问题:

  1. 能MySQL的商店,太多的信息?
  2. 我错过任何重要的话题吗?
  3. 您对这个项目有何看法?
  4. 任何建议或技术进行相似性分析?
  5. 段落可以散列,还有文字?

在此先感谢您的任何帮助和建议。 ^^

+2

这难道不算你的同学的草? ;-) – Steve314 2009-10-14 17:02:35

+0

你可能想看看规范化的压缩距离:http://stackoverflow.com/questions/1085048/how-would-you-code-an-anti-plagiarism-site/1085085#1085085 – Stephan202 2009-10-14 18:03:17

+1

谢谢很多Stephan202为突出显示! ;) – 2009-11-02 09:17:49

回答

4

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

如果你真的想去“嘿,让我们抓取整个网络!”路线,你将需要打破诸如HBase和Hadoop以及许多机器之类的东西。 MySQL将严重不足。 TurnItIn宣称已经抓取并索引了120亿页。谷歌的索引更像[编辑]。 MySQL或者就此而言,任何RDBMS都不能扩展到这个级别。

如果你做了一些令人惊讶的聪明的事情,并想出如何构建对Google的查询来揭示已经存在于Google索引中的文档的剽窃现象,唯一可行的方法就是能够实现这一点。我建议使用消息队列并同步访问搜索API。消息队列还将允许您将查询降低到合理的速度。避免停用词,但你还是找近精确匹配,所以查询应该是这样的:"* quick brown fox jumped over * lazy dog"不要打扰运行落得像查询:"* * went * * *"而忽略回来与94,000,000命中结果。那些不会是剽窃,他们会成为着名的引语或过于笼统的问题。您正在查找10次以下或几千次匹配,这些匹配都与您的原始语句或某些类似指标完全匹配。即使如此,这应该只是一种启发式的做法 - 除非有很多红旗,否则不要标记文档。相反,如果一切都以零点击回来,它们会变得异常独特。图书搜索通常需要更精确的查询。充分可疑的东西应该触发对原始页面的HTTP请求,最终的决定应该始终是人的权限。如果一份文件引用它的来源,那不是抄袭,而是你想要检测。假阳性是不可避免的,并且如果不是恒定的话,可能是常见的。

请注意,TOS禁止永久存储在谷歌索引的任何部分。

无论如何,无论您如何构建它,您都会选择非常努力地完成某项任务,并且除非您涉及Google,否则可能非常昂贵和耗时。

+0

此外,维基百科页面的访问次数比其他更多,至少在维基百科中,下载整个内容并直接处理它是合理的。 – 2009-10-14 20:58:29

+1

感谢百万Bob Aman提供的所有建议以及重点突出的问题。非常感谢您的好意。 鲍勃,对于我所提议的项目,我没有任何回应。我会尽我所能,因为我已经决定挑战这一点。我希望我的梦想能够实现。我总是想在我的兴趣范围内做些事情,这有助于我提高自己的技能。 我将探索Google搜索API。我只是想知道Google是否有任何限制,因为我正在考虑使用Lucene(Java开源搜索API)来代替。再次感谢! ;) – 2009-11-02 08:57:15

+0

顺便说一下,在这6个月的未来,如果我有任何问题(我会非常努力的尝试),Bob Aman,我可以在这里请求您的指导方针吗? 真的再次感谢您分享您的知识的意愿。由于过去几周的忙碌,我很抱歉回复晚了。 – 2009-11-02 09:00:05

1

1)制作您自己的网络爬虫?看起来你可以很容易地使用所有可用的时间来完成这个任务。尝试使用标准解决方案:它不是程序的核心。

你仍然有机会自己做或者在尝试之后再尝试一次(如果你有时间了!)。 您的程序只能在本地文件上工作,以免绑定到特定的抓取工具/ API。

也许你甚至必须使用不同的抓取工具为不同的网站

2)散列的整段内容是可能的。你可以散列任何字符串。 但当然,这意味着你只能检查整个paragrpahs完全复制。 也许句子会是一个更好的单位来测试。 你或许应该哈希理清像大/小写的细微差别之前,“正常化”(变换分析)句子/ paragrpahs。

3)MySQL可以存储大量的数据。

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

但是,当然,如果你有太多的数据,开始寻找方法来减少它,或者至少减少mySQL中的内容。例如,您可以在MySQL中存储散列,但在普通文件中存储原始页面(如果需要)。

+0

嗨Siukurnin,非常感谢您提出的建议和问题。所有提供的信息和建议将在我开始开发我的建议系统时考虑到。 – 2009-11-02 09:07:05

0

在线代码通常是在开放源代码许可证进行分发。大部分代码只是教程。根据你的逻辑,从任何网站上复制任何东西都是抄袭。这意味着你不能接受和使用你在这里得到的任何答案。如果你真的想完成你的项目,只需编写一个系统来比较来自同一班级和以前班级的学生的代码。它效率更高。这种系统的一个例子是MOSS(也有谈论它是如何工作的纸)。没有任何网络爬虫,这件事情非常有效。

+0

是的Piligrim,我很清楚这一点,,,刚才那是我提出的剽窃分析器,它与网页内容进行了比较。因此,我无法改变我的范围。无论如何感谢您的建议和信息。 ;) – 2009-11-02 09:15:51