XLNet 代码实践及原理解析(一)

本文记录对XLNet的实践过程,会在实践和代码分析的过程中,穿插着从代码层面对原理的理解。基本上是按照里面的顺序,一步步实践的,不过对里面的一些细节针对自己的实践,进行了补充和修改。希望对学习nlp朋友们有所帮助。读者阅读前需要初步了解XLNet的原理,不熟悉的读者请先阅读下面的。到了这一步你会对原理有初步的理解,深入的理解和对细节的把握还需要从代码细节入手。文章如有错误还望谅解,欢迎沟通讨论。
摘要由CSDN通过智能技术生成

本文记录对XLNet的实践过程,会在实践和代码分析的过程中,穿插着从代码层面对原理的理解。基本上是按照XLNet代码分析 - 李理的博客里面的顺序,一步步实践的,不过对里面的一些细节针对自己的实践,进行了补充和修改。希望对学习nlp朋友们有所帮助。读者阅读前需要初步了解XLNet的原理,不熟悉的读者请先阅读下面的参考[2]。到了这一步你会对原理有初步的理解,深入的理解和对细节的把握还需要从代码细节入手。文章如有错误还望谅解,欢迎沟通讨论。

分词工具准备

这一步 你需要准备自己的语料,进行分词。和BERT不同,BERT使用Python实现分词和WordPiece的切分;而XLNet使用了Sentence Piece来实现分词和WordPiece切分。因此我们需要首先安装Sentence Piece。

安装Sentence Piece

pip install sentencepiece

如果安装不成功,需要源码安装,需要先安装Bazel,按照下述代码安装,如果成功则可以直接跳过安装bazel步骤,我2条路径都试过,都是可以成功运行后续的程序的。或者可以参照官网的sentencepiece · PyPI 路径安装。

git clone https://github.com/google/sentencepiece.git 
cd sentencepiece # Build C++库 
bazel build src:all # 安装Python模块 
pip install sentencepiece

安装bazel

官方文档:Installing Bazel on Ubuntu - Bazel main

我采用的是以下方式安装方式:

1、安装bazel所需附加包

sudo yum install pkg-config zip g++ zlib1g-dev unzip python

运行完出现以下结果:

​2、下载bazel包

wget https://github.com/bazelbuild/bazel/releases/download/0.21.0/bazel-0.21.0-installer-linux-x86_64.sh

3、运行安装程序

chmod +x bazel-0.21.0-installer-linux-x86_64.sh 
./bazel-0.21.0-installer-linux-x86_64.sh --use

运行完出现以下结果:

​4、添加环境变量到~/.bashrc

export PATH="$PATH:$HOME/bin"

5、Build C++库

./bazel-0.21.0-installer-linux-x86_64.sh build src:all

运行完出现以下结果:

下载训练好的分词模型:

# 请科学上网 
wget https://storage.googleapis.com/xlnet/released_models/cased_L-24_H-1024_A-16.zip 
unzip cased_L-24_H-1024_A-16.zip

解压后里面有个训练好的.model文件,就是data_utils.py 文件的输入参数 sp_path。你也可以使用spm_train 工具的重新训练(未尝试)。做完这些我们就为运行data_utils.py 文件里面的代码做好了准备

data_utils.py代码分析

为了便于分析代码,我们先下载代码

git clone https://github.com/zihangdai/xlnet.git<
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值