# 检测抄袭 n-gram 算法 **Repository Path**: ju-zhuohan/PlagiarismDetector-Java ## Basic Information - **Project Name**: 检测抄袭 n-gram 算法 - **Description**: 基于 Java 实现了一个抄袭检测工具,通过提取文档中的 n-gram 来计算文档间的相似度,从而高效识别疑似抄袭的文档对。项目采用高效的数据结构和算法,并配有全面的 JUnit 单元测试,确保代码质量和稳定性。该系统适用于学术和企业领域,具备扩展性,未来可进一步结合分布式处理和深度学习技术实现大规模实时检测。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-26 - **Last Updated**: 2025-03-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PlagiarismDetector-Java 本项目是一个基于 Java 的抄袭检测系统,旨在通过提取文档中的 n-gram(连续 n 个单词)来快速识别疑似抄袭的文档对。项目包含以下核心模块: - **文档预处理与 n-gram 提取** 利用自定义的迭代器(DocumentIterator)逐词读取文档,生成 n-gram 字符串,并采用哈希表、数组等数据结构高效存储。 - **n-gram 存储与索引构建** 将所有提取的 n-gram 按空格分隔写入一个大文件,同时记录每个文档在文件中的字节占用,以便后续快速定位。 - **文档相似度计算** 定义了一个封装两个文档及其共享 n-gram 数量的对象(Similarities),并利用 TreeSet 快速排序和查找相似度较高的文档对。 - **结果输出与性能优化** 根据设定阈值输出相似度较高的文档对,并通过合并处理(processAndStore 方法)降低内存压力,实现高效处理。 ## 技术栈 - **Java** 项目主要使用 Java 语言实现,Java 的面向对象特性和丰富的集合框架使得代码逻辑清晰、扩展性强。 - **JUnit** 使用 JUnit 编写单元测试(DocumentsProcessorTest.java),确保各模块功能正确且覆盖率达到 80% 以上。JUnit 作为目前最流行的 Java 单元测试框架,能够快速定位问题、保证代码质量。 ## 使用方法 1. **克隆仓库** ```bash git clone https://gitee.com/ju-zhuohan/PlagiarismDetector-Java.git