
自然语言处理
文章平均质量分 82
文本相似度、代码相似度等算法服务的研究,包括相似度计算、距离公式
多则惑少则明
让天下没有难测试的项目。专注于测试开发领域,近9+年的工作实战经验,主攻方向包括:
0-1/中期/成熟类大型/复杂系统的业务测试
自动化测试平台&框架开发;
打造质量体系及沉淀质量方法论
个人邮箱zpphnkjxy@126.com
文章周末定时更新,其余时间不定时更新
展开
-
java 代码查重(七)对比两个任意Java工程代码的相似度
比如,当前对比文件目录:JavaCheckTest.java, 最大相似度:0.0。可以判定JavaCheckTest.java 与 源目标Java文件集合是没有相似的。比如,当前对比文件目录:Dir.java, 最大相似度:1.0。说明Dir.java与源目标Java文件集合中的某个文件的相似度为100%。3)处理除以零的情况,返回0.0 ,说明对应文件内容在去掉注释、Java保留关键字后内容过短,不再计算相似度。相似度超过80%Java文件个数:11, 相似度超过80%的文件比例 : 1.0。原创 2025-05-25 21:34:02 · 423 阅读 · 0 评论 -
java 代码查重(六)根据目录读取所有.java文件
目录/Users/apple/Documents/springboot/my/springbootFTest下有很多.java文件。Java课程作业检查查重场景下,希望根据一个目录,获取该目录下所有的.java文件,以便后续查重。发现第2种情况即 目录只有一层且有Java文件 才能返回正确的Java文件。解决方法: 递归函数中正常传参。原创 2025-05-24 22:36:23 · 332 阅读 · 0 评论 -
java 代码查重(五)比较余弦算法、Jaccard相似度、欧式距离、编辑距离等在计算相似度的差异
为了实现更准确对比2个Java代码的相似度(用于Java课程作业查重场景), 可以将Java源码原封不动保存到.java文件中,可以得到更准确结果,且不同相似度算法下计算的相似度差异一致。比较源文件和目标文件都是标准的Java代码(.java代码),唯一区别在于目标文件含有注释,源文件没有注释。初步结论: 相同的Java代码复制到文本文件中(.txt文件),不同算法检查的相似度差异较大。比较源文件和目标文件都是标准的Java代码,唯一区别在于目标文件含有注释,源文件没有注释。原创 2025-05-24 21:11:25 · 1265 阅读 · 0 评论 -
java 代码查重(四)删除java文件中注释的方法后查重实现
注意: 删除多行注释时,可能存在问题或不准确导致得到的字符串为空,这里可以只移除单行注释,允许多行注释带来的误差。删除注释过程中,可以假设Java代码在源文件.java文件中、 在如.txt文本文件中。步骤2:使用正则表达式方式将txt文件内容删除,即针对字符串删除其中以//、/** **/ 的字符。步骤2:使用javaparser类方法 解析.java文件内容并删除注释。使用前提: Java代码保存在.java文件中(源代码文件)使用前提: Java代码保存在.txt文件中(文本文件)原创 2025-05-24 17:18:31 · 664 阅读 · 0 评论 -
java 代码查重(二)查重原理与技术
要么是天才,要么是AI写的。然后按照预设的阈值参数,比如最小相似文本字数、允许的最大连续差异字数等,来计算内容与其他文档之间的相似度。文本默认阈值是30字,即30字以上的相似内容判定为文本雷同,该部分内容将被标记为潜在的抄袭内容。它同样采用基于令牌的方法,并提供丰富的配置选项,如设置最小相似度阈值、过滤选项等。查重中的“阈值”是一个重要的参数,阈值的设置直接影响到查重的严格程度和判断标准。例如,如果设置容许最大连续差异字数为10字,那么在一段文本中,连续10个字的差异将不会影响相似度的判断。原创 2025-05-21 10:17:39 · 793 阅读 · 0 评论 -
Java 代码查重(一)借助HanLP计算相似度
例如,动态添加前五千万条数据速度尚可,但后续添加速度明显下降,当添加量较大时,可能会耗费较长时间来完成词典的更新,这对于需要频繁更新和扩展词典的应用场景来说,会影响系统的整体性能和效率。例如,一些词语在不同的语境下可能有不同的含义和分词方式,但HanLP可能无法准确地根据上下文来确定最合适的分词结果,从而影响后续的文本分析和处理。- 专业领域知识覆盖不足:对于一些特定的专业领域,HanLP的训练数据和模型可能无法充分覆盖相关的专业术语和知识,导致在处理这些领域的文本时,准确率有所下降。原创 2025-05-20 10:01:57 · 775 阅读 · 0 评论 -
java 代码查重(三)常见的距离算法和相似度(相关系数)计算方法
欧式距离(Euclidean Distance) -- 考虑的向量属性:幅度和方向余弦相似度(Cosine Similarity) -- 考虑的向量属性:只有方向点积相似度(Dot product similarity) -- 考虑的向量属性:幅度和方向当两用户评分趋势一致时,但是评分值差距很大,余弦相似度倾向给出更优解。例如向量(3,3)和(5,5),这两位用户的认知其实是一样的,但是欧式距离给出的解显然没有余弦值合理。原创 2025-05-21 18:47:31 · 888 阅读 · 0 评论