3
3
4
4
5
5
6
- ![ image] ( https://img.shields.io/badge/License-Apache--2.0-green ) ![ image] ( https://img.shields.io/badge/License-MIT-orange ) ![ image] ( https://img.shields.io/badge/pypi-v0.0.1a4-yellowgreen ) ![ image] ( https://img.shields.io/badge/stars-%3C%201k-blue ) ![ image] ( https://img.shields.io/badge/issues-1%20open-brightgreen )
6
+ ![ image] ( https://img.shields.io/badge/License-Apache--2.0-green ) ![ image] ( https://img.shields.io/badge/License-MIT-orange ) ![ image] ( https://img.shields.io/badge/License-Anti--996-red ) ![ image ] ( https://img.shields.io/badge/ pypi-v0.0.1a4-yellowgreen) ![ image] ( https://img.shields.io/badge/stars-%3C%201k-blue ) ![ image] ( https://img.shields.io/badge/issues-1%20open-brightgreen )
7
7
8
8
通用型议论文创作人工智能框架,仅限交流与科普。
9
9
10
- Bilibili视频地址:
10
+ Bilibili视频地址:https://www.bilibili.com/video/av669847658/
11
11
12
12
## 项目简介
13
13
EssayKiller是基于OCR、NLP领域的最新模型所构建的生成式文本创作AI框架,目前第一版finetune模型针对高考作文(主要是议论文),可以有效生成符合人类认知的文章,多数文章经过测试可以达到正常高中生及格作文水平。
14
14
15
15
| 项目作者 | 主页1 | 主页2 | 主页3 |
16
16
| ------------- | :-------------:| :----:| :---:|
17
- | 图灵的猫 | [ 知乎] ( https://www.zhihu.com/people/dong-xi-97-29 ) | [ B站] ( https://space.bilibili.com/371846699 ) | [ Youtube] ( https://www.youtube.com/channel/UCoEVP6iTw5sfozUGLLWJyDg/channels ) |
17
+ | 图灵的猫 | [ 知乎] ( https://www.zhihu.com/people/dong-xi-97-29 ) | [ B站] ( https://space.bilibili.com/371846699 ) | [ Youtube] ( https://www.youtube.com/channel/UCoEVP6iTw5sfozUGLLWJyDg/featured ) |
18
18
19
19
20
20
** 致谢**
@@ -27,15 +27,15 @@ EssayKiller是基于OCR、NLP领域的最新模型所构建的生成式文本创
27
27
- [x] 基于EAST、CRNN、Bert和GPT-2语言模型的高考作文生成AI
28
28
- [x] 支持bert tokenizer,当前版本基于clue chinese vocab
29
29
- [x] 17亿参数多模块异构深度神经网络,超2亿条预训练数据
30
- - [x] 线上点击即用的文本生成效果demo:[ 17亿参数作文杀手] ( https://colab.research.google.com/drive/1rcgQ2Zh_eBilJ40bJ5fd9Xq14D9YGAeh#scrollTo=9W1aX_U0K2VH )
30
+ - [x] 线上点击即用的文本生成效果demo:[ 17亿参数作文杀手] ( https://colab.research.google.com/github/EssayKillerBrain/EssayKiller_V2/blob/master/colab_online.ipynb )
31
31
- [x] 端到端生成,从试卷识别到答题卡输出一条龙服务
32
32
33
33
34
34
35
35
### Colab线上作文生成功能
36
36
国内没有足够显存的免费GPU平台,所以配合Google Drive将训练好的AI核心功能Language Network写作模块迁移到Colab。
37
37
38
- 当前线上仅开放文本生成功能,输入对应句子,AI返回生成文章。同一个句子可以输入多次,每一次输出都不同。也可以选择同时生成多篇文章。具体见:[ 17亿参数作文杀手] ( https://colab.research.google.com/drive/1rcgQ2Zh_eBilJ40bJ5fd9Xq14D9YGAeh#scrollTo=9W1aX_U0K2VH )
38
+ 当前线上仅开放文本生成功能,输入对应句子,AI返回生成文章。同一个句子可以输入多次,每一次输出都不同。也可以选择同时生成多篇文章。具体见:[ 17亿参数作文杀手] ( https://colab.research.google.com/github/EssayKillerBrain/EssayKiller_V2/blob/master/colab_online.ipynb )
39
39
40
40
* 第一步:安装环境
41
41
![ ] ( https://github.com/EssayKillerBrain/EssayKiller_V2/blob/master/References/attachments/Clipboard_2020-09-29-15-22-13.png )
@@ -74,7 +74,7 @@ EssayKiller是基于OCR、NLP领域的最新模型所构建的生成式文本创
74
74
* 2020.09.14 排版脚本与输出装置改装
75
75
76
76
## 模型结构
77
- 整个框架分为EAST、CRNN、Bert、GPT-2、DNN 5个模块,每个模块的网络单独训练,参数相互独立。infer过程使用pipeline串联,通过外接装置直接输出到答题卡。
77
+ 整个框架分为EAST、CRNN、Bert、GPT-2、DNN 5个模块,每个模块的网络单独训练,参数相互独立。infer过程使用pipeline串联,通过外接装置直接输出到答题卡。
78
78
![ ] ( https://github.com/EssayKillerBrain/EssayKiller_V2/blob/master/References/attachments/Clipboard_2020-09-29-15-35-00.png )
79
79
80
80
@@ -85,7 +85,7 @@ EssayKiller是基于OCR、NLP领域的最新模型所构建的生成式文本创
85
85
86
86
### 2. 识别网络
87
87
#### 2.1 EAST文本检测
88
- OpenCV 的EAST文本检测器是一个深度学习模型,它能够在 720p 的图像上以13帧/秒的速度实时检测任意方向的文本,并可以获得很好的文本检测精度。
88
+ OpenCV 的EAST文本检测器是一个深度学习模型,它能够在 720p 的图像上以13帧/秒的速度实时检测任意方向的文本,并可以获得很好的文本检测精度。
89
89
![ ] ( https://github.com/EssayKillerBrain/EssayKiller_V2/blob/master/References/attachments/Clipboard_2020-09-29-15-45-54.png )
90
90
91
91
<br >
@@ -126,7 +126,7 @@ python multigpu_train.py --gpu_list=0 --input_size=512 --batch_size_per_gpu=14 -
126
126
127
127
下载[ 训练集] ( https://pan.baidu.com/s/1E_1iFERWr9Ro-dmlSVY8pA ) :共约364万张图片,按照99: 1划分成训练集和验证集
128
128
129
- 数据利用中文语料库(新闻 + 文言文),通过字体、大小、灰度、模糊、透视、拉伸等变化随机生成。包含汉字、英文字母、数字和标点共5990个字符,每个样本固定10个字符,字符随机截取自语料库中的句子,图片分辨率统一为280x32。
129
+ 数据利用中文语料库(新闻 + 文言文),通过字体、大小、灰度、模糊、透视、拉伸等变化随机生成。包含汉字、英文字母、数字和标点共5990个字符,每个样本固定10个字符,字符随机截取自语料库中的句子,图片分辨率统一为280x32。
130
130
131
131
* 修改/train/config.py中train_data_root,validation_data_root以及image_path*
132
132
@@ -224,15 +224,15 @@ python run.py --model bert
224
224
预训练语料来自 [ THUCNews] ( http://thuctc.thunlp.org/#%E4%B8%AD%E6%96%87%E6%96%87%E6%9C%AC%E5%88%86%E7%B1%BB%E6%95%B0%E6%8D%AE%E9%9B%86THUCNews ) 以及 [ nlp_chinese_corpus] ( https://github.com/brightmart/nlp_chinese_corpus ) ,清洗后总文本量约 15G。
225
225
Finetune语料来自历年满分高考作文、优质散文集以及近现代散文作品,约1000篇。
226
226
227
- ** 预训练**
227
+ ** 预训练**
228
228
参考 [ GPT2-ML] ( https://github.com/imcaspar/gpt2-ml/ ) 预训练模型,使用 [ Quadro RTX 8000] ( https://www.nvidia.com/en-us/design-visualization/quadro/rtx-8000/ ) 训练 28w 步
229
229
230
230
> ![ ] ( https://github.com/EssayKillerBrain/EssayKiller_V2/blob/master/References/attachments/2233.PNG )
231
231
232
232
233
233
<br >
234
234
235
- ** Finetue **
235
+ ** Finetune **
236
236
237
237
``` bash
238
238
1、进入dataset目录
@@ -255,10 +255,10 @@ CUDA_VISIBLE_DEVICES=0 python train/train_wc.py --input_file=/data/EssayKiller/
255
255
![ ] ( https://github.com/EssayKillerBrain/EssayKiller_V2/blob/master/References/attachments/Clipboard_2020-09-29-18-59-12.png )
256
256
257
257
这部分直接调用百度API。有现成的模型就不重复造轮子了,具体实现方式百度没有开源,这里简单描述一下语言模型的概念:
258
- 语言模型是通过计算给定词组成的句子的概率,从而判断所组成的句子是否符合客观语言表达习惯。通常用于机器翻译、拼写纠错、语音识别、问答系统、词性标注、句法分析和信息检索等。
258
+ 语言模型是通过计算给定词组成的句子的概率,从而判断所组成的句子是否符合客观语言表达习惯。通常用于机器翻译、拼写纠错、语音识别、问答系统、词性标注、句法分析和信息检索等。
259
259
![ ] ( https://github.com/EssayKillerBrain/EssayKiller_V2/blob/master/References/attachments/Clipboard_2020-09-29-18-59-57.png )
260
260
261
- 这里使用通顺度打分作为判断依据。
261
+ 这里使用通顺度打分作为判断依据。
262
262
263
263
#### 3.2 高考排版器
264
264
@@ -272,7 +272,7 @@ CUDA_VISIBLE_DEVICES=0 python train/train_wc.py --input_file=/data/EssayKiller/
272
272
3 . 每个字符尽量保持在字体框内
273
273
4 . 字数不能过长或过短
274
274
275
- 由于模型输出的文章不保证换行和分段,通过统计高考作文的常见段数、每段句数,编写脚本对输出进行划分。大多数情况下分段排版的结果都比较合理。
275
+ 由于模型输出的文章不保证换行和分段,通过统计高考作文的常见段数、每段句数,编写脚本对输出进行划分。大多数情况下分段排版的结果都比较合理。
276
276
![ ] ( https://github.com/EssayKillerBrain/EssayKiller_V2/blob/master/References/attachments/Clipboard_2020-09-29-19-04-24.png )
277
277
278
278
<br >
@@ -284,7 +284,7 @@ CUDA_VISIBLE_DEVICES=0 python train/train_wc.py --input_file=/data/EssayKiller/
284
284
** 外接装置**
285
285
286
286
基于aedraw,一款开源的CNC(Computer Numerical Control数控机床)画图机器人,具有绘制图案、写字等功能,它也可以升级为激光雕刻等用途。
287
- 详细教程见 http://aelab.net/ ,不仅能自己制作一台写字绘画机器人,而且能够掌握其工作原理拓展更多的应用。
287
+ 详细教程见 http://aelab.net/ ,不仅能自己制作一台写字绘画机器人,而且能够掌握其工作原理拓展更多的应用。
288
288
289
289
![ ] ( https://github.com/EssayKillerBrain/EssayKiller_V2/blob/master/References/attachments/Clipboard_2020-09-29-19-12-07.png )
290
290
@@ -299,39 +299,57 @@ CUDA_VISIBLE_DEVICES=0 python train/train_wc.py --input_file=/data/EssayKiller/
299
299
300
300
| 模型 | 参数量 | 下载链接 | 备注 |
301
301
| ------------- | :-------------:| :----:| :---:|
302
- | EAST | < 0.1 Billion | [ GoogleDrive] ( https://pan.baidu .com/s/1S9WpyXZ_wVWbKo-WsB0q5A ) 提取码:sxhh | 检测模型 |
302
+ | EAST | < 0.1 Billion | [ GoogleDrive] ( https://drive.google .com/file/d/1fF4IYaL7CWghYCDvRrACM57WVx83Yvny/view?usp=sharing ) | 检测模型 |
303
303
| CRNN | < 0.1 Billion | [ 网盘链接] ( https://eyun.baidu.com/s/3dEUJJg9 ) 提取码:vKeD| 识别模型 |
304
- | BERT | 0.1 Billion | [ GoogleDrive] ( https://pan.baidu .com/s/1BrdFSx9_n1q2uWBiQrpalw ) 提取码:kim2 | 摘要模型 |
304
+ | BERT | 0.1 Billion | [ GoogleDrive] ( https://drive.google .com/file/d/15DbA07DZNT3gMXu2aLliA3CkuR5XHhlt/view?usp=sharing ) | 摘要模型 |
305
305
| GPT-2 | 1.5 Billion | [ GoogleDrive] ( https://drive.google.com/file/d/1ujWYTOvRLGJX0raH-f-lPZa3-RN58ZQx/view?usp=sharing ) | 生成模型 |
306
306
307
307
整个AI的参数量分布不均匀,主要原因在于,这是一个语言类AI,99%的参数量集中在语言网络中,其中GPT-2(15亿)占88%,BERT(1.1亿)占7%,其他的识别网络和判分网络共占5%。
308
308
309
309
### 当前问题
310
310
* 输出的格式和高考作文还不能完美契合,之后的参数需要微调一下。为了国庆前完成,我还没来得及优化
311
311
* 生成的100篇作文里有很大一部分其实算不上合格的作文,有些只能勉强及格,有些甚至能拿零分(占比不多),显然GPT-2的能力有限。为了视频效果我只选了相对好的几篇做展示
312
+ * 英文版的说明还没来得及写,有空的同学可以翻译一下提个pr
312
313
313
314
## Q&A
314
- * ** 我能否用EssayKiller来帮自己写作业?**
315
- 不能。所以有下一个问题:
315
+ * ** 我能否用EssayKiller来帮自己写作业?**
316
+ 不能。所以有下一个问题:
316
317
317
- * ** 为什么缺少一些关键文件?**
318
- 项目在一开始是完全开源的,经过慎重考虑我认为完全开源会被部分别有用心的人用以牟利,甚至用作不法用途。参考咸鱼和淘宝上一些魔改的开源框架应用。部分懂技术又不想动笔的小同志可能会让Essaykiller帮自己写作业,比如读后感、课后作文、思修小论文。我想说,这样不好。
318
+ * ** 为什么缺少一些关键文件?**
319
+ 项目在一开始是完全开源的,经过慎重考虑我认为完全开源会被部分别有用心的人用以牟利,甚至用作不法用途。参考咸鱼和淘宝上一些魔改的开源框架应用。部分懂技术又不想动笔的小同志可能会让Essaykiller帮自己写作业,比如读后感、课后作文、思修小论文。我想说,这样不好。
319
320
320
- * ** 为什么不直接加密?**
321
- 本来打算用混淆加密,但一些模块本就是开源的,所以我开源了整体的模型文件,只隐藏了关键的,包括pipeline、输入输出在内的文件,另外有些文件里也加了盐。
321
+ * ** 为什么不直接加密?**
322
+ 本来打算用混淆加密,但一些模块本就是开源的,所以我开源了整体的模型文件,只隐藏了关键的,包括pipeline、输入输出在内的文件,另外有些文件里也加了盐。
322
323
323
- * ** 有哪些模组可用?**
324
+ * ** 有哪些模组可用?**
324
325
目前完全开源,可以独立复用的部分包括:
325
326
- [x] 检测网络
326
327
- [x] 文本摘要网络
327
328
- [x] 文本生成网络
328
- - [x] 判分网络与排版脚本
329
+ - [x] 判分网络与排版脚本
329
330
330
- * ** 为什么不用GPT-3**
331
- 训练一个中文GPT-3的价格至少为1200万美元,折合人民币将近1亿。要是真有人训练出来一个中文GPT-3还开源模型文件了,我愿称之为最强。
331
+ * ** 为什么不用GPT-3**
332
+ 训练一个中文GPT-3的价格至少为1200万美元,折合人民币将近1亿。要是真有人训练出来一个中文GPT-3还开源模型文件了,我愿称之为最强。
333
+
334
+ * ** 训练EssayKiller需要多少钱?**
335
+ 从头到尾训练完pipeline的话在1K~100K人民币不等,取决于你有无分布式集群可用
336
+
337
+ <br >
338
+
339
+ ## Citation
340
+ ```
341
+ @misc{EssayKillerBrain,
342
+ author = {Turing's Cat},
343
+ title = {Autowritting Ai Framework},
344
+ year = {2020},
345
+ publisher = {GitHub},
346
+ journal = {GitHub repository},
347
+ howpublished = {\url{https://github.com/EssayKillerBrain/EssayKiller}},
348
+ }
349
+ ```
350
+
351
+ <br >
332
352
333
- * ** 训练EssayKiller需要多少钱?**
334
- 从头到尾训练完pipeline的话在1K~100K人民币不等,取决于你有无分布式集群可用
335
353
336
354
## 参考资料
337
355
[ 1] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
@@ -364,22 +382,6 @@ CUDA_VISIBLE_DEVICES=0 python train/train_wc.py --input_file=/data/EssayKiller/
364
382
[ 28] https://github.com/CLUEbenchmark/CLUECorpus2020
365
383
[ 29] https://github.com/zhiyou720/chinese_summarizer
366
384
367
- <br >
368
-
369
- ## Citation
370
- ```
371
- @misc{EssayKillerBrain,
372
- author = {Turing's Cat},
373
- title = {Autowritting Ai Framework},
374
- year = {2020},
375
- publisher = {GitHub},
376
- journal = {GitHub repository},
377
- howpublished = {\url{https://github.com/EssayKillerBrain/EssayKiller}},
378
- }
379
- ```
380
-
381
- <br >
382
385
383
386
## 免责声明
384
387
该项目中的内容仅供技术研究与科普,不作为任何结论性依据,不提供任何商业化应用授权
385
-
0 commit comments