從文字擷取 N-Gram 特徵
重要
Machine Learning 工作室 (傳統) 的支援將於 2024 年 8 月 31 日結束。 建議您在該日期之前轉換成 Azure Machine Learning。
自 2021 年 12 月 1 日起,您將無法建立新的 Machine Learning 工作室 (傳統) 資源。 在 2024 年 8 月 31 日之前,您可以繼續使用現有的 Machine Learning 工作室 (傳統) 資源。
ML 工作室 (傳統) 文件即將淘汰,未來將不再更新。
建立 N 語法的字典功能,並對其進行特徵選取
Category:文字分析
模組概觀
本文說明如何使用機器學習 Studio (傳統) 的文字模塊中的 [解壓縮 N-語法] 功能、將文字的特徵化,並只從長文字字串中解壓縮最重要的資訊片段。
此模組的運作方式是從您指定為輸入的任意文字資料行建立 n 字母的字典。 此模組會將各種資訊度量套用至 n 個元組,以減少資料維度,並識別具有最多資訊值的 n 字母。
如果您已經建立了 n 字母字母的詞彙,則可以使用您選擇的加權演算法來更新其統計資料,或合併新的詞彙。
因為此模組支援 n 字母的特徵化,所以它也可以在評分時使用。
如何設定從文字解壓縮 N 語法功能
這些模組支援下列建立、更新或套用 n 語法字典的案例:
您正在使用免費文字資料行的資料行來開發新的模型,而且只想要根據輸入資料來解壓縮文字功能。 請參閱指示。
您有一組現有的文字功能,並且想要藉由處理新的文字輸入來更新權數。 請參閱指示。
您會從預測性模型產生分數,而且需要在評分程式中產生並使用包含 n 個語法之字典的文字輸入。 請參閱指示。
您可以使用 範例實驗 進行參考。
從文字資料行建立新的 n 語法字典
將 [從文字] 模組中的 [ 解壓縮 N-語法] 功能 新增至您的實驗,並連接具有您想要處理之文字的資料集。
針對 [ 文字資料行],選擇包含您想要解壓縮之文字的 字串 類型資料行。
依預設,此模組會選取所有字串資料行。 不過,由於結果較詳細,因此您可能需要一次處理一個資料行。
若為 詞彙模式,請選取 [ 建立 ] 以表示您正在建立一個新的 n 語法功能清單。
如需有關如何更新一組現有的 n 語法功能的詳細資訊,請參閱 這一節。
針對 [n 字母元 大小],輸入一個數位來指出要解壓縮和儲存的 n 字母大小 上限 。
例如,如果您輸入
3
,則會建立 unigrams、雙字母組和 trigrams。在 [ K-跳過大小] 中,輸入在識別 n 字母的變體時,可以不同的最大字元數。 如果 k 的值設定為0,則只能從唯一、連續的字元序列建立 n 字母字元。
例如,假設您的字典包含一元語法「電腦」。 K值為0表示「電腦」是唯一有效的一元語法。 如果您將 k 的值增加到1,可以略過一個中間字元,讓您找出更相似的序列。 K值為1的略過元,會因為 0-k一元語法中的一個字元而不同。 因此,略過的 "conputer" 和 "compuuter" 將會被視為與「電腦」相同字典專案的一部分。 將 k 值設定為2會比對更多不同的字組。
如需有關如何在文字分析中使用略過規範的詳細資訊,請參閱這份檔:受 監督之詞彙正規化的候選世代和功能工程
只有當您合併或更新詞彙時,才需要選項 [ 加權函數]。 它會指定兩個詞彙中的詞彙及其分數應該如何針對彼此加權。
在 [ 最小文字長度] 中,輸入可分析之字串的最小文字長度。
例如,假設最小文字長度設為 3 (預設值) ,而且您有一個具有單一單字的輸入,另一個則包含一些簡短的文字,例如「美觀的地方」。 這兩個數據列都會被忽略。
在 [ 最大文字長度] 中,輸入可在 n 字元中的任何 單一單字 中使用的最大字元數。
根據預設,每個單字或標記最多可有25個字元。 超過此字的字元會被移除,假設它們可能是任一字元的順序,而不是實際的詞法專案。
針對 [ 最小的 n-------------------克檔的絕對頻率],輸入一個數位,指出要將任何單一單字或標記包含在
例如,如果您使用預設值5,則在主體中必須至少出現五個語法或 skip 語法,才能包含在 n # 語法字典中。
針對 [ 最多 n--克檔比例],輸入代表此比率的數位:在整體主體中的資料列數目上,包含特定 n 語法的資料列數目。
例如,比率1會指出,即使每個資料列中都有特定的 n 元,也可以將 n 中繼資料加入至 n 語法字典。 一般來說,每個資料列中發生的單字都會被視為非搜尋字,而且會被移除。 若要篩選出網域相依的非搜尋字,請嘗試減少這項比例。
重要
特定單字的出現率不一致,但會因檔而異。 例如,如果您要分析有關特定產品的客戶意見,則產品名稱可能會非常高,且接近非搜尋字,但在其他內容中是很重要的詞彙。
如果您想要針對包含不在 n 語法詞彙中之單字的任何資料列(稱為「詞彙不足」 (OOV) 單字)產生指標,請選取 [偵測 詞彙以外的資料列] 選項。
所有的詞典都有限;因此,您的文字主體幾乎保證會包含不在詞典或 n 語法字典中的單字。 不過,這類單字在語言模型上可能會有不同的影響,包括相較于詞彙內 (IV) 單字的錯誤率較高。 根據您的網域而定,這些 OOV 單字可能代表重要的內容字組。
藉由識別包含這些字的資料列,您可以彌補這些詞彙的效果,或個別處理詞彙和相關資料列。
選取 [ 標記開頭的選項] 選項,以加入特殊字元序列,指出 n 語法字典中的句子開頭。 以特殊字元開頭的 n 字母開頭,在文字分析中很常見,而且在分析語篇的界限時很有用。
Azure ML Studio (傳統) 插入符號
|||
。 您無法指定自訂字元。如果您想要將特徵向量正規化,請選取 [正規化 n-語法] 功能向量 的選項。 當您這樣做時,每個 n 個元的特徵向量都會除以其 L2 的標準。
預設會使用正規化。
如果您想要啟用其他選項來管理文字功能向量的大小,請將 [以 篩選器為基礎的特徵選取 ] 設定為 [ True ]。
- 特徵選取有助於減少 n 字母的維度。
- 當您未套用篩選選取專案時,會建立所有可能的 n 元,並增加涵蓋範圍,以使字典較長且可能包含許多不常使用的詞彙。
- 在較小的主體中,使用特徵選取可以大幅減少所建立的詞彙數目。
- 如需詳細資訊,請參閱以 篩選器為基礎的特徵選取。
如果您要使用特徵選取,則必須從 [ 功能評分方法 ] 下拉式清單中選取方法:
- PearsonCorrelation:根據標籤資料行值和文字向量來計算皮耳森的相互關聯。
- MutualInformation:根據標籤資料行值和文字向量來計算相互資訊分數。
- KendallCorrelation:根據標籤資料行值和文字向量來計算肯德爾的相互關聯。
- SpearmanCorrelation:根據標籤資料行值和文字向量來計算史皮爾曼關聯性。
- ChiSquared:使用卡方方法來計算標籤資料行值與文字向量之間的相互關聯。
- FisherScore:計算標籤資料行值和文字向量的費雪分數。
- 以計數為基礎的特徵選取:根據值的計數建立新功能。 此方法不需要標籤資料行。
根據您選擇的方法,設定下列其中一個選項:
所需的功能數目:如果您使用以計數為基礎的特徵選取以外的任何特徵選取方法,則為必要項。
在特徵選取的過程中,所有 n 元都會得到一個特徵分數,而 n 字母會依分數排序。 您在這裡設定的值會決定要輸出的最高排名功能數目。 具有較低特徵分數的 N 字母會捨棄。
非零的元素數目下限:如果您使用以計數為基礎的特徵選取,則為必要專案。
輸入整數,代表可能功能表格計數所需的總實例數下限。
執行實驗。
如需結果及其格式的說明,請參閱 這一節 。
更新現有的 n 語法字典或合併字典
從 Text 模組將「 解壓縮 N-語法」功能 新增至您的實驗,並將具有您想要處理之文字的資料集連接到 資料集 埠。
針對 [ 文字資料行],選擇包含您想要特徵化之文字的文字資料行。 依預設,此模組會選取字串類型的所有資料行。 為了獲得最佳結果,請一次處理一個資料行。
新增已儲存的資料集,其中包含先前產生的 n 語法字典,並將其連接至 輸入詞彙 埠。 您也可以從文字模塊連接「解壓縮 N-語法」功能之上游實例的結果詞彙輸出。
若要合併或更新詞彙,輸入詞彙的架構必須完全符合預期的格式。 請勿移除中的任何資料行,或將任何資料行新增至輸入詞彙。
若為 詞彙模式,請從下拉式清單中選取下列其中一個更新選項:
ReadOnly:根據輸入詞彙表示輸入主體。 也就是說,您不需要從新的文字資料集計算詞彙頻率 (在左側輸入) 上,輸入詞彙中的 n 個中繼資料粗細會依原樣套用。
提示
評分文字分類器時,請使用此選項。
Update:從輸入主體建立新的 n 語法詞彙,然後將它與輸入詞彙合併。 換句話說,您可以從輸入詞彙將新專案新增至所建立的詞彙,也可以更新現有的專案。
提示
此選項適用于使用內送資料批次進行詞彙的累加式更新。
Merge:從輸入主體產生新的 n 語法詞彙。
如果您要傳遞背景詞彙做為模組的輸入,而且想要減少停用字詞的權數,此選項會很有用。 換句話說,在背景詞彙中具有高檔頻率分數的每個專案,都會在建立的詞彙中指派較低的反向檔頻率分數。
提示
如果您不想要從輸入將新專案新增至所建立的詞彙,而且只想要調整現有專案的分數,請使用此選項。
如果您合併或更新詞彙,則需要 選擇加權函數的選項。 加權函數會指定兩個詞彙中的 DF 和 IDF 分數應如何針對彼此加權:
- 二元權數:將二進位存在值指派給已解壓縮的 n 字母。 換句話說,每個 n 元的值在指定的檔中存在時為1,否則為0。
- TF 權數:將詞彙頻率分數 (TF) 指派給已解壓縮的 n 字母。 每個 n 語法的值都是在給定檔中出現的頻率。
- IDF 權數:將反向檔頻率分數指派給已解壓縮的 n 字母 (IDF) 。 每個 n 語法的值是主體大小的記錄,並在整個主體中除以出現的頻率。 那是:
IDF = log of corpus_size / document_frequency
- TF-IDF 權數:指派「詞彙頻率/反向檔頻率分數」 (TF/IDF) 至已解壓縮的 n 字母。 每個 n 語法的值是其 TF 分數乘以其 IDF 分數。
- Graph 權數:根據 TextRank 圖排名,指派分數給已解壓縮的 n 字母。 TextRank 是以圖形為基礎的排名模型,用來處理文字。 以 Graph 為基礎的排名演算法,基本上是根據全域資訊來決定重要性的一種方式。 如需詳細資訊,請參閱 TextRank: Rada Mihalcea 和 Paul Tarau 將 訂單帶入文字中 。
如需其他選項,請參閱 上一節中的屬性描述。
執行實驗。
如需結果及其格式的說明,請參閱 這一節 。
評分或發佈使用 n 字母的模型
從定型資料流程將「文字」模組中的「 解壓縮 N-語法」功能 複製到評分資料流程。
連線從定型資料流程到評分資料流程上輸入詞彙的結果詞彙輸出。
在評分工作流程中,修改 從文字模塊中解壓縮 N 語法的功能 ,並進行這些變更,讓所有其他變更保持相同:
將 詞彙模式 參數設定為 ReadOnly。
將 [ 使用以篩選器為基礎的特徵選取 ] 選項變更為
False
。
若要發佈實驗,請將 結果詞彙 儲存為資料集。
然後,將已儲存的資料集連接到評分圖形中的文字模塊的 [ 解壓縮 N 語法] 功能 。
結果
[ 從文字中解壓縮 N 語法的功能 ] 模組會建立兩種類型的輸出:
結果資料集:已分析文字的摘要,以及已解壓縮的 n 字母。 您未在 [文字資料行] 選項中選取的資料行會傳遞至輸出。 針對您分析的每個文字資料行,此模組會產生這些資料行:
- NgramsString:包含所有唯一 n 字母字元的字串。
- NumUniqueNgrams:使用指定的屬性解壓縮之 n 字母的計數。
- N 語法出現次數的疏鬆陣列:此模組會針對在 total 主體中找到的每個 n 字型產生一個資料行,並在每個資料行中加入分數,以指出該資料列之 n 字型的加權。
結果詞彙:詞彙包含實際的 n 語法字典,以及在分析過程中產生的「頻率分數」。 您可以儲存資料集,以重複使用一組不同的輸入,或用於稍後的更新。 您也可以更新分數,或重複使用詞彙進行模型化和評分。
範例結果
為了說明您可以如何使用結果,下列簡短範例會使用 Studio 中可用的 Amazon Book 評論資料集 (傳統) 。 Dataaset 已篩選成隻顯示分數為4或5的評論,以及字串長度為300個字元的評論。
從這個資料集,選取了簡短的評論,只包含92個字。 這裡的作者名稱已被取代 Xxx
,而且書籍標題取代 Yyy
為:
"Xxx at his best ! Yyy is one of Xxx's best yet! I highly recommend this novel."
範例審核文字的結果資料集
在此範例中,模組會產生下列資料行:
NumUniqueNgrams:在此92字組中,使用預設設定,11 n 字母表示已從範例評論中解壓縮。
當 n 語法長度增加至3,且略過語法值設定為1時,就會找到15個 n 字母。
將特徵選取套用至預設值時,不會解壓縮 n 字母。
NgramsString:使用預設設定時,會傳回下列 n 字母: ["" "" "" "" "" "," 最佳 "、" one "、" 強烈 "、" 建議 "、" this "、" 新穎 "、" his_best "、" highly_recommend "、" recommend_this "、" this_novel "]
使用 n-將長度為3且略過語法值為1時,傳回的 n 字母是: ["他的"、"最佳"、"one"、"強烈"、"建議"、"this"、"新穎"、"his_best"、"highly_recommend"、"recommend_this"、"this_novel"、"best_one"、"one_best"、"highly_this"、"highly_recommend_this"]
N 語法出現次數的疏鬆陣列
針對這項特殊評論,結果包含下列資料行:
ReviewText.企圖 ReviewText.[and_highly] ReviewText.專門 ReviewText.[highly_recommend] 0 0 0.301511 0.301511 提示
如果您在查看特定資料行時遇到問題,請將 資料集模組中的選取資料行 附加至輸出,然後使用搜尋函數依名稱篩選資料行。
範例評論文字的結果詞彙
詞彙包含實際的 n 語法字典,以及在分析過程中產生的「頻率分數」。 您可以儲存資料集,以重複使用一組不同的輸入,或用於稍後的更新。 無論其他選項為何,都會產生 DF 和 IDF 分數。 當您合併詞彙時,這些儲存的值會當做您所選加權函數的輸入使用。
- 識別碼:為每個唯一的 n 元所產生的識別碼。
- Ngram: n 語法。 空格或其他文字分隔符號會由底線字元所取代。
- DF:原始主體中 n 元的詞彙頻率分數。
- IDF:原始主體中 n 元的反向檔頻率分數。
您可以手動更新此資料集;不過,請務必小心,因為您可能會引入錯誤。 例如:
- 如果模組在輸入詞彙中找到具有相同索引鍵的重復資料列,則會引發錯誤。 請確定詞彙中沒有兩個數據列有相同的字組。
- 詞彙資料集的輸入架構必須完全相符,包括資料行名稱和資料行類型。
- 識別碼資料行和DF分數資料行必須是整數類型。
- IDF資料行的類型必須是 FLOAT (浮點數) 。
技術說明
建議您嘗試使用不同範圍的值,以表示文字主體的維度,以及最佳的功能比,並使用特徵選取來判斷文字的維度。
如需 n 字母和 skip 字母的詳細資訊,請參閱下列資源:
預期的輸入
名稱 | 類型 | 說明 |
---|---|---|
資料集 | 資料表 | 輸入資料 |
輸入詞彙 | 資料表 | 輸入詞彙 |
模組參數
名稱 | 類型 | 範圍 | 選擇性 | 預設 | 描述 |
---|---|---|---|---|---|
非零元素的最少數目 | 整數 | >=1 | 只有在使用下列方法時才適用: 以計數為基礎 |
1 | 指定輸出的特徵數目 (適用於 CountBased 方法) |
文字資料行 | 資料行選取 | 必要 | StringFeature | 文字資料行的名稱或以一為基礎的索引 | |
詞彙模式 | 詞彙模式 | 建立 ReadOnly 更新 合併 |
必要 | 建立 | 指定如何從主體建立 n 語法詞彙 |
N 字母大小 | 整數 | >=1 | 必要 | 1 | 指出要建立的 n 字母大小上限 |
K-略過大小 | 整數 | >=0 | 必要 | 0 | 指出 k-跳過的大小 |
加權函數 | 加權函數 | 二進位權數 TF 權數 IDF 權數 TF-IDF 權數 Graph 權數 |
必要 | 二進位權數 | 選擇要套用至每個 n 元值的加權函數 |
最小文字長度 | 整數 | >=1 | 必要 | 3 | 指定要包含在 n 字母中的文字長度下限 |
最大文字長度 | 整數 | >= 2 | 必要 | 25 | 指定要包含在 n 字母中的文字長度上限 |
最少 n 中繼檔絕對頻率 | Float | >= 1。0 | 必要 | 5.0 | 最少 n 中繼檔絕對頻率 |
最多 n 個檔比例 | Float | >= 0.0001 | 必要 | 1.0 | 最多 n 個檔比例 |
偵測詞彙中的資料列 | Boolean | 必要 | true | 偵測有不在 n # 語法詞彙中之單字的資料列 (OOV) | |
標記開始句子 | Boolean | 必要 | false | 指出是否應將開始句子標記新增至 n 字母 | |
標準化 n 語法的特徵向量 | Boolean | 必要 | 標準化 n 語法的特徵向量。 若為 true,則會以其 L2 標準來分割 n 語法特徵向量。 | ||
使用以篩選器為基礎的特徵選取 | True False 類型 | True False |
必要 | True | 使用以篩選器為基礎的特徵選取來減少維度 |
特徵計分法 | 計分方法 | 皮耳森相關 相互資訊 肯德爾相關 史皮爾曼相關 卡方 費雪計分 以計數為基礎 |
僅適用于選項 [ 使用以篩選為基礎的特徵選取 ] 為 True 時 | 費雪計分 | 選擇計分方法 |
目標資料行 | 資料行選取 | 適用于使用下列其中一種方法: 皮耳森相關 相互資訊 肯德爾相關 史皮爾曼相關 卡方 費雪計分 |
指定目標資料行 | ||
所需的特徵數目 | 整數 | >=1 | 適用于使用下列其中一種方法: 皮耳森相關 相互資訊 肯德爾相關 史皮爾曼相關 卡方 費雪計分 |
1 | 指定結果中輸出的特徵數目 |
輸出
名稱 | 類型 | 說明 |
---|---|---|
結果資料集 | 資料表 | 解壓縮的功能 |
結果詞彙 | 資料表 | 結果詞彙 |