分享方式:


功能哈希元件參考

本文說明 Azure 機器學習 設計工具中包含的元件。

使用功能哈希元件,將英文文字串流轉換成一組整數特徵。 然後,您可以將此哈希功能集傳遞至機器學習演算法,以定型文字分析模型。

此元件中提供的功能哈希功能是以 nimbusml 架構為基礎。 如需詳細資訊,請參閱 NgramHash 類別

什麼是功能哈希?

功能哈希的運作方式是將唯一標記轉換成整數。 它會在您提供做為輸入的確切字串上運作,而且不會執行任何語言分析或前置處理。

例如,採用一組類似上述的簡單句子,後面接著情感分數。 假設您想要使用此文字來建置模型。

用戶文字 情緒
我喜歡這本書 3
我討厭這本書 1
這本書很棒 3
我喜歡書籍 2

在內部,特徵哈希元件會建立 n-gram 的字典。 例如,此數據集的 bigrams 清單會像這樣:

詞彙(bigrams) 頻率
這本書 3
我喜歡 1
我討厭 1
我喜歡 1

您可以使用 N-gram 屬性來控制 n-gram 的大小。 如果您選擇 bigrams,也會計算 unigram。 字典也會包含單一字詞,如下所示:

字詞 (unigrams) 頻率
book 3
I 3
1
1

建置字典之後,功能哈希元件會將字典詞彙轉換成哈希值。 然後,它會計算是否在每個案例中使用功能。 針對每個文字數據列,元件會輸出一組數據行,每個哈希功能各一個數據行。

例如,哈希之後,功能數據行看起來可能會像這樣:

Rating 哈希功能 1 哈希功能 2 哈希功能 3
4 1 1 0
5 0 0 0
  • 如果數據行中的值為 0,則數據列未包含哈希功能。
  • 如果值為 1,則數據列確實包含功能。

特徵哈希可讓您將可變長度的文字檔表示為相等長度的數值特徵向量,以減少維度。 如果您嘗試依目前方式使用文字數據行進行定型,則會將其視為具有許多不同值的類別特徵數據行。

數值輸出也可讓您使用常見的機器學習方法,包括分類、叢集和資訊擷取。 因為查閱作業可以使用整數哈希,而不是字串比較,因此取得特徵權數也更快。

設定功能哈希元件

  1. 將功能哈希元件新增至設計工具中的管線。

  2. 連接包含您想要分析之文字的數據集。

    提示

    因為特徵哈希不會執行詞彙運算,例如詞幹分析或截斷,所以在套用特徵哈希之前,您有時可以先處理文字來取得更好的結果。

  3. 將 [目標數據行] 設定為您想要轉換成哈希功能的文字數據行。 請注意下列事項:

    • 數據行必須是字串數據類型。

    • 選擇多個文字數據行可能會對特徵維度產生重大影響。 例如,10 位哈希的數據行數目從單一數據行的 1,024 到兩個數據行的 2,048。

  4. 使用 哈希位大小 來指定要在建立哈希表時使用的位數。

    預設位大小為10。 對於許多問題,此值已足夠。 您可能需要更多空間來避免衝突,視訓練文字中的 n-gram 詞彙大小而定。

  5. 針對 N-gram,輸入一個數位,定義要新增至定型字典之 n-gram 的最大長度。 n-gram 是 n 個單字序列,視為唯一單位。

    例如,如果您輸入 3,則會建立 unigram、bigrams 和 trigram。

  6. 提交管線。

結果

處理完成之後,元件會輸出轉換的數據集,其中原始文字數據行已轉換成多個數據行。 每個數據行都代表文字中的功能。 根據字典有多重要,產生的數據集可能會很大:

數據行名稱 1 欄類型 2
USERTEXT 原始數據行
情緒 原始數據行
USERTEXT - 哈希功能 1 哈希功能數據行
USERTEXT - 哈希功能 2 哈希功能數據行
USERTEXT - 哈希功能 n 哈希功能數據行
USERTEXT - 哈希功能 1024 哈希功能數據行

建立轉換的數據集之後,您可以使用它作為定型模型元件的輸入。

最佳作法

下列最佳做法可協助您充分利用功能哈希元件:

  • 使用功能哈希來預先處理輸入文字之前,新增前置處理文字元件。

  • 在功能哈希元件之後新增選取數據行元件,以從輸出數據集移除文字數據行。 在產生哈希功能之後,您不需要文字數據行。

  • 請考慮使用這些文字前置處理選項,以簡化結果並改善精確度:

    • 斷字
    • 停止移除字組
    • 案例正規化
    • 拿掉標點符號和特殊字元
    • 詞幹分析

任何解決方案中要套用的最佳前置處理方法集取決於領域、詞彙和商務需求。 管線與您的數據,以查看哪些文字處理方法最有效。

下一步

請參閱 Azure 機器學習 可用的元件集