word2vec:具有预训练模型的用户级,文档级嵌入

时间:2018-11-30 21:40:14

标签: python twitter nlp word2vec word-embedding

我目前正在开发基于Twitter内容的推荐系统,并已对4亿条推文进行了word2vec模型的预训练。

我将如何使用这些单词嵌入来创建文档/推文级别的嵌入,然后根据他们发布的推文获得用户的嵌入?

我最初打算对具有单词矢量表示形式的推文中的单词进行平均,然后对文档/推文矢量进行平均,以获得用户矢量,但是我不确定这是最佳的还是正确的。非常感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

平均短文本中所有单词的向量是获得文本摘要向量的一种方法。它通常可以作为快速基准。 (而且,如果您所拥有的只是单词向量,则可能是您的主要选择。)

如果您基于相对项重要性的其他某种度量(例如TF-IDF)或使用原始单词向量(在归一化为单位长度之前,作为预归一化)进行加权平均,则这种表示有时可能会有所改善原始幅度有时可能暗示着意义强度)。

您可以通过平均用户的所有文本,或(大致等效地)将其所有创作的单词放入伪文档中,然后将所有这些单词平均在一起来创建用户级向量。

您可能会保留更多种类的用户帖子,尤其是如果他们的兴趣跨越很多领域,请首先将其推文聚集到N个群集中,然后将用户建模为群集的N个质心向量。也许甚至每个用户的N也会有所不同,这取决于他们的tweet数量或他们的tweet主题的范围。

使用原始推文,您还可以使用“ Paragraph Vector”(在Python gensim这样的库中为“ Doc2Vec”)之类的算法训练每条推文矢量。但是,这可能会挑战4亿个RAM的需求。文件。 (如果您的用户数量较少,也许他们可以是“文档”,也可以是FastText分类模式培训课程的预期课程。)

答案 1 :(得分:0)

您在正确的轨道上,对一条推文中的单词向量求平均,以获得“推文向量”,然后对每个用户的推文向量求平均,以获得“用户向量”。这些平均向量是否有用取决于您的学习任务。很难说出这种平均方法是否会奏效,因为它取决于每个用户在推文中使用的单词之间的差异,取决于数据集的多样性。