【发布时间】:2021-01-08 10:35:55
【问题描述】:
我目前正在为我的 NLP 任务使用转换器模型。我正在研究来自 Tensorflow.org 的变压器模型 explanation。
我理解整个模型背后的概念,但我在标记化部分有点卡住。
Tokenization 使用 SubwordTextEncoder API,我们需要首先构建词汇表,然后用一组标记替换句子(为了被模型理解),我们使用它的 .encode() 函数。
当我查看 tensorflow 网站上给出的它的用法时,我发现有点令人费解,因为这种编码如何有助于自我注意。
为了验证我对其实现的理解,我用 2 个句子创建了自己的词汇表 - ['My name is xyz.我正在做实验。']如下-
my_tokenizer = tfds.deprecated.text.SubwordTextEncoder.build_from_corpus(
(ex for ex in ['My name is xyz. I am doing experiments.']), target_vocab_size=258)
在这之后,我尝试编码几个句子。
首先,
代码-->
tokenized_string = my_tokenizer.encode('I am doing xyz.')
for ts in tokenized_string:
print ('{} ----> {}'.format(ts, my_tokenizer.decode([ts])))
输出 -->
8 ----> I
6 ----> am
5 ----> doing
1 ----> xyz
56 ----> .
另一个字符串是 -
代码-->
tokenized_string = my_tokenizer.encode('very nice.')
for ts in tokenized_string:
print ('{} ----> {}'.format(ts, my_tokenizer.decode([ts])))
输出 -->
128 ----> v
111 ----> e
124 ----> r
131 ----> y
42 ---->
120 ----> n
115 ----> i
109 ----> c
111 ----> e
56 ----> .
谁能告诉我这如何帮助实现更好的自我关注?或者这是执行标记化的旧方式,因为我可以看到这个特定的 API 即将被弃用?
【问题讨论】:
标签: python tensorflow deep-learning nlp transformer