【文献阅读】StyleBERT: Chinese pretraining by font style information

Abstract

因此在本文中,我们提出了中文预训练语言模型 StyleBERT,它结合了以下嵌入信息来增强语言模型的 savvy,例如单词、拼音、五笔和chaizi(拆字)。

Introduction

大规模预训练模型BERT

文本分类的应用
Nils Reimers and Iryna Gurevych. Sentence-bert: Sentence embeddings using siamese bert-networks, 2019.
Chi Sun, Xipeng Qiu, Yige Xu, and Xuanjing Huang. How to fine-tune bert for text classification?, 2020.

中文方面的应用
Haiqin Y ang. Bert meets chinese word segmentation, 2019.
Chen Jia, Y uefeng Shi, Qinrong Yang, and Y ue Zhang. Entity enhanced BERT pre-training for Chinese NER. In Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP), pages 6384– 6396, Online, November 2020. Association for Computational Linguistics. doi:10.18653/v1/2020.emnlp-main.518. URL https://aclanthology.org/2020.emnlp-main.518.

很多作品都将汉字字形信息纳入神经模型,但并没有进行大规模的前训练,Sun等[2014],Liu等[2017],Tao等[2019],孟等[2020]。

同一个汉字“数”在语义层次和句法层次上都表达了不同的读音、不同的意思甚至不同的词性。

提出了 StyleBERT,它首先将“拆字”信息引入到中文预训练过程中,这被证明比其他中文字形信息(例如不同的字体样式信息Chinese bert)更具表现力。为了更好地掌握原始汉字的语义信息,也将单词、拼音、五笔和柴子信息放在一起。

Related work

Bert-wmm

Yiming Cui, Wanxiang Che, Ting Liu, Bing Qin, and Ziqing Y ang. Pre-training with whole word masking for chinese bert. IEEE/ACM Transactions on Audio, Speech, and Language Processing, 29:3504–3514, 2021. ISSN 2329-9304. doi:10.1109/taslp.2021.3124365. URL http://dx.doi.org/10.1109/TASLP.2021.3124365.

wmm(whole word masking),中文与英文相比,英文是掩蔽一个单词中的若干个字母,而中文的最小语义是一个汉字,因此与传统掩蔽中文词语中的一个汉字不同,我们可以采用传统的中文分词工具将文本分割成单词,并采用中文整词掩蔽来代替单个汉字

在这里插入图片描述

MacBERT

调整掩蔽策略,将15%的输入词进行屏蔽,这部分的80%用相似词替换,10%的部分用随机词替换,剩下的10%作为原词。

Chinese Bert

它将汉字的字形和拼音信息结合到语言预训练中

因此,我们可以通过字形嵌入、拼音嵌入和字符嵌入相结合的融合嵌入来对汉字的独特语义属性进行建模。

字形嵌入是对不同汉语字体:隶书、行楷、仿宋

Style-Bert

Overview

每个输入汉字都嵌入到词向量、拼音向量、五笔画向量和柴子向量中。 这些嵌入向量被发送到融合层以合并到融合向量中。
代替原BERT-base模型中的token embedding

Input

拼音嵌入

在拼音编码过程中,每个给定的符号映射为一个8维向量。 每个拼音向量由两部分组成,拼音字母+声调

字形嵌入

汉字结构复杂,不像英文只有横向的

因此,采用五笔编码和拆字编码对汉字的部首结构进行编码。

五笔编码

中文部首的总量约为1.6k。 五笔编码大大减少了特征空间的大小并捕获了每个字符的几何结构。

然而,五笔画的一个显著缺点是,它减少了特征空间,使模型更难收敛。 为了减少这一问题的影响,在模型中引入了拆字编码。

拆字编码

拆字编码为每个汉字部首分配了不同的印记,大大增加了编码空间,保留了更多信息。

在拆字编码过程中引用了一个开源的 github 存储库 Doherty [2015],其中包含每个汉字的部首组合。
Liam Doherty. kfcd/chaizi. https://github.com/kfcd/chaizi, 2015.

在生成拼音、五笔和拆字编码向量后,将这些向量嵌入到embedding向量中,本文对多种嵌入方法进行了测试:

  1. TextCNN:特征编码向量被送入Text-CNN层,该层使用多个过滤器捕捉编码特征。 这种方法在许多下游任务中表现良好。 然而,Text-CNN层的一个缺点是在训练阶段花费的时间太多,特别是对于较长的语料库。
  2. 带有注意机制的RNN:为了加速训练过程,Zhou等人[2016]将Text-CNN层替换为RNN层,然后再引入注意层。 此外,该团队还增加了一个跳跃式连接,将输入编码向量添加到RNN层的输出向量中。 这种方法不仅效果好,而且花费的时间也少。
    Peng Zhou, Wei Shi, Jun Tian, Zhenyu Qi, Bingchen Li, Hao Hongwei, and Bo Xu. Attention-based bidirectional long short-term memory networks for relation classification. In Meeting of the Association for Computational Linguistics, 2016.

将字符(词)嵌入,字音(拼音)嵌入,字形(五笔、拆字)嵌入

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值