【问题标题】:need a "bag of words" type of transformer需要一个“词袋”类型的变压器
【发布时间】:2021-07-06 20:57:47
【问题描述】:

我有一个 NLP 项目,其中一组单词当前由 w2v 编码,以与其他单词集合进行比较。我想试试transformers,它可以提供比w2v 更好的编码。但是,由于数据的性质,我根本不需要位置编码(因为单词的集合没有顺序)。 Is there a pretrained transformer that won't do positional encoding?

【问题讨论】:

  • 如果单词没有顺序,你可以分别编码每个单词吗?我可能对这个问题理解得不够透彻。
  • 您只是对它们的嵌入层感兴趣,还是对上下文化嵌入感兴趣?
  • 我只对它们的嵌入层感兴趣。在推理时,我的数据将是一组单词,需要将其编码为每个单词的向量。这些词没有太多的上下文信息。

标签: nlp word2vec huggingface-transformers transformer


【解决方案1】:

您可以使用get_input_embeddings() 访问相应的嵌入层。请看一下 roberta 的这个例子:

import torch
from transformers import RobertaTokenizerFast, RobertaModel
t = RobertaTokenizerFast.from_pretrained('roberta-base')
m = RobertaModel.from_pretrained('roberta-base')
e = m.get_input_embeddings()
 
myWordCollection = ['This', 'That', 'stackoverflow', 'huggingface']

#some of the words will consist of several tokens (i.e. several vectors)
i = t(myWordCollection, return_attention_mask=False, add_special_tokens=False)
#a dictionary with words:vectors for each token
o = {word:e(torch.tensor(ids))    for word, ids in zip(myWordCollection, i.input_ids)}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-20
    • 2016-02-16
    • 2018-11-07
    • 1970-01-01
    • 2014-09-28
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多