我对 word2vec 完全陌生,所以请耐心等待。我有一组文本文件,每个文件都包含一组推文,介于 1000-3000 之间。我选择了一个常用关键字 ("kw1"
),我想为 "kw1"
找到语义相关的术语使用 word2vec。例如,如果关键字是 "apple"
我希望看到相关术语,例如 "ipad" "os" "mac"
...基于输入文件。所以这组相关术语为"kw1"
每个输入文件都会有所不同,因为 word2vec 将在单个文件上进行训练(例如,5 个输入文件,在每个文件上运行 word2vec 5 次)。
我的目标是在给定通用关键字 ("kw1"
) 的情况下为每个输入文件找到相关术语集,这些关键字将用于其他目的。
我的问题/疑问是:
我从 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'
.我应该使用哪种技术来找到参数的正确值。 (我无法进行手动试验和错误,因为我将扩大数据集)。 最佳答案
第一个问题:
是的,对于我可以想象 word2vec 应用于您的几乎所有任务都必须清理数据 - 特别是如果您对语义(而不是语法)感兴趣,这是运行 word2vec 的通常原因。此外,这不仅仅是删除停用词,尽管这是一个很好的第一步。通常你也会想要一个分词器和句子分割器,我想如果你看一下 deeplearning4java 的文档(它有一个 word2vec 实现),它会显示使用这些工具。这很重要,因为您可能不关心苹果与数字“5”、苹果与“'s”等之间的关系......
有关 word2vec 预处理的更多讨论,请参阅 https://groups.google.com/forum/#!topic/word2vec-toolkit/TI-TQC-b53w
第二个问题:
word2vec AFAIK 没有可用的自动调整,因为这意味着实现的作者知道你打算用它做什么。通常,实现的默认值是在一个(或一组)任务上实现的人的“最佳”值。抱歉,word2vec 不是交 key 解决方案。您将需要了解参数并调整它们以相应地解决您的任务。
关于nlp - 在小文本文件上应用 word2vec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34704519/