Nlp 在小文本文件上应用word2vec

Nlp 在小文本文件上应用word2vec,nlp,text-mining,word2vec,Nlp,Text Mining,Word2vec,我对word2vec完全不熟悉,所以请耐心听我说。我有一组文本文件,每个文件包含一组推特,在1000-3000之间。我选择了一个常用关键字(“kw1”),我想使用word2vec查找“kw1”的语义相关术语。例如,如果关键字是“apple”,我希望看到相关术语,如“ipad”、“os”、“mac”。。。基于输入文件。因此,“kw1”的这组相关术语对于每个输入文件都是不同的,因为word2vec将在单个文件上接受培训(例如,5个输入文件,在每个文件上运行word2vec 5次) 我的目标是在给定公

我对word2vec完全不熟悉,所以请耐心听我说。我有一组文本文件,每个文件包含一组推特,在1000-3000之间。我选择了一个常用关键字(
“kw1”
),我想使用word2vec查找
“kw1”
的语义相关术语。例如,如果关键字是
“apple”
,我希望看到相关术语,如
“ipad”、“os”、“mac”
。。。基于输入文件。因此,
“kw1”
的这组相关术语对于每个输入文件都是不同的,因为word2vec将在单个文件上接受培训(例如,5个输入文件,在每个文件上运行word2vec 5次)

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

我的问题/疑问是:

  • 在这样的任务中使用word2vec有意义吗?考虑到输入文件的小尺寸,使用它在技术上是否正确
我已经从code.google.com下载了代码,并进行了如下的试运行:

 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”
    相关的术语时,我发现有很多嘈杂的术语(stopwords)。因此,我确实删除了停止词和其他嘈杂的术语,如用户提及。但是我还没有看到word2vec需要干净的输入数据

  • 如何选择正确的参数?当我更改参数(如
    '-window'
    '-iter'
    )时,我看到结果(通过运行
    距离
    工具)变化很大。我应该使用哪种技术来找到参数的正确值。(我无法手动尝试并出错,因为我将扩展数据集)

第一个问题:

是的,对于我所能想象的word2vec应用到的几乎所有任务,您都必须清理数据——特别是如果您对语义(而不是语法)感兴趣,这是运行word2vec的常见原因。此外,这不仅仅是删除停止字,尽管这是一个很好的第一步。通常,您还需要一个标记器和分句器,我认为如果您查看deeplearning4java文档(该文档有word2vec实现),它显示了如何使用这些工具。这很重要,因为你可能不在乎苹果和数字“5”、苹果和“s”之间的关系。。。 有关word2vec预处理的更多讨论,请参阅

第二个问题:


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

有趣但不完全适合stackexchange提出这些问题。我建议在datascience.stackexchange.com上提问,否则我将投票结束这个问题,因为它属于SO论坛。@使用的Sophos标记在SO仍然有效,所以我认为它仍然属于SOhere@samsamara:这不是关于标签,而是关于问题的性质-这是相当普遍的,不只是相关的但是我没有看到任何地方提到删除stopwords?word2vec不是应该处理停止词,即使你不删除它们吗?word2vec是指你上面引用的算法还是实现?我读了Tomas 2013年的论文,没有提到stopwords,这是一个实现细节,算法不需要它。此外,如果你提到的谷歌集团的word2vec实现删除了它们,我会感到惊讶,因为没有商定的停止词集。一些从事专门工作的语言学甚至可能希望包括传统的停止词,尽管我认为这在英语中很少见。这有用吗?