在tensorflow中,运行word2vec模型时如何按句子分隔?

在tensorflow中,运行word2vec模型时如何按句子分隔?,tensorflow,word2vec,Tensorflow,Word2vec,在gensim word2vec中,输入可以是一个句子列表。然而,在tensorflow word2vec中,输入是一个单词列表(将句子连接在一起)。在构建{目标词,上下文词}对时,有没有办法将句子分开? 我正在使用以下代码: 该示例使用自定义op进行数据处理,主要是为了获得最佳性能。您可以自己输入数据,然后按照自己的意愿获得要训练的词对,使用小批量可能会稍微慢一点。对于大的小批量,速度应该不会太慢,但是对于这些类型的模型,使用小的小批量,您可能会获得最佳的学习进度。听起来您不希望句子末尾的单词

在gensim word2vec中,输入可以是一个句子列表。然而,在tensorflow word2vec中,输入是一个单词列表(将句子连接在一起)。在构建{目标词,上下文词}对时,有没有办法将句子分开? 我正在使用以下代码:

该示例使用自定义op进行数据处理,主要是为了获得最佳性能。您可以自己输入数据,然后按照自己的意愿获得要训练的词对,使用小批量可能会稍微慢一点。对于大的小批量,速度应该不会太慢,但是对于这些类型的模型,使用小的小批量,您可能会获得最佳的学习进度。

听起来您不希望句子末尾的单词与下一句开头的单词相关联(成为同一本地上下文窗口的一部分)。如果是这样,有几种不同的方法来实现这一点

如果您不想对word2vec示例代码进行任何代码修改,最简单的方法是在每个句子的结尾和开头添加一些间隔词。您需要添加与
窗口大小
参数一样多的单词。默认的
窗口大小为
5

如果示例语句为:
狗跳过了篱笆 您需要将间隔符(
XYZ
此处)添加到开头和结尾:

XYZ XYZ XYZ XYZ XYZ XYZ XYZ XYZ狗跳过围栏XYZ XYZ XYZ XYZ

以下是Tensorflow示例中的Skip gram对生成器:

然后您将获得以下输入和输出对:

with num_skips = 2 and skip_window = 1:
    batch: ['originated', 'originated', 'as', 'as', 'a', 'a', 'term', 'term', 'of', 'of', 'abuse', 'abuse', 'first', 'first', 'used', 'used']
    labels: ['as', 'anarchism', 'originated', 'a', 'term', 'as', 'a', 'of', 'term', 'abuse', 'of', 'first', 'used', 'abuse', 'against', 'first']
因为skip gram预测上下文词:
origined->as
origined->无政府主义


我也有CBOW批处理生成器的实现。如果你想让我也在这里发表评论。

你说的{目标词,上下文词}是什么意思?我想你只需要句子中的单词,而skim-gram模型会计算出上下文单词。@SungKim是的,skim-gram模型会计算出上下文单词。但目前的模型似乎只支持一长串单词,并且在每个小批量中构造{target word,context word}对。我想在每个句子中构建{目标词,上下文词}对。你能建议怎么做吗?我想我需要更改以下步骤:
(单词、计数、单词每历元、self.\u历元、self.\u单词、示例、标签)=word2vec.skipgram(文件名=opts.train\u data,batch\u size=opts.batch\u size,window\u size=opts.window\u size,min\u count=opts.min\u count,subsample=opts.subsample)
所以我需要编写自己的skip gram算法?此外,上面skipgram的输出是张量。我自己不知道如何构造张量。
data: ['anarchism', 'originated', 'as', 'a', 'term', 'of', 'abuse']
with num_skips = 2 and skip_window = 1:
    batch: ['originated', 'originated', 'as', 'as', 'a', 'a', 'term', 'term', 'of', 'of', 'abuse', 'abuse', 'first', 'first', 'used', 'used']
    labels: ['as', 'anarchism', 'originated', 'a', 'term', 'as', 'a', 'of', 'term', 'abuse', 'of', 'first', 'used', 'abuse', 'against', 'first']