在小文本文件上应用word2vec


11

我是word2vec的新手,请耐心等待。我有一组文本文件,每个文件包含一组1000-3000之间的推文。我选择了一个通用关键字(“ kw1”),并希望使用word2vec查找与“ kw1”语义相关的术语。例如,如果关键字是“ apple”,我希望基于输入文件看到相关的术语,例如“ ipad”,“ os”,“ mac”...。因此,对于每个输入文件,这组与“ kw1”相关的术语会有所不同,因为word2vec将在单个文件上进行训练(例如,5个输入文件,在每个文件上运行word2vec 5次)。

我的目标是在给定公共关键字(“ kw1”)的情况下,为每个输入文件查找相关术语集,该关键字将用于其他目的。

我的问题/疑问是:

  • 将word2vec用于此类任务是否有意义?考虑到输入文件的大小,使用它在技术上是否正确?

我已经从code.google.com下载了代码:https : //code.google.com/p/word2vec/,并进行了如下尝试:

 time ./word2vec -train $file -output vectors.bin -cbow 1 -size 200 -window 10 -negative 25 -hs 1 -sample 1e-3 -threads 12 -binary 1 -iter 50

./distance vectors.bin 
  • 从结果中可以看出,当我使用“距离”工具获取与“ kw1”相关的术语时,收到了很多嘈杂的术语(停用词)。因此,我确实删除了停用词和其他嘈杂的用语,例如用户提及。但是我还没有看到word2vec需要清除输入数据的地方...?

  • 您如何选择正确的参数?当我更改“ -window”,“-iter”等参数时,我看到的结果(运行距离工具)有很大不同。我应该使用哪种技术来找到参数的正确值。(由于我将按比例放大数据集,因此对我来说,人工尝试和错误是不可能的)。

Answers:


9

对于这样大小的数据集,Word2Vec不是一个很好的选择。根据我所看到的研究,如果您输入至少两百万个单词,它将产生强大的功能,而3k条推文不足以实现简洁的单词相似性。


我们是否需要删除停用词作为数据预处理步骤?
samsamara'1

2
不,在word2vec方法中,您不需要这样做,因为算法本身依赖广泛的上下文来查找单词的相似性,因此停用词(其中大多数是介词,代词等)是算法的重要组成部分。
chewpakabra

但是,当我使用距离工具查找与给定单词最相似的单词时,删除停用词的版本比不使用停用词的版本给我提供了更明智的单词。你能猜出这是什么意思吗?
samsamara '16

可能是您使用的上下文太狭窄:如果您的模型前后查询两个词,则上下文中最多会有2个停用词,这可能会导致更糟的结果。我想,如果您要扩大上下文(这将使模型更大并且训练时间更长),则停用词模型将为您带来更好的结果。
chewpakabra '16

感谢您的输入,现在更有意义。另外,由于word2vec逐句处理输入,如果我将输入文档中的句子混在一起会发生什么?那应该完全改变输出向量吧?同样,考虑到send处理的发送,word2vec与doc2vec有何不同?再次感谢。
samsamara '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.