gpt4 book ai didi

r - 如何从概念上思考标记化词和词嵌入之间的关系?

转载 作者:行者123 更新时间:2023-12-04 01:35:09 24 4
gpt4 key购买 nike

我一直在使用 JJ Allaire 的在神经网络模型中使用词嵌入进行文本处理的指南 (https://jjallaire.github.io/deep-learning-with-r-notebooks/notebooks/6.1-using-word-embeddings.nb.html)。我对模型如何将词的标记化序列(x_train)与使用整个数据集(而不仅仅是训练数据)定义的词嵌入联系起来感到困惑。有没有办法概念化单词标记如何映射到单词嵌入?否则,像“king”这样的词如何映射到词嵌入(例如使用 Glove 获得)。我说的是这些代码块之间的关系:

#building model 
history <- model %>% fit(
x_train, y_train,
epochs = 20,
batch_size = 32,
validation_data = list(x_val, y_val)
)

#relating model to word embeddings
model <- keras_model_sequential() %>%
layer_embedding(input_dim = max_words, output_dim = embedding_dim,
input_length = maxlen) %>%
layer_flatten() %>%
layer_dense(units = 32, activation = "relu") %>%
layer_dense(units = 1, activation = "sigmoid")

get_layer(model, index = 1) %>%
set_weights(list(embedding_matrix)) %>%
freeze_weights()

来自 x_train 的标记化单词如何链接回 embedding_matrix 中的单词(特别是如果嵌入层是针对所有数据进行训练的)?

最佳答案

简而言之

从概念上讲,keras::layer_embedding()采用二维矩阵 [samples, word_sequences] ,其中值是整数词标识符(词索引),并将所述值替换为其词向量,使其成为 3D 矩阵 [samples, word_sequences, embeddings] -- 换句话说,其中的值是词向量,而不是词标识符。 粘贴的词向量可以来自其他地方,如上面的示例,或者它们可以在训练期间随机初始化和更新。

简而言之

你通过keras::layer_embedding()词序列。 train_x是一个二维矩阵,其中行是样本(文档),列是单词序列。 train_x 中的值是每个单词的整数标识符(单词索引),对应于它们在单独存储的单词列表(词汇表)中的位置。我们可以风格化 train_x作为:

enter image description here

在这里,值 75 对应于词汇表中第 75 位的单词。
embedding_matrix您正在传递给 keras::set_weights()是一个二维矩阵,其中的行与您的词汇表匹配。例如,embedding_matrix 第 75 行的值是词汇表中第 75 位单词的词向量。

因此,如果您正在使用预先训练的嵌入,如上面的示例所示,那么 keras::layer_embedding()简单地用 embedding_matrix 的那一行中的词向量替换词索引.我们可以将操作风格化为

for (x in 1:nrow(train_x)) {
for (y in 1:ncol(train_x)) {
train_x[x, y] <- embedding_matrix[train_x[x, y], ]
}
}

因此,我们以一个 3d 矩阵(一个立方体)结束,我们可以将其风格化为:

enter image description here

关于r - 如何从概念上思考标记化词和词嵌入之间的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50184280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com