读芯术python讲得怎么样_翟天临的噩梦:怎样用Python检测抄袭行为?
本教程将介绍如何使用机器学习技术(如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检测抄袭行为?相关推荐
- 读芯术python教程答案_攻略Python的免费书单:走进编程,从这五本书开始
全文共1245字,预计学习时长5分钟 图源:unsplash Python一向是数据科学家最青睐的编程语言,它的语法相对简单.易于学习.除了机器学习数据库之外,还有非常活跃的开发人员社区,维护着各种库 ...
- 读芯术python数据处理答案_python数据处理(二)
一.csv 文件格式 看下.csv文件的定义: 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数 ...
- “读芯术”精华文章汇总:专业知识
学习资源 & 学习方法 1. 17门AI课程,为你前途加分 2. 超级大汇总!200多个最好的机器学习.NLP和Python教程 3. 从理论到学习时间表:教你正月30天速成Python 4. ...
- “读芯术”精华文章汇总:前程规划
面试经验 1. 这样面试,你的成功率将达到90% 2. 这样写简历,数据科学HR主动加你为好友 3. 技能修炼+简历打造,offer统统都到碗里来 4. 1分钟200份简历!NLP如何快速筛选最佳求职 ...
- “读芯术”精华文章汇总:学术报告
AI未来说*青年学术论坛 第一期 数据挖掘专场 1. 抢票,只剩两天 | AI未来说学术论坛 数据挖掘专场 2. "AI未来说·青年学术论坛"正式启动,第一期论坛圆满落幕 3. 李 ...
- python以图搜图_以图搜图(一):Python实现dHash算法(转)
近期研究了一下以图搜图这个炫酷的东西.百度和谷歌都有提供以图搜图的功能,有兴趣可以找一下.当然,不是很深入.深入的话,得运用到深度学习这货.Python深度学习当然不在话下. 这个功能最核心的东西就是 ...
- python递归算法案例教案_电子教案 第8章 Python计算生态
全国计算机等级考试二级教程全国计算机等级考试二级教程 Python语言程序设计语言程序设计 (2020年版) 知识兔w w w . z h is h it u . c o m [第[第8章]章] Py ...
- python具体工作内容_有没有人知道公司里用python工作的内容有什么
2018-07-11 回答 python的特色 简单 python是一种代表简单主义思想的语言.阅读一个良好的python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!python的这种伪代 ...
- python释放变量内存_看完2019年阿里巴巴Python面试题详解,月薪3万不是梦
很多人想自学Python找工作,下面给大家分享一部分阿里巴巴的Python开发工程师的面试题目: 概念理解类题目: 1.请说一下你对迭代器和生成器的区别? 答:(1)迭代器是一个更抽象的概念,任何对象 ...
最新文章
- AP(无线访问接入点(WirelessAccessPoint))
- webpack 前端构建
- 【遥感物候】C#遥感数据GIMMS 3G NDVI头文件批量生成器(几何校正)
- [vue] vue使用v-for遍历对象时,是按什么顺序遍历的?如何保证顺序?
- python spark hadoop_使用Scala或Python列出存储在Hadoop HDFS上的Spark群集中可用的所有文件?...
- 19个很有用的 JavaScript 库
- 零基础机器学习(2)-你的第一个Python程序
- 算法分析之二叉树遍历
- Vue.js——登录界面实现插入背景
- liujian的效果图
- 从fastq生成vcf文件
- 汽车照明全国产化电子元件推荐方案
- 自下而上与自上而下的归并排序
- webpack中对CSS压缩
- 业务:品类和品类管理
- php ajax向后台怎么传数组,利用ajax传递数组及后台接收的方法详解
- 英国大不列颠百科全书_大不列颠计划通过社区编辑接受维基百科
- win10系统要求配置_Win10 1909 系统的优点与缺点和配置要求与优化技巧
- Codeforces713D(二维RMQ)
- Android进阶:多线程断点续传下载