我正在寻找一个简单的“黑客”来实现以下想法:我想在每个单词的上下文中人为地出现一个特定的单词(基本目标是尝试使用word2vec进行监督句子分类)。
最好的例子是:
说我有句子:"The dog is in the garden"
,窗口为1。
所以我们得到以下(目标,上下文)的pais:
(dog, The), (dog, is), (is, dog), (is, in), etc.
但我想提供给word2vec algo的是:
(dog, The), (dog, is), **(dog, W)**, (is, dog), (is, in), **(is, W)**, etc.,
好像我的单词W在每个单词的上下文中。
其中W是我选择的单词,而不是现有的词汇。
在R或python中有一种简单的方法吗?
答案 0 :(得分:1)
我想象你有每个句子的句子列表和标签列表:
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
除非你想在字对中保持顺序!
答案 1 :(得分:1)
看一下'段落向量' algorithm - 在Python gensim中实现为Doc2Vec类。在其中,每个文本示例都获得了一个额外的伪词,它基本上浮动在整个示例上,有助于每个类似跳过类型(在段落向量中称为PV-DBOW)或类似CBOW(在段落向量中称为PV-DM)训练-context。
另请参阅Facebook的FastText'纸和图书馆。它本质上是word2vec在两个不同方向的扩展:
首先,它可以选择学习子字段(chracter n-gram)的向量,以便将来的未知单词可以从其子词中获得粗猜测向量。
其次,它可以选择在矢量训练期间尝试不仅预测附近的单词,而且还可以预测包含文本示例(句子)的已知分类标签。结果,学习的单词矢量可能更好地用于其他未来句子的后续分类。