​导语

你的童年我的童年好像都一样

小小身体大大书包上呀上学堂

世界上本没有喜欢上学的小孩

被爸妈打多了,也就有了~

上学意味着什么呢~意味着开始做作业

假期作业没写怎么办?赶紧拿姐妹的来抄,你心里悄咪咪的笑了,终于赶上了最后学委去办公室的那趟高速。

​哈哈哈这很可以,童年的真实情况一览无余了。今天我还看到一个笑话:

为防抄作业,爸爸要求将五胞胎分在五个班 。

​​

这操作真神了,但是哪用这么麻烦撒!

今天小编带大家写一款抄袭检测小脚本,在家就能知道你孩子的作业都互相抄袭了没~

正文

  首先载入所有必要的模块(1):

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

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

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

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

student_files =[doc for doc in os.listdir() if doc.endswith( .txt )]

使用Lambda功能来向量化并计算相似性(3):

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

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

将文本数据向量化(4):

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

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)

总结

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

​​

同学:你因作业作弊已被AI抓获,Python制作一款AI检测抄袭小脚本。相关推荐

  1. AI开发学习: 第一款AI药物诞生:英国公司“光速”制药碾压传统研发

    使用人工智技术开发出第一款药物.这款药物可用来治疗强迫症,不久将开始进入临床测试阶段.需要强调的是,这款药物从提出概念至今不到一年时间.据媒体报道,近期英国初创公司 ExScientia 称,他们已经 ...

  2. AI 数字人制作(方案一):输入一张图片和一段文字即可生成数字人

    方案一: 原文:AI 数字人制作(方案一)_哔哩哔哩_bilibili AI 文字和图片生成数字人(输入一张图片和一段文字即可生成数字人) <用三个开源项目整合成可以商用的数字人项目> 文 ...

  3. 首个官方气象数据集公开,已训练出20多个“青出于蓝”的AI

    郭一璞 发自 凹非寺  量子位 报道 | 公众号 QbitAI 让AI来做天气预报,可能是很有前途的一件事儿. 在今年AI Challenger天气预报赛道的采访中,中国气象局北京气象研究所副所长陈敏 ...

  4. 专访李开复:人类已打开潘多拉盒子,封堵AI变革只会徒劳

    来源:人工智能学家 本文约3623字,建议阅读6分钟. 我们对李开复进行了专访,谈到了众多当前AI领域最受关注的话题. 摘要:近期,李开复新书<AI·未来>在美国同样反响不俗.在荣登多个排 ...

  5. IEEE专访李开复:人类已打开潘多拉盒子,封堵AI变革只会徒劳

    原作 :<IEEE Spectrum>  量子位 转载 | 公众号 QbitAI 近期,李开复新书<AI·未来>在美国同样反响不俗. 在荣登多个排行榜后,IEEE旗下<I ...

  6. ai二维码插件_送你60款AI脚本插件包,已整合成插件面板的形式,方便在AI中调用...

    送你60款AI脚本插件包,已整合成插件面板的形式,方便在AI中调用. (领取方式见文章末尾) [AI脚本插件合集包] 此AI插件包目前有66款ai脚本插件,已经整合成插件面板的形式,方便在AI中调用. ...

  7. 五节课从零起步(无需数学和Python基础)编码实现AI人工智能框架电子书V1

    五节课从零起步  (无需数学和Python 基础)  编码实现AI 人工智能框架          王  家  林        2018/4/15                          ...

  8. 一文看懂“语音识别ASR” | AI产品经理需要了解的AI技术概念

    原标题:一文看懂"语音识别ASR" | AI产品经理需要了解的AI技术概念 温馨提示:文末有[重大福利]:优惠券(金额很大) for 三节课<产品经理P2(进阶)系列课程&g ...

  9. AI时代大点兵——国内外知名AI公司2018年最新盘点【完整版】

    导言 其它机器学习.深度学习算法的全面系统讲解可以阅读<机器学习-原理.算法与应用>,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造. 书的购买链接 书的勘误,优化,源代码资源 据 ...

最新文章

  1. (办公)网页发送到桌面快捷方式怎么做
  2. 因特尔显卡自定义分辨率_蓝宝石RX 5600XT 6G D6 白金版OC显卡评测:两千价位段好选择...
  3. 【c语言】蓝桥杯算法训练 大小写转换
  4. 不借助 Fiori client,直接在手机浏览器里调用 SAP UI5 BarcodeScanner 实现条形码扫描的可能性?
  5. Dev C++,一个好玩的猜数字游戏
  6. IIC驱动5150遇到麻烦
  7. ASP.NET MVC中在 @RenderBody() 或者 @Html.Partial()中需要使用引入外部js,css
  8. C++socket编程(三):3.6 服务端recv客户端发送的数据
  9. 团队项目第二周 - 需求规格说明书 - 天冷记得穿秋裤队
  10. Python strftime()
  11. 2022短视频去水印小程序带流量主/CPS/资源/工具/批量解析/修改MD5
  12. 基于superslide的导航栏 效果切换
  13. 网站备案信息真实性核验单
  14. 探索MapReduce过程及分组详解
  15. 星际争霸2的移动机制-初探
  16. Apache apollo 配置说明及用户名和密码管理
  17. K8S查看容器日志、进入容器内部
  18. crsctl命令详解(原创)
  19. 使用 Nginx 如何部署 web 项目
  20. Windows下Debug模式的检测和OutputDebugString

热门文章

  1. WH5097D有源矩阵驱动的Mini LED背光应用方案
  2. 如何快速的了解一个领域?
  3. 淘宝购物车功能的实现
  4. 开发必备的网络知识极简版 (用于快速梳理)
  5. 软件测试技术之如何编写测试用例(6)
  6. uniapp js 按钮 点击事件 防抖节流 防抖和节流事件的触发
  7. 用python实现语音的分割并保存为.wav文件
  8. 《Java Concurrency in Practice》之原子性(Atomicity)
  9. Incaseformat蠕虫病毒分析
  10. idea插入背景图片