标签: word-embedding

我如何使用 Glove 词嵌入构建模型并使用 R 中的 text2vec 预测测试数据

我正在使用 GloVe 词嵌入将文本数据的分类模型分为两类(即将每个评论分为两类)。我有两列,一列包含文本数据(评论),另一列是二进制目标变量(评论是否可操作)。我能够使用 text2vec 文档中的以下代码为文本数据生成 Glove 词嵌入。

glove_model <- GlobalVectors$new(word_vectors_size = 50,vocabulary = 
glove_pruned_vocab,x_max = 20L)
#fit model and get word vectors
word_vectors_main <- glove_model$fit_transform(glove_tcm,n_iter = 20,convergence_tol=-1)
word_vectors_context <- glove_model$components
word_vectors <- word_vectors_main+t(word_vectors_context)
Run Code Online (Sandbox Code Playgroud)

如何构建模型并生成对测试数据的预测?

r text-classification word2vec word-embedding text2vec

5
推荐指数
1
解决办法
1891
查看次数

从句子中提取关系概念

是否有当前模型,或者我如何训练一个模型,该模型采用涉及两个主题的句子,例如:

[减数分裂]是[细胞分裂]的一种...

并决定一个是另一个的子概念还是父概念?在这种情况下,细胞分裂是减数分裂的母体。

nlp information-extraction word2vec word-embedding relation-extraction

5
推荐指数
1
解决办法
273
查看次数

LDA2Vec Python 实现示例?

大家好,有人可以帮我看一下使用 python 的 LDA2Vec 的工作示例吗?请假设数据框 df 具有包含文本数据的“注释”列

我正在尝试实现“cemoody/lda2vec”github 示例,但遇到多个问题 - 1. 如何安装 spacy 包?2.导入错误:无法从“lda2vec”导入名称“预处理” 3.导入错误:无法从“lda2vec”导入名称“LDA2Vec”

不知道我在这里缺少什么。

任何帮助/链接将非常感激

python lda word2vec word-embedding

5
推荐指数
1
解决办法
4303
查看次数

Keras 嵌入层:将零填充值保持为零

我一直在考虑单词序列的 0-padding 以及如何将 0-padding 转换为 Embedding 层。乍一看,人们会认为您还想保持 embeddings = 0.0。但是,Embeddinglayer in 会keras为任何输入标记生成随机值,并且无法强制它生成 0.0。注意,mask_zero做一些不同的事情,我已经检查过了。

有人可能会问,为什么要担心这一点,即使嵌入不是 0.0,只要它们相同,代码似乎也能工作。所以我想出了一个例子,尽管有点做作,其中将 0 填充标记的嵌入设置为 0.0 会有所不同。

我使用了 20 News Groups 数据集from sklearn.datasets import fetch_20newsgroups。我做了一些最小的预处理:删除标点符号、停用词和数字。我from keras.preprocessing.sequence import pad_sequences用于 0-padding。我将大约 18K 个帖子分成训练和验证集,训练/验证的比例 = 4/1。我创建了一个简单的 1 个密集隐藏层网络,输入是扁平化的嵌入序列:

    EMBEDDING_DIM = 300
    MAX_SEQUENCE_LENGTH = 1100
    layer_size = 25
    dropout = 0.3
    sequence_input = Input(shape=(MAX_SEQUENCE_LENGTH,), dtype='int32', name='dnn_input')
    embedding_layer = Embedding(len(word_index) + 1, EMBEDDING_DIM, input_length=MAX_SEQUENCE_LENGTH, name = 'embedding_dnn')
    embedded_sequences = embedding_layer(sequence_input)
    x = Flatten(name='flatten_dnn')(embedded_sequences) …
Run Code Online (Sandbox Code Playgroud)

machine-learning text-classification keras word-embedding zero-padding

5
推荐指数
1
解决办法
1011
查看次数

用于大文档相似性的通用句子编码器

我需要创建一个“搜索引擎”体验:从一个简短的查询(几个字),我需要在数千个文档的语料库中找到相关文档。

在分析了几种方法之后,我使用 Google 的 Universal Sentence Encoder 得到了非常好的结果。问题是我的文档可能很长。对于这些很长的文本,看起来性能正在下降,所以我的想法是将文本切成句子/段落。

所以我最终得到了每个文档的向量列表(代表文档的每个部分)。

我的问题是:是否有最先进的算法/方法来计算向量列表的得分?我真的不想将它们合并为一个,因为它会产生与以前相同的效果(相关部分会在文档中被稀释)。任何评分算法来总结查询和文本不同部分之间的多个余弦相似度?

重要信息:我可以有短文本和长文本。所以我可以为一个文档有 1 到 10 个向量。

nlp machine-learning cosine-similarity word-embedding

5
推荐指数
1
解决办法
449
查看次数

句子编码和上下文词嵌入有什么区别?

我在阅读有关 BERT 和 ELMo 的论文时看到了这两个术语,所以我想知道它们之间是否有区别。

nlp word-embedding elmo bert-language-model

5
推荐指数
1
解决办法
1254
查看次数

警告:警告:tensorflow:Model 是用形状 (None, 150) 构建的,但它在形状不兼容的输入上被调用 (None, 1)

所以我试图建立一个词嵌入模型,但我一直收到这个错误。在训练过程中,准确率没有变化,val_loss 保持“nan”

数据的原始形状是

x.shape, y.shape
((94556,), (94556, 2557))
Run Code Online (Sandbox Code Playgroud)

然后我重塑它:

xr= np.asarray(x).astype('float32').reshape((-1,1))
yr= np.asarray(y).astype('float32').reshape((-1,1))
((94556, 1), (241779692, 1))
Run Code Online (Sandbox Code Playgroud)

然后我通过我的模型运行它

model = Sequential()
model.add(Embedding(2557, 64, input_length=150, embeddings_initializer='glorot_uniform'))
model.add(Flatten())
model.add(Reshape((64,), input_shape=(94556, 1)))
model.add(Dense(512, activation='sigmoid'))
model.add(Dense(128, activation='sigmoid'))
model.add(Dense(64, activation='relu'))
model.add(Dense(10, activation='sigmoid'))
model.add(Dense(1, activation='relu'))
# compile the mode
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# summarize the model
print(model.summary())
plot_model(model, show_shapes = True, show_layer_names=False)
Run Code Online (Sandbox Code Playgroud)

训练后,我得到了每个时期的恒定准确度和 val_loss nan

history=model.fit(xr, yr, epochs=20, batch_size=32, validation_split=3/9)

Epoch 1/20
WARNING:tensorflow:Model was constructed with shape (None, 150) for input Tensor("embedding_6_input:0", shape=(None, 150), dtype=float32), but …
Run Code Online (Sandbox Code Playgroud)

python reshape keras tensorflow word-embedding

5
推荐指数
1
解决办法
2万
查看次数

如何使用transformers.BertTokenizer 对多个setence 进行编码?

我想通过使用 transform.BertTokenizer 对多个句子进行编码来创建一个小批量。它似乎适用于单个句子。如何使它适用于几个句子?

from transformers import BertTokenizer

tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')

# tokenize a single sentence seems working
tokenizer.encode('this is the first sentence')
>>> [2023, 2003, 1996, 2034, 6251]

# tokenize two sentences
tokenizer.encode(['this is the first sentence', 'another setence'])
>>> [100, 100] # expecting 7 tokens
Run Code Online (Sandbox Code Playgroud)

word-embedding huggingface-transformers huggingface-tokenizers

5
推荐指数
1
解决办法
5434
查看次数

在 python 中测量多种语言文本之间的相似性的最佳方法是什么?

所以,我有一个任务需要测量两个文本之间的相似度。这些文本是杂货店产品的简短描述。它们始终包含产品名称(例如牛奶),并且可能包含生产商和/或尺寸,以及产品的一些其他特征。

我有一整套这样的文本,然后,当新的文本到达时,我需要确定我的数据库中是否有类似的产品,并测量它们的相似程度(从 0 到 100% 的范围)。

问题是:文本可能采用两种不同的语言:乌克兰语和俄语。另外,如果有外国品牌(例如,Coca Cola),它会用英文书写。

我解决这个任务的最初想法是获得多语言单词嵌入(不同语言中的相似单词位于附近)并找到这些文本之间的距离。但是,我不确定这会有多有效,如果可以的话,该从什么开始。

因为我拥有的每个文本只是一组产品特征,所以一些基于上下文的词嵌入可能不起作用(我不确定这个陈述,这只是我的假设)。

到目前为止,我已经尝试熟悉MUSE框架,但在安装时遇到了问题faiss

因此,我的问题是:

  • 我的词嵌入想法值得尝试吗?
  • 也许有更好的方法吗?
  • 如果词嵌入的想法没问题,我应该使用哪些?

注意:我有 Windows 10(以防某些库无法在 Windows 上运行),并且我需要该库才能使用乌克兰语和俄语。

预先感谢您的任何帮助!任何建议将不胜感激!

python multilingual nlp similarity word-embedding

5
推荐指数
1
解决办法
1543
查看次数

如何从 BERT 模型中获取词嵌入的余弦相似度

我感兴趣的是如何从 BERT 模型中获取不同句子中词嵌入的相似度(实际上,这意味着词在不同场景下具有不同的含义)。

例如:

sent1 = 'I like living in New York.'
sent2 = 'New York is a prosperous city.'
Run Code Online (Sandbox Code Playgroud)

我想从sent1和sent2中获取cos(纽约,纽约)的值,即使短语“纽约”相同,但它出现在不同的句子中。我从https://discuss.huggingface.co/t/generate-raw-word-embeddings-using-transformer-models-like-bert-for-downstream-process/2958/2得到了一些直觉

但我仍然不知道我需要提取哪一层的嵌入以及如何计算上面示例的 cos 相似度。

在此先感谢您的任何建议!

python transformer-model word-embedding bert-language-model

5
推荐指数
1
解决办法
1万
查看次数