我想用Gensim的實施Word2Vec與作爲輸入,而不是句子上下文的單詞對的列表。我本來以爲進入手動創建上下文的單詞對作爲句子就相當於進入原句和窗口參數設置爲1,但是這兩種方法產生不同的結果。如何Gensim的Word2Vec計算句子的上下文的單詞對,我應該怎麼進入我的手動創建對作爲輸入的功能?使用gensim的Word2Vec自定義字上下文對
回答
您的意思是說,在提供原始句子與長window
與配對window=1
之間發生「不同的結果」?
假設您使用skip-gram和window=1
,您可以可以將較長句子中的對模擬爲您自己的雙令牌文本。那就是:
這句話...
['A', 'B', 'C', 'D']
...會產生window=1
訓練對...
[('B', 'A'),
('A', 'B'), ('C', 'B'),
('B', 'C'), ('D', 'C'),
('C', 'D')]
而且,你會得到同樣的訓練,對你反而餵了Word2Vec window=1
句子:
['A', 'B']
['B', 'C']
['C', 'D']
但是,現在要注意r elative字頻率已經改變 - 和詞頻率可以影響頻繁字降頻採樣(用sample
參數作爲控制)和負示例性選擇(在缺省負採樣模式)。僅此一項就意味着方法之間的結果將不盡相同。如果使用多個worker,即使您試圖確定性地種植隨機數生成器,操作系統線程調度(下面採樣& negative-sampling)也涉及有意的隨機性可能意味着不同運營商之間的工作進程不同,因此也有不同的配對順序 - 考慮和隨機使用。因此,每次運行(即使使用完全相同的參數,但使用多個工作線程),通過設計可以給出略微不同的結果。
最後,如果使用大於1的window
值,則算法會爲每個目標詞實際選擇使用從1到您的值中隨機選擇的其他窗口大小。 (這樣做的目的是爲了更有效地提供更接近單詞的重量,這種方法的效果與將某些縮放因子應用於更遙遠的單詞相同,但整體工作量較少,從而加快訓練速度。)
因此,如果您試圖模擬字對大於-1 window
值的,你不能創建的所有內窗詞的幼稚的配對爲您的新句子近似長句行爲。你必須執行一個類似的隨機窗口縮小。 (而且,你還是對整個字的頻率的波動影響。)
不過,假設你有興趣在這條道路,因爲你真正的數據可能不是真實的,字排序自然語言中的句子,沒有可能很重要。你可以嘗試提供自己的合成對作爲句子,無論你的最終目標是什麼,仍然可以得到可接受的結果 - 你應該嘗試一下,看看。對於原始的word2vec算法的窗口化或加權過程,沒有什麼神奇的證明 - 它只是做了一些有趣的事情。其他選擇可能對其他類型的語料庫同樣好或更好。
- 1. 使用Gensim減少Google的Word2Vec模型
- 2. gensim word2vec - 用在線文字嵌入更新數組的尺寸
- 3. GenSim Word2Vec意外修剪
- 4. Gensim word2vec在python3失蹤vocab
- 5. 什麼是Gensim word2vec輸出
- 6. Gensim word2vec在線培訓
- 7. Gensim word2vec在預定義詞典和詞索引數據
- 8. 什麼是gensim Word2Vec中的`null_word`參數?
- 9. gensim word2vec給出不一致的結果
- 10. 可視化gensim生成的word2vec
- 11. 使用a.all()或a.any()錯誤,而試圖使用gensim word2vec
- 12. 從gensim獲取重量矩陣word2Vec
- 13. Gensim Word2Vec模型:切割尺寸
- 14. gensim word2vec存取/導出向量
- 15. 如何在由gensim創建的word2vec上運行tsne?
- 16. 從gensim解釋否定的Word2Vec相似度
- 17. 如何判斷Gensim Word2Vec是否使用C編譯器?
- 18. 使用映射重命名gensim Word2Vec單詞
- 19. 在gensim word2vec模型中給出文字給定文字嵌入模型的概率
- 20. getsharedpreferences從自定義的edittext上下文
- 21. python word2vec使用環繞詞的上下文相似性
- 22. WPF數字上下自定義控件
- 23. JSON-LD自定義上下文
- 24. 創建自定義上下文菜單
- 25. 自定義Mylyn上下文UI?
- 26. 自定義上下文菜單
- 27. Android上下文菜單自定義?
- 28. Android自定義上下文菜單
- 29. 創建自定義上下文菜單
- 30. Django與Jinja2 - 使用自定義上下文處理器