列表中有大量字符串:列表内容的一个小示例是:
“机器学习”、“苹果”、“金融”、“人工智能”、“资金”
我希望将它们转换为向量,并将它们用于聚类目的。在找出这些字符串各自的向量时,是否考虑到了这些字符串的上下文?
如果我只有这个包含字符串的列表,我应该如何获得这些字符串的向量?
到目前为止我已经完成了这个代码..。
from gensim.models import Word2Vec
vec = Word2Vec(mylist)另外,我能得到一个关于Word2Vec的好的参考/教程吗?
发布于 2017-09-16 09:10:09
要使用word2vec查找单词向量,您需要一个句子列表,而不是字符串列表。
word2vec所做的是,它尝试遍历一个句子中的每个单词,对于每个单词,它试图在一个指定的窗口中预测它周围的单词(大部分在5左右),并调整与该单词相关联的向量,以使错误最小化。
显然,这意味着在寻找单词向量时,单词的顺序很重要。如果您只是提供一个字符串列表,没有有意义的顺序,您将不会得到一个很好的嵌入。
我不确定,但我认为在这种情况下,您会发现LDA更适合,因为您的字符串列表中没有固有的顺序。
发布于 2017-09-16 10:27:16
你的两个问题的答案:
@Beta提供的链接是一个很好的介绍/解释。
发布于 2017-09-16 07:39:53
Word2Vec是一种人工神经网络方法。Word2Vec实际上创建了嵌入,这反映了单词之间的关系。下面的链接将帮助您获得实现Word2Vec的完整代码。
一些好的链接是这和这。对于第二个链接,试试他的github回购的细节代码。他只是在解释博客中的主要部分。主要文章是这。
您可以使用以下代码将单词转换为相应的数字值。
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()}https://stackoverflow.com/questions/46250396
复制相似问题