將文字轉換為向量元件
本文會說明如何使用 Azure Machine Learning 設計工具中的「將文字轉換為向量」元件,來執行下列工作:
- 將各種 Word2Vec 模型 (Word2Vec、FastText、GloVe 預先定型模型) 套用在指定為輸入的文字主體上。
- 使用文字內嵌產生詞彙。
此元件使用 Gensim 程式庫。 如需 Gensim 的詳細資訊,請參閱其官方網站,其中包含演算法的教學課程和說明。
深入了解如何將文字轉換為向量
將文字轉換為向量 (文字向量化) 是一種自然語言處理 (NLP) 程序。 此程序會使用語言模型將文字對應至向量空間。 向量空間會以實數向量表示每個文字。 其也可讓具有類似意義的文字具有類似的表示法。
請將文字內嵌作為 NLP 下游工作 (例如文字分類、情感分析等) 的初始輸入。
在這個元件中,我們會從各種文字內嵌技術中,選出三種廣泛使用的方法進行實作。 Word2Vec 和 FastText 這兩種方法是線上定型模型。 剩下的一種方法 glove-wiki-gigaword-100 則是預先定型的模型。
線上定型模型會根據您的輸入資料進行定型。 預先定型模型則會在較大的文字主體 (例如,維基百科、Google 新聞) 上以離線方式進行定型,這些文字主體通常會包含大約 1000 億個文字。 然後,文字內嵌便會在文字向量化期間保持不變。 預先定型的文字模型具有某些優點,例如可縮短定型時間、文字向量的編碼效果較佳,以及可改善整體效能。
以下是有關這些方法的一些資訊:
Word2Vec 是使用淺層神經網路來學習文字內嵌的最熱門技術之一。 下面這份文件有關於此理論的討論,並且會以 PDF 形式供您下載:有效率地估計向量空間中的文字表示。 此元件中的實作會根據 Word2Vec 的 Gensim 程式庫。
下面這份文件有關於 FastText 理論的解釋,並且會以 PDF 形式供您下載:使用部分文字資訊來充實文字向量。 此元件中的實作會根據 FastText 的 Gensim 程式庫。
GloVe 預先定型的模型是 glove-wiki-gigaword-100。 其集和了以維基百科文字主體 (含有 56 億個語彙基元和 40 萬個不區分大小寫的詞彙文字) 為基礎的預先定型向量。 有 PDF 可供下載:GloVe:用來表示文字的全域向量。
如何設定「將文字轉換為向量」
此元件需要包含文字資料行的資料集。 預先處理過的文字會更好。
在您的管線中新增將文字轉換為向量元件。
提供包含一或多個文字資料行的資料集,作為元件的輸入。
針對目標資料行,只選擇一個包含要處理文字的資料行。
因為此元件會從文字建立詞彙,所以資料行的內容會不同,這會導致詞彙內容有所不同。 這就是為什麼元件只接受一個目標資料行。
針對 [Word2Vec 策略],選擇 [GloVe 預先定型的英文模型]、[Gensim Word2Vec] 和 [Gensim FastText]。
如果 [Word2Vec 策略] 是 [Gensim Word2Vec] 或 [Gensim FastText]:
針對 [Word2Vec 定型演算法],選擇 [Skip_gram] 和 [CBOW]。 原始文件 (PDF) 中說明了兩者的差異。
預設方法是 [Skip_gram]。
針對 [文字內嵌長度],指定文字向量的維度性。 此設定對應於 Gensim 中的
size
參數。預設的嵌入大小為 100。
針對 [內容視窗大小],指定要預測的文字與目前文字之間的最大距離。 此設定對應於 Gensim 中的
window
參數。預設的視窗大小為 5。
針對 [Epoch 數目],指定主體的 Epoch (反覆運算) 數目。 對應於 Gensim 中的
iter
參數。預設的 Epoch 數目為 5。
針對 [詞彙大小上限],指定產生的詞彙可包含的最大字數。
如果不重複的文字超出最大值,則會剪除較少出現的文字。
預設的詞彙大小為 10,000。
針對 [最小文字計數],提供最小文字計數值。 元件會忽略頻率低於此值的所有文字。
預設值為 5。
提交管線。
範例
元件有一個輸出:
- 具有內嵌的詞彙:包含產生的詞彙,以及每個文字的內嵌。 一個維度會佔用一個資料行。
下列範例會說明將文字轉換為向量元件的運作方式。 其會搭配使用將文字轉換為向量以及已預先處理的維基百科 SP 500 資料集的預設設定。
來源資料集
此資料集包含類別資料行,以及從維基百科取得的完整文字。 下表顯示一些代表性範例。
Text |
---|
nasdaq 100 component s p 500 component foundation founder location city apple campus 1 infinite loop street infinite loop cupertino california cupertino california location country united states... |
br nasdaq 100 nasdaq 100 component br s p 500 s p 500 component industry computer software foundation br founder charles geschke br john warnock location adobe systems... |
s p 500 s p 500 component industry automotive industry automotive predecessor general motors corporation 1908 2009 successor... |
s p 500 s p 500 component industry conglomerate company conglomerate foundation founder location city fairfield connecticut fairfield connecticut location country usa area... |
br s p 500 s p 500 component foundation 1903 founder william s harley br arthur davidson harley davidson founder arthur davidson br walter davidson br william a davidson location... |
具有內嵌的輸出詞彙
下表包含此元件以維基百科 SP 500 資料集作為輸入時的輸出。 最左邊的資料行會指出詞彙。 其內嵌向量會以相同資料列中其餘資料行的值來表示。
詞彙 | 內嵌維度 0 | 內嵌維度 1 | 內嵌維度 2 | 內嵌維度 3 | 內嵌維度 4 | 內嵌維度 5 | ... | 內嵌維度 99 |
---|---|---|---|---|---|---|---|---|
nasdaq | -0.375865 | 0.609234 | 0.812797 | -0.002236 | 0.319071 | -0.591986 | ... | 0.364276 |
component | 0.081302 | 0.40001 | 0.121803 | 0.108181 | 0.043651 | -0.091452 | ... | 0.636587 |
s | -0.34355 | -0.037092 | -0.012167 | 0.151542 | 0.601019 | 0.084501 | ... | 0.149419 |
p | -0.133407 | 0.073244 | 0.170396 | 0.326706 | 0.213463 | -0.700355 | ... | 0.530901 |
foundation | -0.166819 | 0.10883 | -0.07933 | -0.073753 | 0.262137 | 0.045725 | ... | 0.27487 |
founder | -0.297408 | 0.493067 | 0.316709 | -0.031651 | 0.455416 | -0.284208 | ... | 0.22798 |
location | -0.375213 | 0.461229 | 0.310698 | 0.213465 | 0.200092 | 0.314288 | ... | 0.14228 |
city | -0.460828 | 0.505516 | -0.074294 | -0.00639 | 0.116545 | 0.494368 | ... | -0.2403 |
apple | 0.05779 | 0.672657 | 0.597267 | -0.898889 | 0.099901 | 0.11833 | ... | 0.4636 |
campus | -0.281835 | 0.29312 | 0.106966 | -0.031385 | 0.100777 | -0.061452 | ... | 0.05978 |
infinite | -0.263074 | 0.245753 | 0.07058 | -0.164666 | 0.162857 | -0.027345 | ... | -0.0525 |
loop | -0.391421 | 0.52366 | 0.141503 | -0.105423 | 0.084503 | -0.018424 | ... | -0.0521 |
在此範例中,我們使用了 Gensim Word2Vec 作為 Word2Vec 策略,而且 定型演算法是 Skip-gram。 文字內嵌的長度是 100,因此我們有 100 個內嵌資料行。
技術說明
本節包含使用提示和常見問題的解答。
線上定型模型與預先定型模型的差異:
在這個將文字轉換為向量元件中,我們提供了三種不同的策略:兩個線上定型模型和一個預先定型的模型。 線上定型模型會使用您的輸入資料集作為定型資料,並在定型期間產生詞彙和文字向量。 預先定型的模型已透過較大的文字主體 (例如維基百科或 Twitter 文字) 進行定型。 預先定型的模型實際上是文字/內嵌配對的集合。
GloVe 預先定型的模型會從輸入資料集彙總詞彙,並針對預先定型模型中的每個文字產生內嵌向量。 如果沒有線上定型,使用預先定型的模型可以節省定型時間。 其效能更好,特別是當輸入資料集的大小相對較小時。
內嵌大小:
一般情況下,文字內嵌的長度會設定為幾百。 例如,100、200、300。 小型的內嵌大小表示向量空間較小,這可能會造成文字內嵌衝突。
預先定型模型的文字內嵌長度是固定值。 在此範例中,glove-wiki-gigaword-100 的內嵌大小是 100。
後續步驟
請參閱 Azure Machine Learning 可用的元件集。
如需設計工具元件特有的錯誤清單,請參閱 Machine Learning 錯誤碼。