將文字轉換為向量元件

本文會說明如何使用 Azure Machine Learning 設計工具中的「將文字轉換為向量」元件,來執行下列工作:

  • 將各種 Word2Vec 模型 (Word2Vec、FastText、GloVe 預先定型模型) 套用在指定為輸入的文字主體上。
  • 使用文字內嵌產生詞彙。

此元件使用 Gensim 程式庫。 如需 Gensim 的詳細資訊,請參閱其官方網站,其中包含演算法的教學課程和說明。

深入了解如何將文字轉換為向量

將文字轉換為向量 (文字向量化) 是一種自然語言處理 (NLP) 程序。 此程序會使用語言模型將文字對應至向量空間。 向量空間會以實數向量表示每個文字。 其也可讓具有類似意義的文字具有類似的表示法。

請將文字內嵌作為 NLP 下游工作 (例如文字分類、情感分析等) 的初始輸入。

在這個元件中,我們會從各種文字內嵌技術中,選出三種廣泛使用的方法進行實作。 Word2Vec 和 FastText 這兩種方法是線上定型模型。 剩下的一種方法 glove-wiki-gigaword-100 則是預先定型的模型。

線上定型模型會根據您的輸入資料進行定型。 預先定型模型則會在較大的文字主體 (例如,維基百科、Google 新聞) 上以離線方式進行定型,這些文字主體通常會包含大約 1000 億個文字。 然後,文字內嵌便會在文字向量化期間保持不變。 預先定型的文字模型具有某些優點,例如可縮短定型時間、文字向量的編碼效果較佳,以及可改善整體效能。

以下是有關這些方法的一些資訊:

如何設定「將文字轉換為向量」

此元件需要包含文字資料行的資料集。 預先處理過的文字會更好。

  1. 在您的管線中新增將文字轉換為向量元件。

  2. 提供包含一或多個文字資料行的資料集,作為元件的輸入。

  3. 針對目標資料行,只選擇一個包含要處理文字的資料行。

    因為此元件會從文字建立詞彙,所以資料行的內容會不同,這會導致詞彙內容有所不同。 這就是為什麼元件只接受一個目標資料行。

  4. 針對 [Word2Vec 策略],選擇 [GloVe 預先定型的英文模型]、[Gensim Word2Vec] 和 [Gensim FastText]。

  5. 如果 [Word2Vec 策略] 是 [Gensim Word2Vec] 或 [Gensim FastText]:

    • 針對 [Word2Vec 定型演算法],選擇 [Skip_gram] 和 [CBOW]。 原始文件 (PDF) 中說明了兩者的差異。

      預設方法是 [Skip_gram]。

    • 針對 [文字內嵌長度],指定文字向量的維度性。 此設定對應於 Gensim 中的 size 參數。

      預設的嵌入大小為 100。

    • 針對 [內容視窗大小],指定要預測的文字與目前文字之間的最大距離。 此設定對應於 Gensim 中的 window 參數。

      預設的視窗大小為 5。

    • 針對 [Epoch 數目],指定主體的 Epoch (反覆運算) 數目。 對應於 Gensim 中的 iter 參數。

      預設的 Epoch 數目為 5。

  6. 針對 [詞彙大小上限],指定產生的詞彙可包含的最大字數。

    如果不重複的文字超出最大值,則會剪除較少出現的文字。

    預設的詞彙大小為 10,000。

  7. 針對 [最小文字計數],提供最小文字計數值。 元件會忽略頻率低於此值的所有文字。

    預設值為 5。

  8. 提交管線。

範例

元件有一個輸出:

  • 具有內嵌的詞彙:包含產生的詞彙,以及每個文字的內嵌。 一個維度會佔用一個資料行。

下列範例會說明將文字轉換為向量元件的運作方式。 其會搭配使用將文字轉換為向量以及已預先處理的維基百科 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 錯誤碼