2017-09-16 125 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關於標記句子,以獲得嵌入與詞語相同空間的每個標籤的載體。

然後你可以做矢量推理並獲得任意一段文本的標籤。