工程概论第二次作业

发布时间 2023-09-20 22:29:53作者: 搬砖猫猫头

工程概论第二次作业

作业详情

这个作业属于哪个课程 工程概论(新手村)
这个作业要求在哪里 博客园班级作业详情(异界传送门
这个作业的目标 重新认识一下自己,并且熟悉Github和博客园的基本使用方法

需求分析

题目:论文查重

描述如下:

设计一个论文查重算法,给出一个原文文件和一个在这份原文上经过了增删改的抄袭版论文的文件,在答案文件中输出其重复率。

原文示例:今天是星期天,天气晴,今天晚上我要去看电影。
抄袭版示例:今天是周天,天气晴朗,我晚上要去看电影。
要求输入输出采用文件输入输出,规范如下:

从命令行参数给出:论文原文的文件的绝对路径。
从命令行参数给出:抄袭版论文的文件的绝对路径。
从命令行参数给出:输出的答案文件的绝对路径。
我们提供一份样例,课堂上下发,上传到班级群,使用方法是:orig.txt是原文,其他orig_add.txt等均为抄袭版论文。

注意:答案文件中输出的答案为浮点型,精确到小数点后两位

解决方案

SimHash+海明距离

什么是SimHash

谷歌在2007年提出的一种指纹生成算法,应用于网页去重

局部性敏感哈希

一般的哈希函数对两篇仅差一个标点的文本进行处理,会得到两个天差地别的哈希值。而局部性敏感哈希(Locality Sensitive Hashing)使得对两篇相似的文本得出相似的哈希值,从而可以使用哈希值判断文本是否相似。

SimHash基本步骤

  1. 分词(对文本进行分割)
  2. hash(通过hash函数对每一个词向量进行映射,产生一个n位二进制串)
  3. 加权(计算权重向量W=hash * weight,hash串 * 权重)
  4. 合并(把文本所有词向量的权重向量相累加,得到一个新的权重向量)
  5. 降维(将权重向量转换成二进制bit串,你可以认为这个bit串是文本的指纹)

海明距离

计算两个文本转换的二进制bit串相同位置不同的个数,即海明距离。海明距离可以反馈两个文本的相似度。

代码方面

来不及写,就不上网抄了