当前位置:首页 > 数字货币资讯 > 正文内容

Tokenize最近什么情况Tokenizertokenize简介

xytest2022-12-02 18:19数字货币资讯162

Tokenize最近什么情况Tokenizertokenize简介

作为虚拟币行业人士而言,我们经常都会说到Tokenize时有很多细节是需要注意的。你知道Tokenizertokenize?今天就让小编跟你们说说吧!

1. jieba中文处理

jieba是一个在中文自然语言处理中用的最多的工具包之一,它以分词起家,目前已经能够实现包括分词、词性标注以及命名实体识别等多种功能。既然Jieba是以分词起家,我们自然要首先学习Jieba的中文分词功能。Jieba提供了三种分词模式:

在jieba分词中,最常用的分词函数有两个,分别是 cut 和 cut_for_search ,分别对应于“精确模式/全模式”和“搜索引擎模式”。

当然,两者的输入参数也不一样,cut函数的输入主要有三个,分别是:

cut_for_search 函数主要有两个参数:

需要注意的是, cut 和 cut_for_search 返回的都是generator,如果想直接返回列表,需要使用 lcut 和 lcut_for_search

如果在一些特定场景中,需要使用一些特殊词汇进行分词,就需要加载自定义的分词词典:

其中,用户字典的格式为:

每一行表示一个单词,每行最多由三部分组成

如果只是少量词汇,可以使用

需要注意的是,如果没有给出词频和词性信息,在后续的处理中可能会造成一定的影响。

jieba提供了两种关键词提取算法,分别是TF-IDF以及TextRank

关于TF-IDF的原理,可以参考吴军老师的《数学之美》,里面给出了很详细的说明。本文只介绍利用TF-IDF算法提取关键词。

其中:

TextRank的用法与extract_tags的函数定义完全一致

词性标注主要是在分词的基础上,对词的词性进行判别,在jieba中可以使用如下方式进行:

在jieba中采用将目标文档按行分割,对每一行采用一个Python进程进行分词处理,然后将结果归并到一起(有点类似于MapReduce)。据说目前尚不支持Windows,仅支持Linux和MacOS。

启动并行分词使用如下命令:

关闭并行分词使用如下命令:

使用tokenize函数后,会获得一个词语信息的元组,元组中的第一个元素是分词得到的结果,第二个元素是词的起始位置,第三个元素是词的终止位置。

除了本文介绍的jieba分词工具包以外,还有很多好用的中文分词工具,比如

怎么转换Tokenize这个函数

一、NLTK进行分词 用到的函数: nltk.sent_tokenize(text) #对文本按照句子进行分割 nltk.word_tokenize(sent) #对句子进行分词 二、NLTK进行词性标注 用到的函数: nltk.pos_tag(tokens)#tokens是句子分词后的结果,同样是句子级的标注

《Attention Is All You Need》算法详解

该篇文章右谷歌大脑团队在17年提出,目的是解决对于NLP中使用RNN不能并行计算(详情参考 《【译】理解LSTM(通俗易懂版)》 ),从而导致算法效率低的问题。该篇文章中的模型就是近几年大家到处可以听到的Transformer模型。

由于该文章提出是解决NLP(Nature Language Processing)中的任务,例如文章实验是在翻译任务上做的。为了CV同学更好的理解,先简单介绍一下NLP任务的一个工作流程,来理解模型的输入和输出是什么。

首先拿CV中的分类任务来说,训练前我们会有以下几个常见步骤:

所以对于分类任务来说,模型的输入为预处理过的图片,输出为图片的类别(一般为预测的向量,然后求argmax获得类别)。

在介绍NLP任务预处理流程前,先解释两个词,一个是tokenize,一个是embedding。

tokenize 是把文本切分成一个字符串序列,可以暂且简单的理解为对输入的文本进行分词操作。对英文来说分词操作输出一个一个的单词,对中文来说分词操作输出一个一个的字。(实际的分词操作多有种方式,会复杂一点,这里说的只是一种分词方式,姑且这么定,方便下面的理解。)

embedding 是可以简单理解为通过某种方式将词向量化,即输入一个词输出该词对应的一个向量。(embedding可以采用训练好的模型如GLOVE等进行处理,也可以直接利用深度学习模型直接学习一个embedding层,Transformer模型的embedding方式是第二种,即自己去学习的一个embedding层。)

在NLP中,拿翻译任务(英文翻译为中文)来说,训练模型前存在下面步骤:

所以对于翻译任务来说,翻译模型的输入为句子每个词的one-hot向量或者embedding后的向量(取决于embedding是否是翻译模型自己学习的,如果是则输入one-hot就可以了,如果不是那么输入就是通过别的模型获得的embedding向量)组成的序列,输出为当前预测词的类别(一般为词表大小维度的向量)

知道了Transformer模型的输入和输出后,下面来介绍一下Transformer模型的结构。

先来看看Transformer的整体结构,如下图所示:

可以看出它是一个典型的seq2seq结构(encoder-decoder结构),Encoder里面有N个重复的block结构,Decoder里面也有N个重复的block结构。

可以注意到这里的embedding操作是与翻译模型一起学习的。所以Transformer模型的输入为对句子分词后,每个词的one-hot向量组成的一个向量序列,输出为预测的每个词的预测向量。

为了更好的利用序列的位置信息,在对embedding后的向量加上位置相关的编码。文章采用的是人工预设的方式计算出来的编码。计算方式如下

上式中,pos表示当前词在句子中的位置,例如输入的序列长L=5,那么pos取值分别为0-4,i表示维度的位置,偶数位置用 公式计算, 奇数位置用 公式计算。

文章也采用了加入模型训练来自动学习位置编码的方式,发现效果与人工预设方式差不多。

Encoder包含了N个重复的block结构,文章N=6。下面来拆解一个每个块的具体结构。

为了便于理解,介绍Multi-Head Attention结构前,先介绍一下基础的Scaled Dot-Product Attention结构,该结构是Transformer的核心结构。

Scaled Dot-Product Attention结构如下图所示

Scaled Dot-Product Attention模块用公式表示如下

上式中,可以假设Q\K的维度皆为 ,V的维度为 ,L为输入的句子长度, 为特征维度。

得到的维度为 ,该张量可以理解为计算Q与K中向量两两间的相似度或者说是模型应该着重关注(attention)的地方。这里还除了 ,文章解释是防止维度 太大得到的值就会太大,导致后续的导数会太小。(这里为什么一定要除 而不是 或者其它数值,文章没有给出解释。)

经过 获得attention权重后,与V相乘,既可以得到attention后的张量信息。最终的 输出维度为

这里还可以看到在Scaled Dot-Product Attention模块中还存在一个可选的Mask模块(Mask(opt.)),后续会介绍它的作用。

文章认为采用多头(Multi-Head)机制有利于模型的性能提高,所以文章引入了Multi-Head Attention结构。

Multi-Head Attention结构如下图所示

Multi-Head Attention结构用公式表示如下

上述参数矩阵为 , , , 。 为multi-head attention模块输入与输出张量的通道维度,h为head个数。文中h=8, ,

关于multi-head机制为什么可以提高模型性能

文章末尾给出了多头中其中两个头的attention可视化结果,如下所示

图中,线条越粗表示attention的权重越大,可以看出,两个头关注的地方不一样,绿色图说明该头更关注全局信息,红色图说明该头更关注局部信息。

从结构图不难看出网络加入了residual结构,所以add很好理解,就是输入张量与输出张量相加的操作。

Norm操作与CV常用的BN不太一样,这里采用NLP领域较常用的LN(Layer Norm)。(关于BN、LN、IN、GN的计算方式可以参考 《GN-Group Normalization》 )

还要多说一下的是,文章中共AddNorm结构是先相加再进行Norm操作。

该结构很简单,由两个全连接(或者kernel size为1的卷积)和一个ReLU激活单元组成。

Feed Forward结构用公式表示如下

Decoder同样也包含了N个重复的block结构,文章N=6。下面来拆解一个每个块的具体结构。

从名字可以看出它比2.3.1部分介绍的Multi-Head Attention结构多一个masked,其实它的基本结构如下图所示

可以看出这就是Scaled Dot-Product Attention,只是这里mask是启用的状态。

这里先从维度角度考虑mask是怎么工作的,然后再解释为什么要加这个mask操作。

mask工作方式

为了方便解释,先不考虑多batch和多head情况。

可以假设Q\K的维度皆为 ,V的维度为 。

那么在进行mask操作前,经过MatMul和Scale后得到的张量维度为 。

现在有一个提前计算好的mask为 ,M是一个上三角为-inf,下三角为0的方阵。如下图所示(图中假设L=5)。

的结果如下图所示(图中假设L=5)

注意:下图中的非0区域的值不一定是一样的,这里为了方便显示画成了一样的颜色

现在Scaled Dot-Product Attention的公式如下所示

可以看出经过M后,softmax在-inf处输出结果为0,其它地方为非0,所以softmax的输出为 ,该结果为上三角为0的方阵。与 进行相乘得到结果为 。

从上述运算可以看出mask的目的是为了让V与attention权重计算attention操作时只考虑当前元素以前的所有元素,而忽略之后元素的影响。即V的维度为 ,那么第i个元素只考虑0-i元素来得出attention的结果。

mask操作的作用

在解释mask作用之前,我们先解释一个概念叫 teacher forcing 。

teacher forcing这个操作方式经常在训练序列任务时被用到,它的含义是在训练一个序列预测模型时,模型的输入是ground truth。

举例来说,对于"I Love China - 我爱中国"这个翻译任务来说,测试阶段,Encoder会将输入英文编译为feature,Decoder解码时首先会收到一个BOS(Begin Of Sentence)标识,模型输出"我",然后将"我"作为decoder的输入,输出"爱",重复这个步骤直到输出EOS(End Of Sentence)标志。

但是为了能快速的训练一个效果好的网络,在训练时,不管decoder输出是什么,它的输入都是ground truth。例如,网络在收到BOS后,输出的是"你",那么下一步的网络输入依然还是使用gt中的"我"。这种训练方式称为teacher forcing。如下图所示

我们看下面两张图,第一张是没有mask操作时的示例图,第二张是有mask操作时的示例图。可以看到,按照teacher forcing的训练方式来训练Transformer,如果没有mask操作,模型在预测"我"这个词时,就会利用到"我爱中国"所有文字的信息,这不合理。所以需要加入mask,使得网络只能利用部分已知的信息来模拟推断阶段的流程。

decoder中的Multi-Head Attention内部结构与encoder是一模一样的,只是输入中的Q为2.4.1部分提到的Masked Multi-Head Attention的输出,输入中的K与V则都是encoder模块的输出。

下面用一张图来展示encoder和decoder之间的信息传递关系

decoder中AddNorm和Feed Forward结构都与encoder一模一样了。

1. 从图中看出encoder和decoder中每个block的输入都是一个张量,但是输入给attention确实Q\K\V三个张量?

对于block来说,Q=K=V=输入张量

2. 推断阶段,解码可以并行吗?

不可以,上面说的并行是采用了teacher forcing+mask的操作,是的训练可以并行计算。但是推断时的解码过程同RNN,都是通过auto-regression方式获得结果的。(当然也有non auto-regression方面的研究,就是一次估计出最终结果)

参考:

怎么理解token,tokenize,tokenizer?

1、一种解释

token:令牌

tokenize:令牌化

tokenizer:令牌解析器

2、另一种翻译是:token可以翻译为“标记”,tokenize可以翻译为“标记解析”或“解析标记”,tokenizer可以翻译为“标记解析器”。

在编写词法分析器(Lexer)或语法分析器(Parser)的时候,除了Lexer和Parser这两个词会经常使用外,tokenize和tokenizer也会经常出现,基本上所有涉及到词法解析的源码都会用到tokenize。

在邱仲潘译的《Mastering Java 2》有这儿一段:

StreamTokenizer类根据用户定义的规则,从输入流中提取可识别的子串和标记符号,这个过程称为令牌化 ([i]tokenizing[/i]),因为流简化为了令牌符号。令牌([i]token[/i])通常代表关键字、变量名、字符串、直接量和大括号等 语法标点。

感谢您阅读本篇对Tokenize的详细介绍,如果你对Tokenizertokenize还不够了解,想进一步学习关于Tokenize的知识,可以在本站首页搜索你想知道的!

分享给朋友:

相关文章

波卡生态项目表(有哪些币)

波卡生态项目表(有哪些币)

6 月 8 日,波卡创始人 Gavin Wood 对外释放了较为确定的 Kusama 卡槽拍卖时间表。需要注意的是这个时间表是按照 Gavin W ood 向理事会建议的节奏下,并且 Kusama 中...

欧意app2023版本下载 欧意交易app最新v6.1.8安装包

欧意app2023版本下载 欧意交易app最新v6.1.8安装包

欧意app2023版本货币的资讯都会及时更新,不会让用户错过其他的货币信息;可以收藏自己喜欢的信息,充分的感受到货币的丰富知识;货币的服务都是非常专业的,让用户能体验到优质的货币服务。...

火必交易所App2023版|Huobi官网-深入了解火币

火必交易所App2023版|Huobi官网-深入了解火币

火必一款在世界上也非常知名的数字货币交易平台和相服务提供商,目前该平台能够同时为数百种不同的数字货币进行交易,提供各种支持,平台可以同时进行法币交易以及币币交易,而且用户还可以根据自己的实际需求...

trx价格的简单介绍的简单介绍

trx价格的简单介绍的简单介绍

最近有很多小伙伴咨询关于trx价格的简单介绍的问题,小编结合多年的经验整理出来一些对应的资料,分享给大家。 trx今日价格 1.trx今日价格是不稳定的。 2.Tron将于2020年发生的另一...

qkl123官网(app下载)

qkl123官网(app下载)

中国大陆的加密领域,遭遇致命打击,似乎迎来至暗时刻。 9月24日,人民银行等十部门联合发布《关于进一步防范和处置虚拟货...