Code Monkey home page Code Monkey logo

essaytopicpredictv2's Introduction

EssayTopicPredict

image image image image image image

通用型高考作文题目预测模型 v2.0 -人工智能框架,仅限交流与科普。

项目简介

EssayTopicPredict是基于无监督学习、模式识别与NLP领域的最新模型所构建的生成式AIGC考试题预测框架,目前第一版finetune模型针对高考作文,可以有效生成符合人类认知的文章题目。

项目作者 主页1 主页2
Y1ran CSDN Github

框架说明

  • 基于哈工大RoBerta-WWM-EXT、Bertopic、GAN模型的高考题目预测AI
  • 支持bert tokenizer,当前版本基于clue chinese vocab
  • 17亿参数多模块异构深度神经网络,超2亿条预训练数据
  • 可结合作文生成器一起使用:17亿参数作文杀手
  • 端到端生成,从试卷识别到答题卡输出一条龙服务
  • 通过GPT-4模型进行命题指导与判断,同时也可以写/优化范文

本地环境

  • Ubuntu 18.04.2/ Windows10 x86
  • Pandas 0.24.2
  • Regex 2019.4.14
  • h5py 2.9.0
  • Numpy 1.16.2
  • Tensorboard 1.15.2
  • Tensorflow-gpu 1.15.2
  • Requests 2.22.0
  • CUDA >= 10.0
  • CuDNN >= 7.6.0
  • OpenAI API

开发日志

  • 2022.04.23 本地Git项目建立
  • 2022.05.03 整体模型架构搭建,开始语料收集
  • 2022.05.13 数据集清洗、语料处理
  • 2022.05.21 Bertopic+DBSCAN聚类算法
  • 2022.05.31 RoBerta与摘要模型调整
  • 2022.05.30 代码Review与开源发布
  • 2023.05.24 更新chatgpt-4框架辅助判断

模型结构

整个框架分为Proprocess、Bert、DNSCAN 3个模块,每个模块的网络单独训练,参数相互独立。

1. 例子

高考语文试卷作文题

浙江卷

数据准备

人民日报、央视新闻、微博客户端、人民网4个主要爬虫渠道,通过不同API进行爬取(时间为过去12个月内)

修改/train/config.py中train_data_root,validation_data_root以及image_path

训练

cd train  
python train.py

2. 网络结构

2.1 BERT

Whole Word Masking (wwm),暂翻译为全词Mask整词Mask,是谷歌在2019年5月31日发布的一项BERT的升级版本,主要更改了原预训练阶段的训练样本生成策略。 简单来说,原有基于WordPiece的分词方式会把一个完整的词切分成若干个子词,在生成训练样本时,这些被分开的子词会随机被mask。 在全词Mask中,如果一个完整的词的部分WordPiece子词被mask,则同属该词的其他部分也会被mask,即全词Mask

需要注意的是,这里的mask指的是广义的mask(替换成[MASK];保持原词汇;随机替换成另外一个词),并非只局限于单词替换成[MASK]标签的情况。 更详细的说明及样例请参考:#4

同理,由于谷歌官方发布的BERT-base, Chinese中,中文是以为粒度进行切分,没有考虑到传统NLP中的中文分词(CWS)。 我们将全词Mask的方法应用在了中文中,使用了中文维基百科(包括简体和繁体)进行训练,并且使用了哈工大LTP作为分词工具,即对组成同一个的汉字全部进行Mask。

下述文本展示了全词Mask的生成样例。 注意:为了方便理解,下述例子中只考虑替换成[MASK]标签的情况。

说明 样例
原始文本 使用语言模型来预测下一个词的probability。
分词文本 使用 语言 模型 来 预测 下 一个 词 的 probability 。
原始Mask输入 使 用 语 言 [MASK] 型 来 [MASK] 测 下 一 个 词 的 pro [MASK] ##lity 。
全词Mask输入 使 用 语 言 [MASK] [MASK] 来 [MASK] [MASK] 下 一 个 词 的 [MASK] [MASK] [MASK] 。

2.2 DBSCAN

基于密度的噪声应用空间聚类(DBSCAN)是一种无监督的ML聚类算法。无监督的意思是它不使用预先标记的目标来聚类数据点。聚类是指试图将相似的数据点分组到人工确定的组或簇中。它可以替代KMeans和层次聚类等流行的聚类算法。

KMeans vs DBSCAN: KMeans尤其容易受到异常值的影响。当算法遍历质心时,在达到稳定性和收敛性之前,离群值对质心的移动方式有显著的影响。此外,KMeans在集群大小和密度不同的情况下还存在数据精确聚类的问题。K-Means只能应用球形簇,如果数据不是球形的,它的准确性就会受到影响。最后,KMeans要求我们首先选择希望找到的集群的数量。

另一方面,DBSCAN不要求我们指定集群的数量,避免了异常值,并且在任意形状和大小的集群中工作得非常好。它没有质心,聚类簇是通过将相邻的点连接在一起的过程形成的。

中文模型下载

本目录中主要包含base模型,故我们不在模型简称中标注base字样。对于其他大小的模型会标注对应的标记(例如large)。

  • BERT-large模型:24-layer, 1024-hidden, 16-heads, 330M parameters
  • BERT-base模型:12-layer, 768-hidden, 12-heads, 110M parameters

注意:开源版本不包含MLM任务的权重;如需做MLM任务,请使用额外数据进行二次预训练(和其他下游任务一样)。

模型简称 语料 Google下载 百度网盘下载
RBT6, Chinese EXT数据[1] - TensorFlow(密码hniy)
RBT4, Chinese EXT数据[1] - TensorFlow(密码sjpt)
RBTL3, Chinese EXT数据[1] TensorFlow
PyTorch
TensorFlow(密码s6cu)
RBT3, Chinese EXT数据[1] TensorFlow
PyTorch
TensorFlow(密码5a57)
RoBERTa-wwm-ext-large, Chinese EXT数据[1] TensorFlow
PyTorch
TensorFlow(密码dqqe)
RoBERTa-wwm-ext, Chinese EXT数据[1] TensorFlow
PyTorch
TensorFlow(密码vybq)
BERT-wwm-ext, Chinese EXT数据[1] TensorFlow
PyTorch
TensorFlow(密码wgnt)
BERT-wwm, Chinese 中文维基 TensorFlow
PyTorch
TensorFlow(密码qfh8)
BERT-base, ChineseGoogle 中文维基 Google Cloud -
BERT-base, Multilingual CasedGoogle 多语种维基 Google Cloud -
BERT-base, Multilingual UncasedGoogle 多语种维基 Google Cloud -

[1] EXT数据包括:中文维基百科,其他百科、新闻、问答等数据,总词数达5.4B。

查看更多哈工大讯飞联合实验室(HFL)发布的资源:https://github.com/ymcui/HFL-Anthology

python run.py --model bert

Citation

@misc{EssayKillerBrain,
  author = {Turing's Cat},
  title = {Autowritting Ai Framework},
  year = {2022},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/AlanTur1ng/EssayTopicPredict}},
}

参考资料

[1] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
[2] ERNIE: Enhanced Representation through Knowledge Integration
[3] Fine-tune BERT for Extractive Summarization
[4] EAST: An Efficient and Accurate Scene Text Detector
[5] An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition
[6] Language Models are Unsupervised Multitask Learners
[7] https://github.com/Morizeyao/GPT2-Chinese
[8] https://github.com/argman/EAST
[9] https://github.com/bgshih/crnn
[10] https://github.com/zhiyou720/chinese_summarizer
[11] https://zhuanlan.zhihu.com/p/64737915
[12] https://github.com/ouyanghuiyu/chineseocr_lite
[13] https://github.com/google-research/bert
[14] https://github.com/rowanz/grover
[15] https://github.com/wind91725/gpt2-ml-finetune-
[16] https://github.com/guodongxiaren/README
[17] https://www.jianshu.com/p/55560d3e0e8a
[18] https://github.com/YCG09/chinese_ocr
[19] https://github.com/xiaomaxiao/keras_ocr
[20] https://github.com/nghuyong/ERNIE-Pytorch
[21] https://zhuanlan.zhihu.com/p/43534801
[22] https://blog.csdn.net/xuxunjie147/article/details/87178774/
[23] https://github.com/JiangYanting/Pre-modern_Chinese_corpus_dataset
[24] https://github.com/brightmart/nlp_chinese_corpus
[25] https://github.com/SophonPlus/ChineseNlpCorpus
[26] https://github.com/THUNLP-AIPoet/Resources
[27] https://github.com/OYE93/Chinese-NLP-Corpus
[28] https://github.com/CLUEbenchmark/CLUECorpus2020
[29] https://github.com/zhiyou720/chinese_summarizer

免责声明

该项目中的内容仅供技术研究与科普,不作为任何结论性依据,不提供任何商业化应用授权

essaytopicpredictv2's People

Contributors

y1ran avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

essaytopicpredictv2's Issues

这不是问题,这是致谢!

   虽然阴差阳错的学了点编程的皮毛,但本职工作是高中语文老师。地处十八线小县城,教育资源薄弱。想了解高考风向什么的,向来是请所谓专家来侃大山。也经历过专家预测全歪的惨剧,偶然看到作者的视频找到这儿,虽然今年带的是高二,但也不影响向高三的同事们安利作者的视频(和同事朋友一分析,21个预测主题里,有14个主题和教师预测的相同或类似或强相关),遗憾的是看到视频的时间还是太迟了一些,高三学生已经离校放温书假了。
 但是,以一个语文教师的角度看这个项目,它的意义远不在预测一下高考风向而已(事实上我们也不赞同学生以撞大运的心态去准备高考),单是能从给定语料中分析出关键词或主题来,就意味着教师对教学资源的筛选和分析效率能有指数级的提高!高中语文教学中一头是浩如烟海的文本,一头是时间精力有限的学生,中间的桥梁是老师,“桥梁”关心的就是如何能更快更好的将最适合学生的资源交到他们手里。身处县中,不得不承认,我们这些桥梁可能永远也比不上发达地区。像我,普通师范院校毕业,既不是博士硕士也谈不上学富五车,总是心中惶惶,怕误人子弟。但人力有时而穷,AI却有独到之处。 虽然预测结果如何,还有3天才能见分晓,可是这个项目已经隐隐让我看到了信息化促进教育公平这句口号至少在中学语文学科上落到实处的可能性。期待有一天,在技术的帮助下,那些教育资源薄弱地区的孩子,那些真正刻苦的孩子,真正有天赋的孩子,能在一个更公平的环境中实现他们的梦想... ...
心情激动,有些不知所云,在此向作者致谢。

关于chatgpt辅助的消融实验

在视频中提到,本地模型训练得出第一轮信息,压缩后给chat4利用泛化信息判断。

但我个人对于泛化信息能否帮助模型进行进一步筛选存在疑惑,理由是本地模型在见过本地获取数据后具有更加专业的能力,而chat所用的训练数据可能没有包括这部分的中文语料,导致本地模型在专有任务上表现能力更强。

具体的做法是仅使用本地模型输出有限个主题并直接作为结果。或者请问作者是否观测过chat是否在排除低效主题发挥作用。

总之感谢作者的知识和代码分享,让我获益颇丰。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.