文本查重小能手
介绍
我们经常会用到论文查重,论文查重对于保障学术诚信、提高学术水平、维护学术声誉和增强学术合作都具有重要的意义。
本题目要求实现一个基于前端界面的文本查重工具,用户可以在页面上输入两段文本,系统会自动计算并显示它们的重复率。
准备
开始答题前,需要先打开本题的项目代码文件夹,目录结构如下:
1 2 3 4 5 6 7 8 9
| . ├── css │ └── style.css ├── data.json ├── effect.gif ├── index.html └── js ├── checkPlagiarism.js └── index.js
|
其中:
index.html 是主页面。
css 是存放项目样式的文件夹。
data.json 是请求需要用到 JSON 数据。
js 是存放项目 js 的文件夹。
effect.gif 是项目最终完成效果图。
注意:打开环境后发现缺少项目代码,请手动键入下述命令进行下载:
1 2
| cd /home/project wget https://labfile.oss.aliyuncs.com/courses/18421/plagiarism.zip && unzip plagiarism.zip && rm plagiarism.zip
|
在浏览器中预览 index.html 页面效果如下:

目标
找到 js 下面的 index.js 和 checkPlagiarism.js,找到其中的 TODO 部分,完成代码,达到以下目标:
- 完善
index.js 的 TODO 部分,在不使用任何第三方库的情况下完成文章数据请求(数据来源 ./data.json ,其中 articleOne 为第一篇文章,articleTwo 为第二篇文章,以此类推)。
- 完善
index.js 的 TODO 部分,对比文章(id = compareText)元素默认显示第一篇文章,当 (id = articleSelect)下拉框切换时,(id = compareText)中显示对应的文章数据。
- 完善
checkPlagiarism.js 下的分词函数 wordSegmentation,该分词函数接受一个参数,参数为文章内容,返回文章内容分词后的数组。分词规则如下:
当文字内容前后是标点符号、英文和停用词(代码中已提供)则去掉标点符号、英文和停用词进行分词:
如:人工智能(Artificial Intelligence,缩写为 AI)英文名。是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新技术科学。
- “人工智能”后面是标点符号,分词后为“人工智能”。
- (Artificial Intelligence,缩写为 AI)中“缩写”的前面是英文和标点符号,后面的“为”是停用词,分词后为 “缩写”。
- ”是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、”前后都是符号, 其中”是研究”中的“是”为停用词,后面是标点符号,则分词后为“研究”,“开发用于模拟” 前后都是符号直接分词,“延伸和扩展人的智能的理论”其中,“和”和“的”是停用词,则分词后为:“延伸”, “扩展人”, “智能”, “理论”。
wordSegmentation 函数测试用例,以下用例仅供参考,实际判题时会修改测试用例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| "人工智能(英语:Artificial Intelligence,缩写为AI)是研究、开发用于模拟、延伸和扩展人的智能的理论、 方法、技术及应用系统的一门新技术科学。"
["人工智能","英语","缩写","研究","开发用于模拟","延伸","扩展人","智能","理论","方法","技术", "应用系统","一门新技术科学"];
"自然语言处理(Natural Language Processing)是计算机科学、人工智能、语言学三者交叉的领域, 涉及人类语言与计算机的相互作用。"
["自然语言处理","计算机科学","人工智能","语言学三者交叉","领域","人类语言","计算机","相互作用"];
"人工智能(Artificial Intelligence,缩写为AI)是一门涉及机器智能的新兴科技,它的发展将会改变我们的 生活方式和工作方式。机器学习(Machine Learning)是人工智能的一个分支,它使用算法和统计学来让计算机学习从数据中提取规律, 从而不断改进自身的性能。"
["人工智能","缩写","一门","机器智能","新兴科技","发展","改变","生活方式","工作方式","机器学习", "人工智能","一个分支","使用算法","统计学","计算机学习","数据中提取规律","改进自身","性能"];
"人工智能(Artificial Intelligence,缩写为AI)英文名。是研究、开发用于模拟、延伸和扩展人的智能的理论 、方法、技术及应用系统的一门新技术科学。"
["人工智能","缩写","英文名","研究","开发用于模拟","延伸","扩展人","智能","理论","方法","技术", "应用系统","一门新技术科学"];
|
规定
- 请严格按照考试步骤操作,切勿修改考试默认提供项目中的文件名称、文件夹路径、class 名、id 名、图片名等,以免造成判题无法通过。
判分标准
- 完成目标 1,得 5 分。
- 完成目标 1 的基础上,完成目标 2 ,得 5 分。
- 完成目标 3,得 10 分。
总通过次数: 6 | 总提交次数: 10 | 通过率: 60%
难度: 中等 标签: 蓝桥杯, 2023, 国赛, Web 前端, JavaScript, JS 函数封装
题解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
let articleObj = {} fetch('./data.json').then(res => res.json()).then(data => { articleObj = data.data compareText.value = articleObj.articleOne })
articleSelect.addEventListener('click', () => { compareText.value = articleObj[articleSelect.value] }) articleSelect.addEventListener('change', () => { compareText.value = articleObj[articleSelect.value] })
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| function wordSegmentation(words) { console.log(words); words = words.replace(/[^\u4e00-\u9fa5]/g, ','); console.log(words); const stopWordsRegex = Array.from(stopWords).join('|'); const regex = new RegExp(`(?:${stopWordsRegex})`, 'g'); console.log(regex); const filteredWords = words.replace(regex, ','); const wordArray = filteredWords.split(','); const result = wordArray.filter(item => item !== '') console.log(result); return result }
|