“亲子鉴定”------文件相似度

一,项目应用

  • 文本检测----类似于文本查重的功能,检查两个文本的相似程度

二,项目原理

  • 基于词频:对不同文本进行分词,统计词频,选取一定数量词频较高的词,构建词频向量,然后通过计算余弦相似度,来判断文本是否相似
  • 对文本分词,我使用了第三方库-----Jeiba库,通过调用第三方库里的接口,对文本分词,分词后,会有很多无意义的停用词,比如我,我们,怎么办,总之,此外,然而 ,不如,不妨 ,我们要使用Jieba的停用词表来去掉停用词,
  • 去停用词之后,在对剩下的词统计词频,把词和对应的词频放入map中,然后根据词频对map中的词排序,
  • 排序之后,选取一定数量的词来构建词频向量,可以把选取的词放入set中,set有天然去重功能,通过访问set中的词,如果在map中存在,就保存词频,如果不存在就赋值为0,这样就完成了编码共组
  • 构建了两个词频向量,计算余弦相似度,余弦相似度越是趋紧与1,两个文件越是相似,
  • 项目框图
    在这里插入图片描述

三,项目实现

第一部分:给定目录和文件名,读出文本信息,并且对其分词,并且统计词频
  • 首先先对一些容器取一个别名,因为全名太长了
    在这里插入图片描述
  • 然后在进行打开文件
    在这里插入图片描述
  • 打开文件后,一行一行的读,对每一行的数据分词,去停用词之后,统计词频,存入map中,建立一一对应关系,直到读到文本结束符
    在这里插入图片描述
第二部分,对map中的数据,按照词频排序,

在这里插入图片描述

  • 排序后,这些词安装词频,由大到小装在数组中,
第三部分,选取一定的数量的词,存入set中,
  • 拍完顺序之后的词,都在数组中存放着,选取数组前半部分的词放入set中,
    在这里插入图片描述
第四部分,当两个文本分词之后产生的词频,都放入set中之后,就产生了天然的编码格式,在对应的位置上所表示的词语是同一个,然后构建词频向量
  • 遍历set,取set中的词去map中找对应的词频,放入数组中,
    在这里插入图片描述
第五部分,通过词频向量,计算余弦相似度
  • 余弦相似度,简单的说就是两个向量的夹角(对于二维向量来说),夹角越小,越是相似,
    在这里插入图片描述

四,代码测试

  • 先打开文件,在获取分词后的结果
    在这里插入图片描述
  • 把根据词频排序之后的词,放入数组中
    在这里插入图片描述
  • 然后选取一定数量的词放入set中
    在这里插入图片描述
  • 构建词频向量,并且计算余弦相似度
    在这里插入图片描述

五,项目总结

项目收获
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值