User2Vec?根据用户使用的文档表示用户

时间:2017-09-26 12:18:55

标签: neural-network word2vec doc2vec

我想基于他们喜欢的最后N个文档来形成用户的表示。

因此,我计划使用doc2vec来形成每个文档的表示形式,但我只想弄清楚什么是将用户放在同一空间中的好方法。

一些简单的事情就像平均他们最后5个文件的向量一样简单,但是我不确定这是否有点愚蠢。也许在这个空间中可能采取某种方式。

然后我想知道 - 就像我们在doc2vec中使用doc id一样,只需添加一个用户ID令牌并尝试这种方式来获取用户的表示就多么疯狂了与文档相同的方式。

我还没有找到很多方法来使用word2vec类型嵌入来提出文档向量和用户向量,然后可以在一种向量空间模型方法中使用。

有人提出任何指示或建议吗?

2 个答案:

答案 0 :(得分:0)

尝试使用Doc2Vec分析此类用户与文档的关系是合理的。

根据您的建议,您可能会按照最后消费的平均N-docs来代表用户。或者他们消耗的所有文档。或者可能选择M个质心来最小化它们消耗的最后N个文档的距离。但只有通过探索性实验才能找到可能对数据/目标有利的事情。

可以尝试将用户标记添加到批量Doc2Vec培训期间提供的任何其他doc-ID标记(或doc-category-tags)。但是,要注意添加更多标签意味着更大的模型,并且在一些粗略的意义上“淡化”可以从语料库中提取的含义,或者允许基于很少发生的标签的特性的过度拟合(而不是强制的所需的泛化)当模型较小时)。因此,如果您有许多用户标签,并且可能有许多用户标签仅应用于一小部分文档,那么doc向量的整体质量可能会受到影响。

Word2Vec空间中另一个有趣(但计算成本昂贵)的技术是“Word Mover的距离”(WMD),它根据成本比较文本以移动所有文本的含义,由一系列文字表示 - 在每个单词的向量位置意义,以匹配另一个人的桩。 (将单词转换为单词 - 向量附近单词是便宜的;对于远程单词是昂贵的。计算找到最佳的移位集,并报告其成本,较低的成本是更相似的文本。)

令我印象深刻的是,doc-of-doc-vectors可以用同样的方式处理,因此与一个用户关联的bag-of-doc-vector不需要缩减为任何单个平均向量,而是可以进行比较,通过大规模杀伤性武器,到另一个文件袋矢量,甚至单个doc-vectors。 (在gensim的wmdistance() KeyedVectors方法中支持WMD,但不直接在Doc2Vec类上,所以你需要做一些手动对象/数组杂耍或其他代码定制到适应它。)

答案 1 :(得分:0)

使用doc2vec学习用户嵌入是一种众所周知的技术。这是comprehensive article on user2vec models,描述了word2vec和doc2vec方法以及许多其他有用的技术。