精华内容
下载资源
问答
  • transformers 使用bert中文模型

    千次阅读 2020-05-23 21:17:44
    pytorch 下载 gpu版 pip install torch===1.5.0 torchvision===0.6.0 -f https://download.pytorch.org/whl/torch_stable.html cpu版 pip install torch==1.5.0+cpu ... 中文bert-wwm 模型 下载 中文bert-w

    pytorch 下载


    gpu版
    pip install torch===1.5.0 torchvision===0.6.0 -f https://download.pytorch.org/whl/torch_stable.html

    cpu版
    pip install torch==1.5.0+cpu torchvision==0.6.0+cpu -f https://download.pytorch.org/whl/torch_stable.html

    离线安装

    或者将whl文件放到localpath目录下 运行 pip install --no-index --find-links=/localpath torch torchvision

    清华镜像下载(解压,将对应文件复制到python安装目录下的Lib/site-packages 和Scripts,再安装 python依赖包:pyyaml mkl cmake cffi 否则会报错)

     

    从源码编译

    1.4版本加载模型出错segmentation fault,官方的1.5版本不支持cuda10.0,公司的环境只能用cuda10.0所以自己编译了一遍

    注意:一定要完全按照git文档的命令行去操作,不能跳过,否则会报错。

     

    中文bert-wwm 模型 下载

    中文bert-wwm github 仓库 内含下载方式

    bert wwm,Chinese pytorch版本 讯飞云下载链接  

    提取密码:hteX

    ps: 可换成 bert-wwm-ext 或其他模型

    在transforms中使用

    transformers官方文档

    下载的模型解压到D:/XXX/chinese-bert_chinese_wwm_pytorch

    data目录下文件改名:

    bert_config.json 改名为 config.json

    chinese_wwm_pytorch.bin 改名为 pytorch_model.bin

    使用

    from transformers import BertTokenizer,BertModel
    # tokenizer = BertTokenizer.from_pretrained("hfl/chinese-bert-wwm-ext")
    # model = BertModel.from_pretrained("hfl/chinese-bert-wwm-ext")
    
    tokenizer = BertTokenizer.from_pretrained("D:/XXX/chinese-bert_chinese_wwm_pytorch/data")
    model = BertModel.from_pretrained("D:/XXX/chinese-bert_chinese_wwm_pytorch/data")
    
    def use_bert_wwm():
        text = "[CLS] 李明是做什么的?[SEP] 李明是个老师。[SEP]"
        tokenized_text = tokenizer.tokenize(text)
        print(tokenized_text)
    
    
        input_ids = torch.tensor([tokenizer.encode("一壶浊酒喜相逢", add_special_tokens=True)])  # Add special tokens takes care of adding [CLS], [SEP], <s>... tokens in the right way for each model.
        with torch.no_grad():
            last_hidden_states = model(input_ids)[0]  # Models outputs are now tuples
        print(last_hidden_states)
    
    

     

     

     

     

    展开全文
  • bert中文NLP模型

    2020-11-23 14:04:29
    模型为谷歌使用大量tpu训练的bert模型,一个tpu性能要比最强大的gpu强,训练的bert模型用处nlp,通常训练nlp模型时用该模型为预训练模型
  • Google官方中文Bert预训练模型,当前模型bert base模型,省去爬梯下载的烦恼,需要其他模型的可以私信
  • 中文模型下载:BERT-Base, Chinese: Chinese Simplified and Traditional, 12-layer, 768-hidden, 12-heads, 110M parameters 最终结果 最后一层和倒数第二层: last shape:(1, 14, 768), last2 shape: (1, 14, 768...
  • bert模型下载

    2021-01-29 14:33:13
    1、首先展示的是不同大小的bert模型下载链接 BERT-Base, Uncased:L=12,H=768,A=12,总参数=110M https://storage.googleapis.com/bert_models/2018_10_18/uncased_L-12_H-768_A-12.zip BERT-Large, Uncased:...

    1、首先展示的是不同大小的bert模型下载链接

    • BERT-Base, Uncased:L=12,H=768,A=12,总参数=110M
      https://storage.googleapis.com/bert_models/2018_10_18/uncased_L-12_H-768_A-12.zip

    • BERT-Large, Uncased:L=24, H=1024, A=16, 总参数=340M
      https://storage.googleapis.com/bert_models/2018_10_18/uncased_L-24_H-1024_A-16.zip

    • BERT-Base, Cased:L=12,H=768,A=12,总参数=110M
      https://storage.googleapis.com/bert_models/2018_10_18/cased_L-12_H-768_A-12.zip

    • BERT-Large, Cased:L=24, H=1024, A=16, 总参数=340M
      https://storage.googleapis.com/bert_models/2018_10_18/cased_L-12_H-768_A-12.zip

    • 中文bert-base : L=12,H=768,A=12,总参数=110M
      https://storage.googleapis.com/bert_models/2018_11_03/chinese_L-12_H-768_A-12.zip

    2、下载方式:
    linux:wget + 对应链接
    win :直接链接复制到浏览器便可以下载

    展开全文
  • 要想在中文情感分类任务中完成bert语言模型的微调,需要有bert开源的代码,然后在bert开源数据中下载chinese_L-12_H-768_A-12,最后还要有中文情感数据,数据格式为(类别id\t句子)。如果bert代码和中文情感数据...

    要想在中文情感分类任务中完成bert语言模型的微调,需要有bert开源的代码,然后在bert开源数据中下载chinese_L-12_H-768_A-12,最后还要有中文情感数据,数据格式为(类别id\t句子)。如果bert代码和中文情感数据没有,可以在我分享的资源中下载。如果三者都有了按照以下操作即可完成微调,并对微调后的模型进行使用。

    run_classifier.py中找到

    processors = {
          "cola": ColaProcessor,
          "mnli": MnliProcessor,
          "mrpc": MrpcProcessor,
          "xnli": XnliProcessor,
          "intentdetection":IntentDetectionProcessor,
          "emotion":EmotionProcessor,  #新加上这一行,emotion是在运行时用来调用的方法名,EmotionProcessor是你自己声明的类。
    }


    然后在该文件中增加一个class,这个类名和你刚刚声明的那个“emotion":EmotionProcessor, 保持一致:

    class EmotionProcessor(DataProcessor):
      """Processor for the MRPC data set (GLUE version)."""
    
      def get_train_examples(self, data_dir):
        """See base class."""
        return self._create_examples(
            self._read_tsv(os.path.join(data_dir, "fine_tuning_train_data.tsv")), "train") #此处的名字和文件夹中的训练集的名字要保持一致
    
      def get_dev_examples(self, data_dir):
        """See base class."""
        return self._create_examples(
            self._read_tsv(os.path.join(data_dir, "fine_tuning_val_data.tsv")), "dev")
    
      def get_test_examples(self, data_dir):
        """See base class."""
        return self._create_examples(
            self._read_tsv(os.path.join(data_dir, "fine_tuning_test_data.tsv")), "test")
    
      def get_labels(self):
        """See base class."""
        return ["0", "1","2","3","4","5","6"] #七分类则从0到6
    
      def _create_examples(self, lines, set_type):
        """Creates examples for the training and dev sets."""
        examples = []
        for (i, line) in enumerate(lines):
          if i == 0:
            continue
          guid = "%s-%s" % (set_type, i)
          if set_type == "test":
            label = "0"
            text_a = tokenization.convert_to_unicode(line[0])
          else:
            label = tokenization.convert_to_unicode(line[0])
            text_a = tokenization.convert_to_unicode(line[1])
          examples.append(
              InputExample(guid=guid, text_a=text_a, text_b=None, label=label))
        return examples


    最后直接调用即可,运行的命令如下:

    python run_classifier.py \
      --task_name=emotion \#同第一段代码最后一行
      --do_train=true \
      --do_eval=true \
      --data_dir=data \ #把中文情感数据解压到同一级的文件夹中,此处是该文件夹名字data
      --vocab_file=chinese_L-12_H-768_A-12/vocab.txt \ #中文数据要微调的原始bert模型,这个自行下载,和run_classifier.py放同一级的路径
      --bert_config_file=chinese_L-12_H-768_A-12/bert_config.json \
      --init_checkpoint=chinese_L-12_H-768_A-12/bert_model.ckpt \
      --max_seq_length=128 \
      --train_batch_size=32 \
      --learning_rate=2e-5 \
      --num_train_epochs=3.0 \
      --output_dir=output #生成文件所在的文件夹
    (上面的注释自己去掉)


    大概9个小时,最后文件夹中会有三个文件 后缀分别为:index / meta / 00000-of-00001,
    分别将这个改成bert_model.ckpt.index / bert_model.ckpt.meta / bert_model.ckpt.data-00000-of-00001,再在同一个文件夹中放入chinese_L-12_H-768_A-12中的vocab.txt和bert_config.json 即最后该文件夹中有5个文件。然后像调用chinese_L-12_H-768_A-12一样将文件夹名改成自己的文件夹名即可。
    bert-serving-start -model_dir output -num_worfer=3 即可调用微调后的语言通用模型。

    展开全文
  •   本节将按照思维导图逐步了解BERT语言模型(基于transformer的网络结构)。 一、预训练语言模型   大规模的预训练语言模型模型参数量呈几何倍数的增长趋势。下面我们了解BERT预训练的原理。 1.为什么要进行...

    引言

      本节将按照思维导图逐步了解BERT语言模型(基于transformer的网络结构)。
    在这里插入图片描述
      BERT带来了新的NLP范式。
    在这里插入图片描述

    一、预训练语言模型

      大规模的预训练语言模型的模型参数量呈几何倍数的增长趋势。下面我们了解BERT预训练的原理。

    1.为什么要进行预训练?

      基于词向量为基础的模型并不是在BERT中首次出现。在Word2vec中,词向量表示是有局限性的。这是因为词向量表达固定,无法表达上下文。2017年之前,NLP模型的普遍形态为词向量+encoder
    在这里插入图片描述
    利用LSTM或者Transformer模型通过训练集来学习如何提取上下文信息,最终输出分类标签。这里的训练集指的是具有分类或者NER的标注信息。这种模式有如下缺陷:

    • Encoder部分随机初始化,没有经过预训练,对优化器压力大;
    • 数据集要足够好,足够大,encoder才能学会如何提取上下文信息

    这两个缺陷导致2017年以前的模型非常具有局限性。
      基于上述的缺陷,我们现在想要有效的预训练embedding+编码器。有标签的文本数据获取成本大,相比来说,获取大量无标签的文本数据代价很小。所以如何进行预训练呢?这就涉及到在大量无标签的文本上进行自监督学习(self-supervised training)。

    2. BERT预训练-掩码预测任务

      掩码预测任务与Word2vec中CBOW非常神似,但略有不同。
    在这里插入图片描述
    在这里插入图片描述

    • 一方面,CBOW语言模型输入的是一个时间窗口,并不一定是一个句子;掩码预测任务输入的是一个句子(sentence)
    • 另一方面,CBOW当中被预测的词是不做输入的;但掩码预测任务会遮掩某个词(用”[MASK]"字符替换原词)然后用于输入
    • CBOW中是一句话预测一个词,掩码预测任务一句话可以遮掩多个字

      掩码预测任务中,输入是句子当中遮掩掉几个词(用”[MASK]"字符替换原词),经过BERT网络输出每个字的向量表征。在遮掩的这个字的位置上要经过一个线性层来预测这个位置是哪个字的概率。掩码预测任务存在的问题:在下游任务中,eg:预测一个句子的情感是不会有[Mask]的。因此,在实现掩码任务时,需要遮掩的字只占语料全体的字数的一小部分(15%);在这15%里面:

    • 一部分(80%)被遮掩,也就是替换为[MASK];
    • 一部分(10%)随机替换为其他词(仍然需要预测此处的token应该是什么);
    • —部分(10%)保留原词(仍然需要预测此处的token);

    这样做的目的是使得模型能够区分这个词放在这里是否合理,使得模型具有判断这句话是否合理的能力,加深了模型对语言的理解。BERT模型在经过预训练之后天生就能够做一些下游任务,比如:纠错任务。

    3.BERT预训练-下句预测任务

      下句预测指的是:判断句子B是否是句子A的下文。此时,BERT句子的输入会是[CLS] A sent [SEP] B sent [SEP]格式
    在这里插入图片描述
      我们经常通过句首的第一个token来表示句子整体的语义关系,在上下句预测的任务当中,上下句的关系是保存在输入的[CLS]符号的当中,在预测时使用BertPooler提取整个输入序列的表征:
    在这里插入图片描述
    这里要注意:不是直接拿[CLS]的向量表征;而是要经过BertPooler这个模块,其中包含MLP,tanh操作得到一个向量表示,再输入到2分类层,BertPooler也是参与预训练的,预训练会更新整个bert的模型参数,微调时候其实是可以更新部分参数,后面会有介绍。

    用了 Masked LM 和 Next Sentence Prediction 两种方法分别捕捉词语和句子级别的 representation

    二、BERT的文本处理—subword tokenizer

    1. 为什么要学习subword tokenizer?

      subword tokenizer就是将长的复杂的单词分成成短的简单的单词,eg:句子” play the song little robin redbreast”在输入模型时变为”[CLS] play the song red ##bre ##ast [SEP]”。Tokenizer是预训练时候用了哪个,后面微调就要用哪个。使用subword tokenizer的原因是:

    • 传统词表示方法:是先对各个句子进行分词,然后再统计并选出频数最高的前N个词组成词表·词表一般较大,一是尾部词训练不充分,二是显存占用较大
    • 传统词表示方法无法很好的处理未知或罕见的词汇(OOV问题)
    • 传统词tokenization方法不利于模型学习词缀之间的关系
      E.g.模型学到的“old”, “older”,and “oldest”之间的关系无法泛化到“smart”, “smarter”,and“smartest”。
    • Character embedding作为OOV的解决方法粒度太细,且推理时候显存开销较大:
      一个原本长度为12的句子,采用character embedding,则输入的大小变为12*16 (假设设置词字母长度最
      大为16)
    • Subword粒度在词与字符之间,能够较好的平衡OOV问题

    常见的subword模型:Byte Pair Encoding (BPE), WordPiece

    2. 词表生成与分词

      BPE算法生成词表过程如下:

    1. 准备一个语料库;确定期望的Subword词表大小;
    2. 将单词拆分为成最小单元。比如英文中26个字母加上各种符号,这些作为初始词表;
    3. 在语料上统计单词内相邻单元对的频数,选取频类最高的单元对合并成新的Subword单元;
    4. 重复第3步直到:达到第1步设定的Subword词表大小或下一轮迭代中token最高频数为1

    假设现在语料库中有如下词汇(及其频率):
    在这里插入图片描述

    观察词汇表大小在每一步如何变化
    在这里插入图片描述

      BPE算法编码:得到Subword词表后,针对每一个单词,我们可以采用如下的方式来进行编码:

    • 将词典中的所有子词按照长度由大到小进行排序;
    • 对于要进行分词的单词w,依次遍历排好序的词典。查看当前子词是否是该单词的子字符串(贪婪的最长匹配),如果是,则输出当前子词,并对剩余单词字符串继续匹配;
    • 如果遍历完字典后,仍不匹配,则将剩余字符串替换为特殊符号输出,如””;

      WordPiece算法生成词表的步骤与BPE类似;加上”##”前缀表示token不作为一个完整单词的开始部分。与BPE的最大区别在于,如何选择两个子词进行合并∶BPE选择频数最高的相邻子词合并,而WordPiece选择能够提升语言模型概率最大的相邻子词加入词表;

    • 假设句子 S = ( t 1 , t 2 , t n ) S =(t_1, t_2,t_n) S=(t1,t2,tn)由n个子词组成,表示子词,且假设各个子词之间是独立存在的
    • 句子的语言模型似然值等价于所有子词概率的乘积: l o g P ( S ) = ∑ i = 1 n P ( t i ) logP(S)= \sum_{i=1}^nP(t_i) logP(S)=i=1nP(ti)
    • 假设把相邻位置的 i i i j j j两个子词进行合并,合并后产生的子词记为 z z z,此时句子似然值的变化可表示为:
      l o g P ( t z ) − ( l o g P ( t x ) + l o g P ( t y ) ) = l o g P ( t z ) P ( t x ) P ( t y ) logP(t_z)- (logP(t_x)+ logP(t_y)) =log\frac{P(t_z)}{P(t_x)P(t_y)} logP(tz)(logP(tx)+logP(ty))=logP(tx)P(ty)P(tz)
      很容易发现,似然值的变化就是两个子词之间的互信息。

    简而言之,WordPiece每次选择合并的两个子词,他们具有最大的互信息值,也就是两子词在语言模型上具有较强的关联性,它们经常在语料中以相邻方式同时出现。
    Wordpiece举例:

    • 英文:采用BERT-base-uncased tokenizer
      30522个单词;英文转化为小写
      eg:
      句子“play the song little robin redbreast”经过BERT的wordpiece tokenizer后变为”[‘play’, ‘the’, ‘song’, ‘little’, ‘robin’, ‘red’, ‘##bre’, '##ast ]”
    • 中文:采用Google Chinese BERT-base-uncased
      21128个单词;不区分大小写;
      中文汉字拆开(split_Chinese_character);
      eg:
      句子”我很喜欢一首歌: yesterday once more.”处理为['我,‘很’,‘喜’, ‘欢’,'一,'首, ‘歌’, ‘:’,‘yes’, ‘##ter’, ‘##day’, ‘on’, ‘##ce’, ‘more’, ‘.’]

    三、BERT embedding

      BERT的嵌入层包含三种embedding

    • Token embedding
      对应着Subword词表分词后的每一个单词
    • Segmentation embedding
      将句子的上一句与下一句进行区分对待,涉及到预训练任务当中的下句预测
    • Position embedding
      位置编码,为了能够让模型反映句子的顺序信息,位置编码研究前沿如今是相对位置编码

    在这里插入图片描述

    四、BERT微调—句子分类任务

      句子分类任务就是把文本按照一定的规则分门别类,文本分类有以下应用场景:
    在这里插入图片描述
      那么,在下游任务中,如何进行BERT句子分类任务的微调?不妨以单个句子分类为例(还有句子对分类,判定句子对是否同义),比如,我们现在想要对“想看黑寡妇”进行情感分类,首先将“想看黑寡妇”转换成BERT模型的输入形式,在句前加[CLS]符号,句尾加[SEP]符号,使用subword tokenizer进行分词,将这样处理好的文本输入到BERT模型中,得到句子的向量表征(句子中的每个字均有向量表征),通过BertPooler模块,取[CLS]的向量表征,经过MLP,tanh操作后得到一个整句的向量表征,再经过分类层得到分类结果。
    在这里插入图片描述
    由于NLP中句子是不定长的,所以可以通过Pooling层将变长的向量转换成特定的size。除了使用BertPooler模块,还可以增加一个Pooling操作,将句子表征转化成句子级别的向量。这里的Pooling操作指:

    • Max-Pooling
    • Average-Pooling
    • Attention-Pooling

    在这里插入图片描述
      分类任务微调的损失函数:假设模型对分类任务的训练样本为 ( x , y ) (x,y) (x,y),预测类别为 c c c的概率为 p c p_c pc,则损失函数为
    C E ( P C , X ) = − I ( y = c ) ∗ l o g ( p c ) CE(P_C,X)=-I(y=c)*log(p_c) CE(PC,X)=I(y=c)log(pc)

    有了损失函数就可以利用梯度的更新做网络的训练。
      分类任务微调的原理与一般的网络训练没有区别。微调时,如果不固定参数,所有层的参数会更新。你可以选择固定某些层的参数,比如:embedding层。

    五、BERT微调—序列标注任务

      序列标注任务指的是对于待标注的一段序列 x = { x 1 , x 2 , . . . , x n } x=\{x_1, x_2,..., x_n\} x={x1x2...xn},我们需要给每个 x i x_i xi预测一个标签 ( t a g ) y i (tag)y_i (tag)yi,标签 ( t a g ) (tag) (tag)集合是 T = { t 1 , t 2 , . . . , t m } T=\{t_1,t_2,...,t_m\} T={t1,t2,...,tm}。在不同的序列标注任务中对应的标签不一样。

    • 中文分词任务
      定义的标签 ( t a g ) (tag) (tag)集合是 { B e g i n   M i d d l e   E n d   S i n g l e } \{Begin \ Middle\ End\ Single\} {Begin Middle End Single}
      eg:“风险基因协同的神经生物学作用”被分词为
      风险 基因 协同 的 神经 生物学 作用,转化为序列标注任务为:风/B险/E基/B因/E协/B同/E的/s神/B经/E生/B物/M学/E作/B用/E。
    • 命名实体识别:标出句子中的实体;使用BIO标注模式;
      定义的标签 ( t a g ) (tag) (tag)集合是实体类型包括 { P E R , O R G } \{PER,ORG\} {PER,ORG}
      eg:乔/B-PER布/I-PER斯/I-PER 就/O职/O于/O苹/B-ORG 果/I-ORG 公/I-ORG司/I-ORG
    • 词性标注(Part-of-speech, POS tagging):标注出词语的词性;使用BIO标注模式
        BERT序列标注任务微调方法有两种:
    • 方法一:每个token的向量表示经过线性层+softmax
      具体过程为:将BERT模型格式将句子输入到BERT模型当中,然后给出每个词的向量表征,经过线性层+softmax,然后给出每个词的NER标签
      在这里插入图片描述
    • 方法二:BERT+CRF层
      在BERT模型还没有出现以前,解决这个问题的通用方式是’BiLSTM-CRF’模型。CRF层通过学习标签之间转移的模式来规避’B-PER,I-ORG’这样的问题;
      在这里插入图片描述

    六、BERT微调—关系分类任务

      关系分类任务就是从非结构化文本中抽取出结构化知识;具体为:区分出头实体与尾实体之间的语义关系,比如:
    在这里插入图片描述
      关系分类任务最直接的应用是构建知识图谱。
    在这里插入图片描述
      BERT关系分类任务微调方法有三种:

    • 方法一:将句子输入到BERT模型中,然后分别拿到头实体与尾实体的向量表征(实体多个词的表征经过pooling得到),然后将头尾实体向量拼接,再经过线性层分类
      在这里插入图片描述
    • 方法二:BERT的embedding层中加入关系位置编码。在方法一的基础上加上关系位置编码,告诉BERT模型何处为头实体何处为尾实体。
      在这里插入图片描述
    • 方法三:在句子中加入新定义的字符(unusedtoken),标识出头尾实体位置;
      在这里插入图片描述

    七、BERT微调—样本不均衡问题Focal loss

      在自然语言处理应用场景中,经常出现样本不均衡场景的问题,这是因为在自然语言的语料库中,一个单词出现的频率与它在频率表里的排名成反比,即频率越高的单词,出现的次数越多。碰到样本不均衡问题时,需要对训练方法做一定的改变。

    • 方法一:重采样
      假设 C C C是数据集类别数, n n n是类别 i i i的样本数量,则从类别 i i i中采样一个样本的概率:
      instance-balanced sampling:每个样本被等概率的抽到,即
      p i = n i ∑ j = 1 C n j p_i=\frac{n_i}{{\sum_{j=1}^Cn_j}} pi=j=1Cnjni
      Class balanced sampling:每个类别被抽到的概率都相等
      p i = 1 ∑ j = 1 C 1 p_i=\frac{1}{{\sum_{j=1}^C1}} pi=j=1C11
      一般重采样,假设 q ∈ ( 0 , 1 ) q∈(0,1) q(0,1)
      n i q ∑ j = 1 C n j q \frac{n_i^q}{{\sum_{j=1}^Cn_j^q}} j=1Cnjqniq
    • 方法二:重加权(re_weighting):以二分类为例
      正常的交叉熵损失为:
      C E ( P C , X ) = − I ( y = c ) ∗ l o g ( p c ) CE(P_C,X)=-I(y=c)*log(p_c) CE(PC,X)=I(y=c)log(pc)
      通过增加一个系数(添加的系数与难度相关),来控制少数类别的样本对总loss的贡献
      C E ( P C , X ) = − α ( c ) ∗ I ( y = c ) ∗ l o g ( p c ) CE(P_C,X)=-\alpha(c)*I(y=c)*log(p_c) CE(PC,X)=α(c)I(y=c)log(pc)
      Focal loss:
      C E ( P C , X ) = − ( 1 − p c ) γ I ( y = c ) ∗ l o g ( p c ) CE(P_C,X)=-(1-p_c)^{\gamma}I(y=c)*log(p_c) CE(PC,X)=(1pc)γI(y=c)log(pc)
      Focal loss+类别的重加权:
      C E ( P C , X ) = − α ( c ) ( 1 − p c ) γ I ( y = c ) ∗ l o g ( p c ) CE(P_C,X)=-\alpha(c)(1-p_c)^{\gamma}I(y=c)*log(p_c) CE(PC,X)=α(c)(1pc)γI(y=c)log(pc)
      在这里插入图片描述

    如果对您有帮助,麻烦点赞关注,这真的对我很重要!!!如果需要互关,请评论或者私信!
    在这里插入图片描述


    展开全文
  • 导语: BERT模型自诞生以来统治了各项NLP任务的榜单,谷歌也针对中文给出了基于字的模型。然而我们知道词是语言最重要的组成部分,因此,一个自然的想法就是做基于词的BERT模型。但是受限于显存,谷歌原生的BERT模型...
  • 官网发布的tensorflow2.0版本以后可使用的BERT中文预训练模型文件,适合无法的伙伴使用tf2 进行fine tuning
  • BERT模型

    2020-08-03 20:24:43
    BERT是基于Vaswani et al(2017)的论文"Attention is all you need"中提出的transformer模型构建的多层双向transformoer encoder。就是说BERT只是一个NLP方向的编码器。他能对单独句子进行表征,也可以对问答等进行...
  • BERT 中文预训练模型使用

    万次阅读 2019-04-27 16:44:15
    只要是从事文本处理相关工作的人应该都知道 Google 最新发布的 BERT 模型,该模型属于是词向量的预训练模型,一经提出便横扫各大 NLP 任务,最近 Google 公司如约推出了中文词向量的预训练模型,不得不说这是一件...
  • 1、bert模型简介和原理回顾 2、bert模型源码理解 3、bert模型任务实战 4、bert模型一些难点
  • Bert改进模型汇总(1)

    千次阅读 2020-02-05 21:45:49
    Bert自问世以来横扫NLP各大榜单,但Bert模型本身还存在着或多或少的问题,因此后续学术界也针对Bert的缺陷提出了各类改进模型,今天这篇文章我就大致总结下我所了解到的模型。 首先先上两张图,总结的非常好 ...
  • 简单中文BERT使用最好配合huggingface/tokenizers 使用(当然中文简单按字分词也差不太多)配合hub食用更佳,当然下载下来只用tf.keras.models.load_model也可以文本分类举例(ipynb)python例子:...
  • 超详细BERT介绍(一)BERT模型的结构及其组件

    千次阅读 多人点赞 2020-06-21 13:48:22
    BERT(Bidirectional Encoder Representations from Transformers)是谷歌在2018年10月推出的深度语言表示模型。 一经推出便席卷整个NLP领域,带来了革命性的进步。 从此,无数英雄好汉竞相投身于这场追剧(芝麻街)...
  • NLP之BERT分类模型部署提供服务

    千次阅读 热门讨论 2019-06-27 11:09:16
    在我们使用bert预分类模型微调之后(可以参考我前面写的文章),需要对项目进行支持,那就需要分类模型落地提供服务,这篇文章介绍python调用bert模型,提供服务。 参考:...
  •   这一节学习BERT模型如何在ner任务上进行微调。项目代码框架如下: 争取做到每一行代码每一行注释!!! 一、项目环境配置 python>=3.6 torch==1.6.0 transformers==3.0.2 seqeval==0.0.12 pytorch-crf==...
  • 探究BERT中文基础模型(BERT-Base-Chinese)和BERT中文医学预训练模型(BERT-Re-Pretraining-Med-Chi)在中文医学文献分类上的分类效果及差异原因。[方法] 本研究以34万篇中文医学文献摘要为医学文本预训练语料,...
  • 图解BERT模型

    千次阅读 2020-02-04 22:25:59
    从名字中可以看出,BERT模型的目标是利用大规模无标注语料训练、获得文本的包含丰富语义信息的Representation,即:文本的语义表示,然后将文本的语义表示在特定NLP任务中作微调,最终应用于该NLP任务。煮个栗子,...
  • 只要是从事文本处理相关工作的人应该都知道 Google 最新发布的 BERT 模型,该模型属于是词向量的预训练模型,一经提出便横扫各大 NLP 任务,最近 Google 公司如约推出了中文词向量的预训练模型,不得不说这是一件...
  • BERT 训练时将部分单词 mask 起来,使模型能够利用句子双向的信息,在很多 NLU 任务上取得很好的效果。但是 BERT 忽略了 mask 单词之间的关系,且微调过程与预训练过程不一致 (微调时没有 mask 的单词)。XLNet 采用...
  • bert简介
  • [NLP自然语言处理]谷歌BERT模型深度解析

    万次阅读 多人点赞 2018-10-15 17:49:18
    我的机器学习教程「美团」算法工程师带你入门机器学习 已经开始更新了,欢迎大家订阅~ 任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”...BERT模型代码已经发布,...
  • BERT模型从训练到部署

    万次阅读 多人点赞 2019-04-15 23:38:03
    BERT模型从训练到部署全流程 Tag: BERT 训练 部署 缘起 在群里看到许多朋友在使用BERT模型,网上多数文章只提到了模型的训练方法,后面的生产部署及调用并没有说明。 这段时间使用BERT模型完成了从数据准备到...
  • 深度学习:BERT模型

    万次阅读 多人点赞 2018-12-18 15:48:37
    ELMO模型 ELMo的整体图。第一使用了多层LSTM,第二增加了后向语言模型(backward LM)。 Note: 1 输入是一个句子的embedding E1~En,输出是T1~Tn(分别对应其上下文)。 2 从图中箭头可以看出,目标T1生成的...
  • BERT模型实战之多文本分类(附源码)

    万次阅读 多人点赞 2019-03-21 11:00:36
    BERT模型也出来很久了,之前看了论文学习过它的大致模型(可以参考前些日子写的笔记NLP大杀器BERT模型解读),但是一直有杂七杂八的事拖着没有具体去实现过真实效果如何。今天就趁机来动手写一写实战,顺便复现一下...
  • Bert改进模型汇总(5)

    千次阅读 2020-02-11 15:32:54
    DistillBert:a distilled version of BERT: smaller,faster, cheaper and lighter TinyBert:: DISTILLING BERT FOR NATURAL LANGUAGE UNDERSTANDING Reference DistillBert:a distilled version of BERT: s...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,120
精华内容 2,448
关键字:

bert的中文模型