Nlp Word2vec:在每个上下文中添加外部单词

Nlp Word2vec:在每个上下文中添加外部单词,nlp,word2vec,Nlp,Word2vec,我正在寻找一个简单的“黑客”来实现以下想法:我希望在每个单词的上下文中人为地出现一个特定的单词(基本目标是尝试使用word2vec进行监督句子分类) 最好举一个例子: 假设我有一句话:“狗在花园里”,还有一扇窗户 因此,我们将获得以下PAI(目标,上下文): 但我想向word2vec algo提供的是: (dog, The), (dog, is), **(dog, W)**, (is, dog), (is, in), **(is, W)**, etc., 就好像我的单词W是在每个单词的上下文中

我正在寻找一个简单的“黑客”来实现以下想法:我希望在每个单词的上下文中人为地出现一个特定的单词(基本目标是尝试使用word2vec进行监督句子分类)

最好举一个例子:

假设我有一句话:
“狗在花园里”
,还有一扇窗户

因此,我们将获得以下PAI(目标,上下文):

但我想向word2vec algo提供的是:

(dog, The), (dog, is), **(dog, W)**, (is, dog), (is, in), **(is, W)**, etc.,
就好像我的单词W是在每个单词的上下文中

其中W是我选择的一个词,而不是现有词汇表中的词


在R或python中有没有一种简单的方法可以做到这一点?

我想象你有一个句子列表和每个句子的标签列表:

sentences = [
    ["The", "dog", "is", "in", "the", "garden"],
    ["The", "dog", "is", "not", "in", "the", "garden"],
]
然后创建了单词上下文对:

word_context = [("dog", "The"), ("dog", "is"), ("is", "dog"), ("is", "in") ...]
现在,如果每个句子都有一个标签,则可以将标签添加到所有单词的上下文中:

labels = [
    "W1",
    "W2",
]

word_labels = [
    (word, label)
    for sent, label in zip(sentences, labels)
    for word in sent
]

word_context += word_labels

除非你想保持单词上下文对的顺序

看看“段落向量”算法——在Python gensim中作为类Doc2Vec实现。在其中,每个文本示例都会获得一个额外的伪词,该伪词基本上漂浮在整个示例上,用于每个类似跳过gram(在段落向量中称为PV-DBOW)或CBOW(在段落向量中称为PV-DM)的训练上下文

还可以看看Facebook的“FastText”报纸和图书馆。它本质上是word2vec在两个不同方向上的扩展:

首先,它可以选择子词片段的学习向量(chractern-grams),以便将来的未知词可以从它们的子词中获得粗略的猜测向量


其次,它可以选择在向量训练过程中不仅尝试预测附近的单词,还可以预测包含文本示例(句子)的已知分类标签。因此,学习到的单词向量可能更好地用于其他未来句子的后续分类

在这方面类似于“上下文充实”吗?是的,非常感谢你的链接!基本上,我的想法似乎是他们“丰富背景”的一个特例。现在我想知道我是否真的必须卷起袖子自己编写代码……这确实是我想在将这些句子输入skip-gram算法之前对它们做的初步步骤。您是否知道可以将这些元组作为输入(而不仅仅是原始语句)的实现?例如,这一个?啊哈,现在我明白你的问题了!对不起,我想你应该给它编码。我发给你的链接不是word2vec。这是一个如何创建这些单词对的示例。我不确定。也许有一种在Gensim中训练单词对的方法。你说得对。一般来说,我对nlp还是相当陌生的,但gensim似乎确实将令牌作为输入。我会深入研究的。太多了!谢谢你的建议!我认为gensim的实现可能就是我想要的,特别是如果我可以在多个段落中重复使用相同的标签(你知道这是否可行吗?)。我将看一看FastText。是的,您可以重复使用标签(在Doc2Vec培训时称为“标签”),或者给每个文本一个唯一的标签,然后培训分类器学习从这些标签向量到标签的映射。
labels = [
    "W1",
    "W2",
]

word_labels = [
    (word, label)
    for sent, label in zip(sentences, labels)
    for word in sent
]

word_context += word_labels