Word2vec:将外部词添加到每个上下文
Word2vec: add external word to every context
我正在寻找一个简单的 "hack" 来实现以下想法:我希望在每个单词的上下文中人为地出现一个特定的单词(基本目标是尝试使用 word2vec 进行监督句子分类)。
最好举个例子:
假设我有句子:"The dog is in the garden"
,以及 1 的 window。
所以我们会得到以下几对(目标,上下文):
(dog, The), (dog, is), (is, dog), (is, in), etc.
但我想提供给 word2vec 算法的是:
(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
除非您想保持单词-上下文对的顺序!
看看 'Paragraph Vectors' 算法——在 Python gensim 中实现为 class Doc2Vec。在其中,每个文本示例都会得到一个额外的伪词,该伪词基本上漂浮在整个示例上,为每个类 skip-gram(在段落向量中称为 PV-DBOW)或类 CBOW(在段落向量中称为 PV-DM)训练做出贡献-语境。
另请查看 Facebook 的 'FastText' 论文和图书馆。它本质上是 word2vec 在两个不同方向上的扩展:
首先,它可以选择学习子词片段(字符 n-gram)的向量,以便将来未知的词可以从其子词中获得粗略的猜测向量。
其次,它可以选择在向量训练期间不仅尝试预测附近的单词,还可以尝试预测包含文本示例(句子)的已知class化标签。因此,学习到的词向量可能更适合后续 class 其他未来句子的化。
我正在寻找一个简单的 "hack" 来实现以下想法:我希望在每个单词的上下文中人为地出现一个特定的单词(基本目标是尝试使用 word2vec 进行监督句子分类)。
最好举个例子:
假设我有句子:"The dog is in the garden"
,以及 1 的 window。
所以我们会得到以下几对(目标,上下文):
(dog, The), (dog, is), (is, dog), (is, in), etc.
但我想提供给 word2vec 算法的是:
(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
除非您想保持单词-上下文对的顺序!
看看 'Paragraph Vectors' 算法——在 Python gensim 中实现为 class Doc2Vec。在其中,每个文本示例都会得到一个额外的伪词,该伪词基本上漂浮在整个示例上,为每个类 skip-gram(在段落向量中称为 PV-DBOW)或类 CBOW(在段落向量中称为 PV-DM)训练做出贡献-语境。
另请查看 Facebook 的 'FastText' 论文和图书馆。它本质上是 word2vec 在两个不同方向上的扩展:
首先,它可以选择学习子词片段(字符 n-gram)的向量,以便将来未知的词可以从其子词中获得粗略的猜测向量。
其次,它可以选择在向量训练期间不仅尝试预测附近的单词,还可以尝试预测包含文本示例(句子)的已知class化标签。因此,学习到的词向量可能更适合后续 class 其他未来句子的化。