【学习笔记】开源中文对话预训练模型调研总结

2023-11-20

开源中文对话预训练模型调研


总结了一下当前(截止2023年4月18日)最新的几个开源的大规模中文预训练开放域对话生成模型。

M o d e l Model Model n p a r a m s n_{params} nparams n l a y e r s n_{layers} nlayers d m o d e l d_{model} dmodel d f f d_{ff} dff n h e a d s n_{heads} nheads d h e a d d_{head} dhead n_position
E V A 2. 0 B a s e EVA2.0_{Base} EVA2.0Base 300M 12 768 3072 12 64 512
E V A 2. 0 L a r g e EVA2.0_{Large} EVA2.0Large 970M 24 1024 4096 16 64 512
E V A 2. 0 x L a r g e EVA2.0_{xLarge} EVA2.0xLarge 2.8B 24 2048 5120 32 64 512
C D i a l G P T L C C C − b a s e CDialGPT_{LCCC-base} CDialGPTLCCCbase 104M 12 768 3072 12 64 513
C D i a l G P T 2 L C C C − b a s e CDialGPT2_{LCCC-base} CDialGPT2LCCCbase 104M 12 768 3072 12 64 513
C D i a l G P T L C C C − l a r g e CDialGPT_{LCCC-large} CDialGPTLCCClarge 104M 12 768 3072 12 64 513
G P T 2 − c h i t c h a t GPT2-chitchat GPT2chitchat 88M 12 768 3072 12 64 300
dialogue-bart-base-chinese 6 768 3072 12 64 512
dialogue-bart-large-chinese 12 1024 4096 16 64 512

1. CDial-GPT

主要工作

  • Paper:A Large-Scale Chinese Short-Text Conversation Dataset
  • 开源地址:https://github.com/scutcyr/CDial-GPT
  • 主要贡献:(1)发布了一个经过严格过滤清洗后的大规模高质量中文对话语料库LCCC,base版本包括680万个对话,large版本包括1200万(12M)个对话。(2)同时发布了几个大规模预训练对话模型CDialGPT,首先在中文小说数据集上进行预训练,然后在LCCC上进行训练。

LCCC数据集

数据清洗策略

基于规则的清洗
  • 删除平台标记:Reply to @***,[dog];

  • 删除文本中的URL;

  • 大于30轮的对话分割为小于三十轮的多个对话;

  • 一个句子中重复6次以上的短语或单词只保留一份;

  • 删除回复太长或太短的对话;

  • 删除广告(A dataset for research on short-text conversations,EMNLP2013);

  • 如果回复中90%的三元语法是高频三元语法,则删除对话;

  • 如果回复是具有某些特定形式的通用回复,则删除对话;

  • 删除回复与帖子相同的对话;

  • 去除含有脏词、敏感词、方言、特殊词如左氧氟沙星、姓名、称呼或者未知的缩写、特殊符号和表情符号、平台标志如广告、图片、视频相关词语的对话。

基于分类器的清洗

(1)人工标注了十万个对话训练一个BERT,识别对话是否为噪声:

  • 文本不流利或者严重的拼写错误;
  • 回复不完整;
  • 时间敏感的;
  • 回复中出现节日、地点、性别时间等post没提到的;
  • 回复和上下文不相关的;

(2)人工标注了一万个话语训练一个BERT,识别出现外部上下文知识,超出文本,使人难以理解。

image-20230403212441322

模型

输入表征

把所有历史话语拼接成一个长文本序列,输入包括三种embedding之和,分别为word embedding,speaker embedding,position embedding。词嵌入和位置嵌入在预训练阶段学习,说话人嵌入则在后训练(微调)阶段学习。speaker embedding嵌入被用来表明不同的说话人,参考BERT,使用[CLS]和[SEP]表征一个句子的开始符和结束符。

训练

参考DialoGPT,基于Chinese-GPT(GPT-Novel),在LCCC上进行训练。对于多轮对话,将第二个到最后一个句子都作为对话历史的回复

GPT(Noval):12层GPT,104M参数;

CDialGPT(LCCC-base):12层GPT,104M参数;

CDialGPT2(LCCC-base):12层GPT2,104M参数;

CDialGPT(LCCC-large):12层GPT,104M参数;

2. GPT2-chitchat

参考了GPT2-Chinese和DialoGPT。

开源地址:https://github.com/yangjianxin1/GPT2-chitchat。

使用GPT2模型对中文闲聊语料进行训练,根据微软的DialoGPT的思想,在项目中添加了互信息。训练了两个模型:Dialogue Model与MMI Model(maximum mutual information scoring function)。首先使用Dialogue Model生成多个候选response,然后使用MMI Model从候选response中,选取loss最小的作为最终的response。

具体可见:https://zhuanlan.zhihu.com/p/101151633

3. EVA1.0

  • Paper:EVA: An Open-Domain Chinese Dialogue System with Large-Scale Generative Pre-Training
  • 主要贡献:提出了EVA,一个大规模中文预训练对话模型,参数量为2B;构建了一个严格清洗过滤的大规模中文对话数据集WDC-Dialogue,包含1.4B个对话。
  • 开源项目地址:https://github.com/thu-coai/EVA

WDC-DIalogue数据集

数据收集

社交媒体上的交互数据可以分为三类:

  • Repost:转发博客,和被转发者产生一个对话;
  • Comment:评论和回复;
  • Q&A:在线问答,在知乎这类平台多。

数据清洗

参照LCCC的数据清洗策略和方法。

模型

分词

传统的基于字符级的中文分词容易丢失汉语词汇或短语的重要于一,因此构建了一个中文的子词词表,包括中文的字和词,基于Sentencepiece的unigram language model。总共包含3万个词。

预训练细节

  • Encoder-Decoder型架构;

  • 对于n个utterance,以n-1个utterances编码,生成第n个utterance。

  • 最大编码和解码长度设置为128。

  • 为了解决短utterance被大量pad的效率瓶颈,提出了一个新的数据采样策略,将多个context-response pairs拼成一个样本,引入新的attention-mask来区分它们,确保它们不会互相干扰。

  • EVA采用和T5一样的相对位置编码。

实验

实验比较发现,EVA生成性能比CDialGPT好,主要体现在生成结果的信息性上,CDialGPT可能更倾向于生成通用回复。

4. EVA2.0

  • Paper:EVA2.0: Investigating Open-domain Chinese Dialogue Systems with Large-scale Pre-training
  • 开源项目地址:https://github.com/thu-coai/EVA

这是目前开源的参数量最大,性能最好的中文对话预训练模型,相比EVA1.0它进行了更严格的数据清洗和过滤。这篇文章讲述了如何构造一个中文开放域的大规模对话系统,并做了一些严谨的实验去研究对训练结果造成影响的因素,如模型层数设置、预训练方法、解码策略,并且说明了对话系统仍然存在一致性、知识性、安全性的问题。

5. dialogue-bart-chinese

HIT-TMG开源的基于BART的中文对话模型,模型在四个语料库上训练。Chinese Persona Chat、LCCC (CPC)、Emotional STC (ESTC)、KdConv。

详情可见:

https://huggingface.co/HIT-TMG/dialogue-bart-base-chinese

https://huggingface.co/HIT-TMG/dialogue-bart-large-chinese

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【学习笔记】开源中文对话预训练模型调研总结 的相关文章

  • browserify :- 未捕获类型错误:fs.readFileSync 不是函数

    我试图在我的代码中使用natural js 在客户端使用它 我使用browserify 但它给出了一个错误 Uncaught TypeError fs readFileSync is not a function at loadDictio
  • 我应该如何使用 scikit learn 对以下列表进行矢量化?

    我想用 scikit 进行矢量化学习一个有列表的列表 我转到有训练文本的路径 我阅读了它们 然后我得到如下内容 corpus this is spam SPAM this is ham HAM this is nothing NOTHING
  • 日期自然语言解析器(.NET)?

    我希望能够让用户使用自然语言 例如 下周五 每个工作日 输入日期 包括重复日期 很像以下的例子http todoist com Help timeInsert http todoist com Help timeInsert I found
  • Keras 文本预处理 - 将 Tokenizer 对象保存到文件中以进行评分

    我按照以下步骤 大致 使用 Keras 库训练了一个情感分类器模型 使用 Tokenizer 对象 类将文本语料库转换为序列 使用 model fit 方法构建模型 评估这个模型 现在 为了使用此模型进行评分 我可以将模型保存到文件中并从文
  • word2vec gensim 多种语言

    这个问题完全超出了我的想象 我正在使用 gensim 训练 Word2Vec 模型 我提供了多种语言的数据 即英语和印地语 当我试图找到最接近 人 的词时 我得到的是 model wv most similar positive man O
  • 在Python或Sklearn中用整数值对具有字符串值的列变量进行编码

    如何用整数值对数据表中字符串类型的列值进行编码 例如 我有两个特征变量 颜色 可能的字符串值 R G 和 B 和技能 可能的字符串值 C Java SQL 和 Python 给定数据表有两列 Color gt R G B B G R B G
  • 比较文本文档含义的最佳方法?

    我正在尝试找到使用人工智能和机器学习方法来比较两个文本文档的最佳方法 我使用了 TF IDF Cosine 相似度和其他相似度度量 但这会在单词 或 n gram 级别上比较文档 我正在寻找一种方法来比较meaning的文件 最好的方法是什
  • scikit加权f1分数计算及使用

    我有一个关于weightedsklearn metrics f1 score 中的平均值 sklearn metrics f1 score y true y pred labels None pos label 1 average weig
  • 将 python NLTK 解析树保存到图像文件[重复]

    这个问题在这里已经有答案了 这可能会复制这个 stackoverflowquestion https stackoverflow com questions 23429117 saving nltk drawn parse tree to
  • 如何确保用户只提交英文文本

    我正在构建一个涉及自然语言处理的项目 由于nlp模块目前只处理英文文本 所以我必须确保用户提交的内容 不长 只有几个单词 是英文的 是否有既定的方法来实现这一目标 首选 Python 或 Javascript 方式 如果内容足够长我会推荐一
  • 用于估计(一元)困惑度的 NLTK 包

    我正在尝试计算我所拥有的数据的困惑度 我正在使用的代码是 import sys sys path append usr local anaconda lib python2 7 site packages nltk from nltk co
  • SpaCy 模型“en_core_web_sm”的词汇量大小

    我尝试在 SpaCy 小模型中查看词汇量 model name en core web sm nlpp spacy load model name len list nlpp vocab strings 只给了我 1185 个单词 我也在同
  • 将复数名词转换为单数名词

    如何使用 R 将复数名词转换为单数名词 我使用 tagPOS 函数来标记每个文本 然后提取所有标记为 NNS 的复数名词 但是如果我想将这些复数名词转换为单数该怎么办 library openNLP library tm acq o lt
  • AttributeError:类型对象“Word2Vec”没有属性“load_word2vec_format”

    我正在尝试实现 word2vec 模型并收到属性错误 AttributeError 类型对象 Word2Vec 没有属性 load word2vec format 下面是代码 wv Word2Vec load word2vec format
  • 保存具有自定义前向功能的 Bert 模型并将其置于 Huggingface 上

    我创建了自己的 BertClassifier 模型 从预训练开始 然后添加由不同层组成的我自己的分类头 微调后 我想使用 model save pretrained 保存模型 但是当我打印它并从预训练上传时 我看不到我的分类器头 代码如下
  • 如何提取句子中的主语及其各自的从属短语?

    我正在尝试在句子中进行主题提取 以便我能够根据主题获得情感 我在用nltk在 python2 7 中用于此目的 以下面的句子为例 Donald Trump is the worst president of USA but Hillary
  • 举例解释bpe(字节对编码)?

    有人可以帮忙解释一下背后的基本概念吗BPE模型 除了这张纸 https arxiv org abs 1508 07909 目前还没有那么多解释 到目前为止我所知道的是 它通过将罕见和未知的单词编码为子词单元序列来实现开放词汇表上的 NMT
  • 使用 SciKit-learn 和大型数据集进行文本分类

    首先 我昨天开始学习Python 我正在尝试使用 SciKit 和大型数据集 250 000 条推文 进行文本分类 对于该算法 每条推文都将表示为 4000 x 1 向量 因此这意味着输入为 250 000 行和 4000 列 当我尝试在
  • 获取 NLTK 索引的所有结果

    我正在使用 NLTK 来查找单词的一致性 但我不知道如何获取所有结果并将它们放入list or set 例如 text concordance word 仅打印前 25 个结果 TL DR text concordance lines 10
  • 使用 OpenNLP 获取句子的解析树。陷入困境。

    OpenNLP 是一个关于自然语言处理的 Apache 项目 NLP 程序的目标之一是解析一个句子 并给出其语法结构的树 例如 天空是蓝色的 这句话 可能会被解析为 S NP VP The sky is blue where S是句子 NP

随机推荐

  • 制作属于自己的个人博客-超详细教程

    SpringBoot个人博客 一 博客效果预览 博客首页预览 博客详情预览 博客评论区预览 博客底部栏预览 关于页面预览 二 博客效果在线预览 http blog ShaoxiongDu top 三 项目技术 后端SpringBoot框架
  • 基于神经网络实现数据自回归多变量预测及MATLAB实现代码

    基于神经网络实现数据自回归多变量预测及MATLAB实现代码 随着科技的不断发展 各种数据都被广泛应用到生产 生活中 而数据预测更是数据分析中重要的一环 在多变量预测领域 神经网络已经逐渐成为研究的热点之一 本文将介绍如何使用NARX NN实
  • 什么是高阶成分(HOC)?解释 React 中 render() 的目的?

    高阶成分 HOC 是一种基于React的组合特性而形成的设计模式 HOC是自定义组件 在其中包裹了另一个组件 他们可以接受任何动态提供的子组件 但不会修改或复制其输入组件中的任何行为 您可以说HOC是 纯 组件1 HOC通过对组件逻辑的重用
  • 目标检测和分类的评价指标

    准确率 Accuracy 混淆矩阵 Confusion Matrix 精确率 Precision 召回率 Recall 平均正确率 AP mean Average Precision mAP 交除并 IoU ROC AUC 非极大值抑制 N
  • 大数据工程师的日常工作是什么?要掌握哪些核心技术?

    很多人都听过大数据工程师 但却很少人知道他们是做什么的 下面就带大家一起来了解一下大数据工程师的日常 如果你对大数据感兴趣 下面的内容你一定要看看 大数据工程师是做什么的 分析历史 预测未来 优化选择 这是大数据工程师在 玩数据 时最重要的
  • npm run build源码是在哪里呢?

    npm run build 指令会执行 package json 中 scripts 字段的 build 脚本 这个脚本的代码可以在 package json 文件中的 scripts 字段内找到 例如 如果 package json 中的
  • gridlayout布局java_java Swing布局管理之GridLayout布局

    标签 GridLayout 类是一个布局处理器 它以矩形网格形式对容器的组件进行布置 容器被分成大小相等的矩形 一个矩形中放置一个组件 GridLayout网格布局特点 容器的空间划分成M N列的网格区域 每个区域只能放置一个组件 使容器中
  • JavaEE - 正则表达式、日期时间类、Math、Random、System、Runtime、大数值运算类

    一 正则表达式 用来描述或者匹配一系列符合某个语句规则的字符串 正则表达式定义了字符串的模式 可以用来搜索 编辑或处理文本 正则表达式是由普通字符 例如字符 a 到 z 以及特殊字符 称为 元字符 组成的文字模式 模式描述在搜索文本时要匹配
  • 蓝桥杯模拟、思维

    本文是根据博主安然无虞的文章进行我的思维训练和练习 下面是我的练习代码和思路 1 换酒问题 include
  • 人生就像一次旅行

    我很欣赏一个广告 特别是那句话 人生就像一次旅行 不必在乎目的地 在乎的是沿途的风景以及看风景的心情 人生怎样才能够真正做到如此的豁达 人生是一段旅程 在旅行中遇到的每一个人 每一件事与每一个美丽景色 都有可能成为一生中难忘的风景 一路走来
  • 不同数据库获取新增加的主键值

    不同数据库获取新增加的主键值 数据库 获取新增主键的查询语句 DB2 IDENTITY VAL LOCAL Informix SELECT dbinfo sqlca sqlerrd1 FROM table Sybase SELECT IDE
  • LeetCode刷题-4

    数组 35 搜索插入位置 题目描述 题目样例 Java方法 二分查找 思路及算法 代码 执行结果 复杂度 题目描述 给定一个排序数组和一个目标值 在数组中找到目标值 并返回其索引 如果目标值不存在于数组中 返回它将会被按顺序插入的位置 请必
  • MySQL 通配符学习小结

    原文 http blog csdn net ithomer article details 5130386 MySQL 通配符 SQL的模式匹配允许你使用 匹配任何单个字符 而 匹配任意数目字符 包括零个字符 在 MySQL中 SQL的模式
  • 归并排序求逆序对

    一 归并排序原理 归并排序采用分治算法 将对整个数组排序的问题转化为合并两个有序子序列的问题 一 1 思想方法 以上是对数组进行排序的过程 首先 我们可认为 当区间长度为1时 每个区间都是有序的 接着 我们合并这些长度为1的区间 得到了第二
  • 抖音如何变现(赚钱)

    未来 每个人都能出名15分钟 安迪 沃霍尔 美国著名波谱艺术领袖 有必要见一下伟大预言家的风采 预言了短视频的兴起 突如一夜春风来 五洲四海刷抖音 2017 2018抖音突然火起了 从城市到农村 从国内到国外 从老人到小孩 从男人到女人 各
  • 小程序云服务器带宽要求,小程序云服务器带宽要求

    小程序云服务器带宽要求 内容精选 换一换 当您发现云服务器的运行速度变慢或云服务器突然出现网络断开的情况 则可能是云服务器的带宽和CPU利用率过高导致 如果您已经通过云监控服务创建过告警任务 当CPU或带宽利用率高时 系统会自动发送告警给您
  • JSONObject与JSONArray的简单使用

    JSONObject 大家看到JSONObject就应该真的这个类是和Json格式相关的吧 没错 JSONObject就是将数据json化的一个类 它是以键值对存在的 key value形式和map类型比较相像 下面我们先来简单使用一下这个
  • React class组件、react-hook函数组件分别实现五子棋

    react class类组件 react hook函数组件分别实现五子棋 前言 使用create react app脚手架简单搭建 不用安装其他依赖 纯 js css实现 这里就只是简单的说明目录结构和思路 具体的代码实现请转到 Githu
  • 解决:Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:

    报错信息如下 org apache ibatis exceptions PersistenceException Error querying database Cause com mysql jdbc exceptions jdbc4 M
  • 【学习笔记】开源中文对话预训练模型调研总结

    开源中文对话预训练模型调研 文章目录 开源中文对话预训练模型调研 1 CDial GPT 主要工作 LCCC数据集 数据清洗策略 基于规则的清洗 基于分类器的清洗 模型 输入表征 训练 2 GPT2 chitchat 3 EVA1 0 WD