2017-09-16 61 views
0

我有大量的字符串列表中: 列表内容的小例子是:需要同时使用Word2Vec

[“学习机”,“苹果”,“财经”, “AI”,“Funding”]

我希望将它们转换为向量并将它们用于聚类目的。 在查找它们各自的向量时,是否考虑了这些字符串的上下文?

如何获得这些字符串的载体,如果我只是包含字符串的列表?

我已经做了迄今为止代码..

from gensim.models import Word2Vec 
    vec = Word2Vec(mylist) 

附:另外,我可以在Word2Vec上获得一个很好的参考/教程吗?

回答

0

Word2Vec是一种人工神经网络方法。 Word2Vec实际上创建了嵌入,这反映了单词之间的关系。下面的链接将帮助您获得完整的代码来实现Word2Vec。

一些很好的链接是thisthis。对于第二个链接尝试他的github回购细节代码。他只是解释博客中的主要部分。主要文章是this

您可以使用下面的代码将单词转换为相应的数值。

word_counts = Counter(words) 
sorted_vocab = sorted(word_counts, key=word_counts.get, reverse=True) 
int_to_vocab = {ii: word for ii, word in enumerate(sorted_vocab)} 
vocab_to_int = {word: ii for ii, word in int_to_vocab.items()} 
0

要使用word2vec查找单词向量,您需要一个不是字符串列表的句子列表。

word2vec所做的是试图遍历句子中的每个单词,并试图在每个单词中指定一个窗口中的单词(主要是5个左右),并调整与该单词相关的向量误差最小化。

显然,这意味着查找单词向量时单词的顺序很重要。如果你只是提供一个没有有意义顺序的字符串列表,你就不会得到一个好的嵌入。

我不确定,但我认为你会发现LDA更适合这种情况,因为你的字符串列表中没有固有的顺序。

0

回答您的2个问题:

  1. ,同时找出它们各自的载体被认为将文中的这些字符串的情况下?
    是的,word2vec为每个单词(或字符串)创建一个向量,因为它可以将多字表达式视为唯一的单词,例如纽约)。这个向量通过它的上下文来描述这个词。它假设类似的词语将出现在相似的上下文中。上下文由周围的单词组成(在一个窗口中,包含单词或skip-gram假设)。

  2. 如何获得这些字符串的载体,如果我只是包含字符串的列表?
    您需要更多的单词。 Word2Vec输出质量取决于训练集的大小。在您的数据上训练Word2Vec是无意义的。

@Beta提供的链接是一个很好的介绍/说明。

0
word2vec + context = doc2vec 

从文本中构建句子并用标签标记它们。

火车doc2vec关于标记句子,以获得嵌入与词语相同空间的每个标签的载体。

然后你可以做矢量推理并获得任意一段文本的标签。