在小文本文件

时间:2016-01-10 10:47:43

标签: nlp text-mining word2vec

我对word2vec完全陌生,所以请耐心等待。我有一组文本文件,每个文件包含一组推文,介于1000-3000之间。我选择了一个常用关键字("kw1"),我希望使用word2vec找到"kw1"的语义相关术语。例如,如果关键字为"apple",我希望根据输入文件查看"ipad" "os" "mac"等相关字词。因此"kw1"的这组相关术语对于每个输入文件将是不同的,因为word2vec将被训练在单个文件上(例如,5个输入文件,在每个文件上运行word2vec 5次)。

我的目标是在给定common关键字("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 
  • 根据我的搜索结果,当我使用'distance'工具获取"kw1"的相关字词时,我发现我收到许多嘈杂的字词(停用词)。所以我确实删除了停用词和其他嘈杂的术语,如用户提及。但我还没有看到word2vec需要清理输入数据的任何地方?

  • 您如何选择正确的参数?当我更改distance'-window'等参数时,我看到结果(来自运行'-iter'工具)变化很大。我应该使用哪种技术来查找参数的正确值。 (手动试验和错误对我来说是不可能的,因为我将扩大数据集)。

1 个答案:

答案 0 :(得分:4)

第一个问题:

是的,几乎任何我能想象的任务都是word2vec应用于你将要清理数据 - 特别是如果你对语义(不是语法)感兴趣,这是运行word2vec的常见原因。此外,它不仅仅是删除停用词,尽管这是一个很好的第一步。通常你也会想要一个tokenizer和一个句子分段器,我想如果你看一下deeplearning4java(它有一个word2vec实现)的文档,它会显示使用这些工具。这一点很重要,因为你可能不关心苹果和数字之间的关系" 5",苹果和"""等... 有关word2vec预处理的更多讨论,请参阅https://groups.google.com/forum/#!topic/word2vec-toolkit/TI-TQC-b53w

第二个问题:

word2vec AFAIK没有自动调整功能,因为这意味着实现的作者知道你打算用它做什么。通常,实施的默认值是" best"任何在(或一组)任务上实现的人的值。抱歉,word2vec不是一个交钥匙解决方案。您需要了解参数并进行调整以相应地修复您的任务。