3fb3-kefmphe2082378.jpg

本教程将介绍如何使用机器学习技术(如word2vec和余弦相似度等),在Python中用几行代码制作抄袭检测器。搭建完成后,抄袭检测器将会从文件中载入学生们的作业,然后通过计算相似度来判断学生有无相互抄袭行为。

要求

本教程需要在计算机上安装scikit-learn。

安装

pip install -Uscikit-learn

怎样分析文本?

如你所知,电脑只能理解0和1。首先需要将文本转换成数字再对文本数据进行计算。

词嵌入

将文本数据转换为数字阵列的过程通常称为词嵌入(word embedding),我们将使用sci-kit-learn内置功能来完成此任务。

将文本数据转换为矢量不是随机过程,而是遵循某些算法,从而将单词表示为空间中的位置。这一点将通过使用scikit-learn内置功能来实现。

怎样检测文档的相似性?

这里需要使用向量、点积的基本概念来确定两个文本的相似度,也就是计算学生的文本作业的向量代表之间的余弦相似度值。

此外还需要学生作业中的样本文档来测试模型。文本文件必须与脚本位于同一目录中,扩展名为“.txt”。文件目录如下:

. ├──app.py ├── fatma.txt ├── image.png ├── john.txt └──juma.txt

一起来搭建抄袭探测器

· 首先载入所有必要的模块

import os from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics.pairwise import cosine_similarity

使用OS模块加载文本文件的路径,然后使用TfidfVectorizer对文本数据和余弦相似度执行词嵌入,来计算是否存在抄袭。

· 用列表推导式(List Comprehension)读取所有文本文件

接下来使用列表推导式来加载项目目录中所有的路径文件,如下:

vectorize =lambda Text: TfidfVectorizer().fit_transform(Text).toarray()similarity = lambda doc1, doc2:cosine_similarity([doc1, doc2])

· 使用Lambda功能来向量化并计算相似性。

需要创建两个lambda函数,一个用来将文本转换成数字数组,另一个用来计算它们的相似性。

vectorize =lambda Text: TfidfVectorizer().fit_transform(Text).toarray()similarity = lambda doc1, doc2:cosine_similarity([doc1, doc2])

· 将文本数据向量化

加入下列两行代码,将加载的学生文件向量化:

vectors =vectorize(student_notes)s_vectors = list(zip(student_files,vectors))

创造一个计算相似性的功能。下面是脚本的主要功能,负责管理计算学生之间相似度的整个过程。

def check_plagiarism():     plagiarism_results = set()     global s_vectors     for student_a, text_vector_a in s_vectors:         new_vectors=s_vectors.copy()         current_index = new_vectors.index((student_a,text_vector_a))         del new_vectors[current_index]         for student_b , text_vector_b in new_vectors:             sim_score =similarity(text_vector_a, text_vector_b)[0][1]             student_pair= sorted((student_a, student_b))             score = (student_pair[0], student_pair[1],sim_score)             plagiarism_results.add(score)     return plagiarism_results Let’s print plagiarism results for data in check_plagiarism():     print(data)

· 最终代码

完成上述所有操作后会得到如下脚本,可以检测学生作业中是否存在抄袭行为。

import os from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics.pairwise import cosine_similaritystudent_files = [doc for doc in os.listdir() if doc.endswith('.txt')] student_notes=[open(File).read() for File in student_files]vectorize = lambda Text:TfidfVectorizer().fit_transform(Text).toarray() similarity = lambda doc1, doc2: cosine_similarity([doc1,doc2])vectors = vectorize(student_notes) s_vectors= list(zip(student_files, vectors))def check_plagiarism():     plagiarism_results = set()     global s_vectors     for student_a, text_vector_a in s_vectors:         new_vectors=s_vectors.copy()         current_index = new_vectors.index((student_a,text_vector_a))         del new_vectors[current_index]         for student_b , text_vector_b in new_vectors:             sim_score =similarity(text_vector_a, text_vector_b)[0][1]             student_pair= sorted((student_a, student_b))             score = (student_pair[0], student_pair[1],sim_score)             plagiarism_results.add(score)         return plagiarism_resultsfor data in check_plagiarism():     print(data)

· 输出:

运行上述app.py,结果如下:

$ python app.py#__________RESULT ___________ ('john.txt', 'juma.txt', 0.5465972177348937)('fatma.txt', 'john.txt', 0.14806887549598566)('fatma.txt', 'juma.txt', 0.18643448370323362)

抄袭检测器完成啦!老师们用起来,广大中小学生们的美梦就此结束了。

读芯术python讲得怎么样_翟天临的噩梦:怎样用Python检测抄袭行为?相关推荐

  1. 读芯术python教程答案_攻略Python的免费书单:走进编程,从这五本书开始

    全文共1245字,预计学习时长5分钟 图源:unsplash Python一向是数据科学家最青睐的编程语言,它的语法相对简单.易于学习.除了机器学习数据库之外,还有非常活跃的开发人员社区,维护着各种库 ...

  2. 读芯术python数据处理答案_python数据处理(二)

    一.csv 文件格式 看下.csv文件的定义: 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数 ...

  3. “读芯术”精华文章汇总:专业知识

    学习资源 & 学习方法 1. 17门AI课程,为你前途加分 2. 超级大汇总!200多个最好的机器学习.NLP和Python教程 3. 从理论到学习时间表:教你正月30天速成Python 4. ...

  4. “读芯术”精华文章汇总:前程规划

    面试经验 1. 这样面试,你的成功率将达到90% 2. 这样写简历,数据科学HR主动加你为好友 3. 技能修炼+简历打造,offer统统都到碗里来 4. 1分钟200份简历!NLP如何快速筛选最佳求职 ...

  5. “读芯术”精华文章汇总:学术报告

    AI未来说*青年学术论坛 第一期 数据挖掘专场 1. 抢票,只剩两天 | AI未来说学术论坛 数据挖掘专场 2. "AI未来说·青年学术论坛"正式启动,第一期论坛圆满落幕 3. 李 ...

  6. python以图搜图_以图搜图(一):Python实现dHash算法(转)

    近期研究了一下以图搜图这个炫酷的东西.百度和谷歌都有提供以图搜图的功能,有兴趣可以找一下.当然,不是很深入.深入的话,得运用到深度学习这货.Python深度学习当然不在话下. 这个功能最核心的东西就是 ...

  7. python递归算法案例教案_电子教案 第8章 Python计算生态

    全国计算机等级考试二级教程全国计算机等级考试二级教程 Python语言程序设计语言程序设计 (2020年版) 知识兔w w w . z h is h it u . c o m [第[第8章]章] Py ...

  8. python具体工作内容_有没有人知道公司里用python工作的内容有什么

    2018-07-11 回答 python的特色 简单 python是一种代表简单主义思想的语言.阅读一个良好的python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!python的这种伪代 ...

  9. python释放变量内存_看完2019年阿里巴巴Python面试题详解,月薪3万不是梦

    很多人想自学Python找工作,下面给大家分享一部分阿里巴巴的Python开发工程师的面试题目: 概念理解类题目: 1.请说一下你对迭代器和生成器的区别? 答:(1)迭代器是一个更抽象的概念,任何对象 ...

最新文章

  1. AP(无线访问接入点(WirelessAccessPoint))
  2. webpack 前端构建
  3. 【遥感物候】C#遥感数据GIMMS 3G NDVI头文件批量生成器(几何校正)
  4. [vue] vue使用v-for遍历对象时,是按什么顺序遍历的?如何保证顺序?
  5. python spark hadoop_使用Scala或Python列出存储在Hadoop HDFS上的Spark群集中可用的所有文件?...
  6. 19个很有用的 JavaScript 库
  7. 零基础机器学习(2)-你的第一个Python程序
  8. 算法分析之二叉树遍历
  9. Vue.js——登录界面实现插入背景
  10. liujian的效果图
  11. 从fastq生成vcf文件
  12. 汽车照明全国产化电子元件推荐方案
  13. 自下而上与自上而下的归并排序
  14. webpack中对CSS压缩
  15. 业务:品类和品类管理
  16. php ajax向后台怎么传数组,利用ajax传递数组及后台接收的方法详解
  17. 英国大不列颠百科全书_大不列颠计划通过社区编辑接受维基百科
  18. win10系统要求配置_Win10 1909 系统的优点与缺点和配置要求与优化技巧
  19. Codeforces713D(二维RMQ)
  20. Android进阶:多线程断点续传下载

热门文章

  1. C++继承(多继承、菱形继承?)
  2. 向明汉语成语词典 v2007 build 0380 下载
  3. 解锁产业新风向,2023国际无人机应用及防控大会聚势盛启
  4. css+html简单的按钮特效
  5. Android学习笔记 ------ Gradle Plugin 插件制作流程
  6. java8 List去重
  7. 网页广告代码php,【网页广告特效代码】精选5种常用的网页广告特效代码
  8. poiExcel表格所有操作以及数据导入导出
  9. 实现对rtp H264码流的组帧
  10. Publisher/Subscriber 订阅-发布模式原理解析