基于Bert的文本分类

Bert Pretrain

class WhitespaceTokenizer(object):"""WhitespaceTokenizer with vocab."""def __init__(self, vocab_file):self.vocab = load_vocab(vocab_file)self.inv_vocab = {v: k for k, v in self.vocab.items()}def tokenize(self, text):split_tokens = whitespace_tokenize(text)output_tokens = []for token in split_tokens:if token in self.vocab:output_tokens.append(token)else:output_tokens.append("[UNK]")return output_tokensdef convert_tokens_to_ids(self, tokens):return convert_by_vocab(self.vocab, tokens)def convert_ids_to_tokens(self, ids):return convert_by_vocab(self.inv_vocab, ids)def create_segments_from_document(document, max_segment_length):"""Split single document to segments according to max_segment_length."""assert len(document) == 1document = document[0]document_len = len(document)index = list(range(0, document_len, max_segment_length))other_len = document_len % max_segment_lengthif other_len > max_segment_length / 2:index.append(document_len)segments = []for i in range(len(index) - 1):segment = document[index[i]: index[i+1]]segments.append(segment)return segments(masked_lm_loss, masked_lm_example_loss, masked_lm_log_probs) = get_masked_lm_output(bert_config, model.get_sequence_output(), model.get_embedding_table(),masked_lm_positions, masked_lm_ids, masked_lm_weights)total_loss = masked_lm_loss

详细配置

{"hidden_size": 256,"hidden_act": "gelu","initializer_range": 0.02,"vocab_size": 5981,"hidden_dropout_prob": 0.1,"num_attention_heads": 4,"type_vocab_size": 2,"max_position_embeddings": 256,"num_hidden_layers": 4,"intermediate_size": 1024,"attention_probs_dropout_prob": 0.1
}
def convert_tf_checkpoint_to_pytorch(tf_checkpoint_path, bert_config_file, pytorch_dump_path):# Initialise PyTorch modelconfig = BertConfig.from_json_file(bert_config_file)print("Building PyTorch model from configuration: {}".format(str(config)))model = BertForPreTraining(config)# Load weights from tf checkpointload_tf_weights_in_bert(model, config, tf_checkpoint_path)# Save pytorch-modelprint("Save PyTorch model to {}".format(pytorch_dump_path))torch.save(model.state_dict(), pytorch_dump_path)

Bert Finetune

sequence_output, pooled_output = \self.bert(input_ids=input_ids, token_type_ids=token_type_ids)if self.pooled:reps = pooled_output
else:reps = sequence_output[:, 0, :]  # sen_num x 256if self.training:reps = self.dropout(reps)

自然语言处理实践Task6相关推荐

  1. python documents in chinese_基于 Python 的简单自然语言处理实践

    基于 Python 的简单自然语言处理 Twenty News Group 语料集处理 20 Newsgroup 数据集包含了约 20000 篇来自于不同的新闻组的文档,最早由 Ken Lang 搜集 ...

  2. DataWhale第21期组队学习自然语言处理实践(知识图谱)task4— 用户输入->知识库的查询语句

    参考来源:https://github.com/datawhalechina/team-learning-nlp/blob/master/KnowledgeGraph_Basic/task04.md# ...

  3. r与python自然语言处理_Python自然语言处理实践: 在NLTK中使用斯坦福中文分词器 | 我爱自然语言处理...

    斯坦福大学自然语言处理组是世界知名的NLP研究小组,他们提供了一系列开源的Java文本分析工具,包括分词器(Word Segmenter),词性标注工具(Part-Of-Speech Tagger), ...

  4. 《自然语言处理实践——聊天机器人技术原理与应用》(王昊奋)简要笔记(全)

    第一章 概述 1.对话系统分类 基于实现方式--检索式.生成式 基于功能--问答系统.面向任务的对话系统.闲聊系统.主动推荐系统. 2.框架 自动语音识别--自然语言理解--对话管理(Web,社区问答 ...

  5. PyTorch深度学习实战 | 迁移学习与自然语言处理实践

    01.文章任务 从提供的金融文本中识别出现的未知金融实体,包括金融平台名.企业名.项目名称及产品名称.持有金融牌照的银行.证券.保险.基金等机构.知名的互联网企业如腾讯.淘宝.京东等和训练集中出现的实 ...

  6. 自然语言处理实践Task5

    使用gensim训练word2vec import logging import randomimport numpy as np import torchlogging.basicConfig(le ...

  7. 自然语言处理实践Task4

    FastText FastText通过Embedding层将单词映射到稠密空间,然后将句子中所有的单词在Embedding空间中进行平均,进而完成分类操作. FastText是一个三层的神经网络,输入 ...

  8. 自然语言处理实践Task3

    One-hot 这里的One-hot与数据挖掘任务中的操作是一致的,即将每一个单词使用一个离散的向量表示.具体将每个字/词编码一个索引,然后根据索引进行赋值. One-hot表示方法的例子如下: 句子 ...

  9. 自然语言处理实践Task2

    一.读取训练数据 # sep设置分割符 # nrows设置读取的行数 train_df = pd.read_csv('./data/train_set.csv', sep='\t', nrows=10 ...

最新文章

  1. 爬取数据解决方案- 每页打开+单个查询
  2. node中的流的介绍(Stream)
  3. if else 简写_15+ JS简写骚操作,让你的代码“秀”起来??
  4. 超级好用 将html字符串,转化为纯文本
  5. Ajax进入ERROR的部分条件总结
  6. 利用melendy插入参考文献_如何利用mendeley搞定SCI论文参考文献,这篇一定要看
  7. 一个类可以实现多个接口吗_java中接口的概念
  8. java编写一个邮件程序显示收件箱中所有的邮件列表_如何使用JavaMail获取邮件帐户中的可用文件夹列表...
  9. python面试题之Python是如何进行类型转换的
  10. 阿里云服务器Ubuntu16.04安装Anaconda(python3.6)和本地远程连接jupyter
  11. 【无向图求最小割集】
  12. ios 博客及论坛整理
  13. linux用命令下载图片,巧用linux命令做图片下载器
  14. R语言自学笔记-----数据转换
  15. JAVA毕设项目公立医院绩效考核系统(Vue+Mybatis+Maven+Mysql+sprnig+SpringMVC)
  16. 那些从阿里离职的人,凭什么占据了中国互联网行业的半壁江山?
  17. 第十一届蓝桥杯 ——成绩统计
  18. php sdk包,CloudXNS API PHP SDK
  19. 陀螺科技十周年 | 和小π一起探索“心有猛虎,快意江湖”的故事……
  20. 【Pandas总结】第一节 Pandas 简介与Series,DataFrame的创建

热门文章

  1. 爬虫,反爬工具fake-useragent,随机useragent模块教程
  2. 09-mysql-分组函数-最大最小总和平均值
  3. jquery-ui-拖
  4. SQL Sever sa密码丢失
  5. Java使用递归实现全排列的代码
  6. 山西铁警演练防暴处突
  7. Stream从Python切换到Go的原因
  8. Express 极速掌握
  9. 设置windows网络连接别名和linux网络连接别名
  10. eclipse-Java compiler level does not match the version of the installed Java project facet.