前置處理文字
重要
Machine Learning 工作室 (傳統) 的支援將於 2024 年 8 月 31 日結束。 建議您在該日期之前轉換成 Azure Machine Learning。
自 2021 年 12 月 1 日起,您將無法建立新的 Machine Learning 工作室 (傳統) 資源。 在 2024 年 8 月 31 日之前,您可以繼續使用現有的 Machine Learning 工作室 (傳統) 資源。
ML 工作室 (傳統) 文件即將淘汰,未來將不再更新。
對文字執行清除作業
Category:文字分析
模組概觀
本文描述如何使用機器學習 Studio (傳統) 中的前置處理文字模組,來清除和簡化文字。 藉由前置處理文字,您就可以更輕鬆地從文字建立有意義的功能。
例如,前置處理 文字 模組支援下列文字的一般作業:
- 移除停用字詞
- 使用規則運算式來搜尋和取代特定目標字串
- 詞形歸併還原,將多個相關的字組轉換成單一標準格式
- 篩選特定的語音部分
- 大小寫正規化
- 移除某些類別的字元,例如數字、特殊字元和重複字元的序列,例如 "aaaa"
- 識別和移除電子郵件和 URL
您可以選擇要使用的清理選項,並選擇性地指定自訂的停用字組清單。
此課程模組目前支援六種語言:英文、西班牙文、法文、荷蘭文、德文和義大利文。
如何設定文字前置處理
在 Studio (傳統) 中,將前置處理 文字 模組新增至您的實驗。 您可以在文字分析下找到此模組。
連線至少有一個資料行包含文字的資料集。
如果您要前置處理的文字全都採用相同的語言,請從 [ 語言 ] 下拉式清單中選取語言。 使用這個選項時,會使用所選語言特有的語言規則來處理文字。
若要前置處理可能包含多種語言的文字,請選擇 [資料 行包含語言 ] 選項。
然後,使用 [ 文化特性語言資料行 ] 屬性來選擇資料集中的資料行,以指出每個資料列中使用的語言。 此資料行必須包含標準語言識別項,例如 "英文" 或
en
。根據此識別碼,模組會套用適當的語言資源來處理文字。
如果您的資料集不包含這類識別碼,請使用「偵測 語言 」模組來事先分析語言,並產生識別碼。
提示
如果包含不支援的語言,則會引發錯誤。 如需詳細資訊,請參閱 技術 提示一節。
依語音移除:如果您想要套用語音分析的部分,請選取此選項。 然後,您可以使用聲控標籤的部分來移除特定類別的字詞。
- 移除名詞:若要移除名詞,請選取此選項。
- 移除形容詞:選取此選項以移除形容詞。
- 移除動詞:選取此選項以移除動詞。
如需使用的語音辨識方法的詳細資訊,請參閱 技術 提示一節。
要清除的文字資料行:選取您想要前置處理的資料行。
移除停用字詞:如果您想要將預先定義的停用字詞清單套用至文字資料行,請選取此選項。 在任何其他處理常式之前,會先執行停用字組移除。
停用字詞清單具有語言相依性和可自訂;如需詳細資訊,請參閱 技術附注 一節。
詞形歸併還原:如果您想要以標準格式呈現單字,請選取此選項。 此選項有助於減少其他類似文字語彙基元的唯一出現次數。
詞形歸併還原程式與語言相依性很高,如需詳細資訊,請參閱 技術 提示一節。
偵測句子:如果您想要模組在執行分析時插入句子界限標記,請選取此選項。
此課程模組使用一連串三個管道字元
|||
來代表句子結束字元。(選擇性)您可以使用正則運算式來執行自訂的尋找和取代作業。
- 自訂正則運算式:定義您要搜尋的文字。
- 自訂取代字串:定義單一取代值。
將大小寫標準化為小寫:如果您想要將 ASCII 大寫字元轉換成小寫格式,請選取此選項。
如果字元未正規化,則大寫和小寫字母中的相同字組會被視為兩個不同的單字:例如,
AM
與相同am
。(選擇性)您可以從處理的輸出文字中移除下列類型的字元或字元序列:
- 移除數字:選取此選項可移除指定語言的所有數字字元。
識別碼組成的識別碼與網域相依和語言相依。 如果數字字元是已知字組不可或缺的部分,則可能不會移除該數字。
移除特殊字元:使用此選項可將任何非英數位元的特殊字元取代為管道
|
字元。如需特殊字元的詳細資訊,請參閱 技術附注 一節。
移除重複的字元:選取此選項以移除任何重複字元的序列。 例如,將會移除類似 "aaaaa" 的序列。
移除電子郵件地址:選取此選項,以移除格式為
<string>@<string>
的任何序列。移除 url:選取此選項以移除任何包含下列 URL 前置詞的序列:
http
,https
ftp
www
展開動詞縮寫:此選項只適用於使用動詞縮寫的語言;目前僅限英文。
例如,藉由選取此選項,您可以將片語 "wouldn't stay there" 取代為 "would not stay there"。
將反斜線標準化為斜線:選取此選項,可將
\\
的所有執行個體對應至/
。在特殊字元上分割語彙基元:如果您想要在
&
、-
等字元上中斷字組,請選取此選項。例如,此字串
MS-WORD
會分成兩個標記:MS
和WORD
。
範例
Azure AI 資源庫中的下列範例說明如何使用前置處理文字模組:
技術說明
本節提供有關基礎文字前置處理技術的詳細資訊,以及如何指定自訂文字資源。
支援的語言
目前機器學習支援這些語言的文字前置處理:
- 荷蘭文
- 英文
- 法文
- 德文
- 義大利文
- 西班牙文
已規劃其他語言。 如需公告,請參閱Microsoft 機器學習的 blog 。
詞形歸併還原
詞形歸併還原是識別單一標準格式以代表多個單字標記的程式。
機器學習 Studio 中包含的自然語言處理程式庫 (傳統) 結合下列多種語言作業來提供詞形歸併還原:
句子分隔:在情感分析和其他文字分析中使用的自由文字,可能會經常執行句子或遺漏標點符號。 輸入文字可能會構成任意長的文字區塊,範圍從推文或片段到完整段落,甚至是檔。
Studio 所使用的自然語言工具 (傳統) 在基礎詞法分析中執行句子分隔。 但是,不會在輸出中分隔句子。 您可以選擇性地指定要標示句子界限,以協助進行其他文字處理和分析。
Token化:判斷單字界限的規則與語言相依,而且即使是在文字之間使用空格的語言,也可能很複雜。
某些語言 (例如中文或日文) 不會使用單字之間的任何空白字元,而區分單字則需要形態分析。
因此,此課程模組中使用的 token 化方法和規則會提供不同于語言的不同結果。 這些 token 化規則取決於 Microsoft Research 針對每個支援的語言提供的文字分析程式庫,而且無法自訂。
語音辨識部分:在任何字組中,計算每個單字的語音的確切部分可能很困難。 即使是一種明顯簡單的句子,例如「像是箭號一樣的時間」,也可以有數十個剖析 (著名的範例) 。 根據不同語言的 morphology,語音的元件也會有很大的差異。
在機器學習中,會在指定目前的句子內容時,使用去除混淆模型來選擇最可能的語音部分。 語音部分資訊是用來協助篩選用來作為功能的文字,並協助您在主要片語的解壓縮中使用。 不過,此課程模組的輸出未明確包含 POS 標記,因此無法用來產生 POS 標記的文字。
產生字典表單:單字可能會有多個 lemmas(或字典表單),每個都來自不同的分析。 比方說,英文單字大樓有兩種可能的 lemmas:如果 單字是名詞 ( 「高度建築」 ) ,或 建立 單字是否為動詞 ( 「它們正在建立房子」 ) 。 在機器學習中,只會產生單一最可能的字典形式。
範例詞形歸併還原輸出
來源 | 具有案例轉換的名詞 |
---|---|
他是游泳 | 我的泳道 |
他即將進行一項泳道 | 我要做的是一下 |
游泳適合用來建立肌肉 | 針對組建肌肉的泳道 |
他正在建立大樓 | 我建立了一個組建 |
我們全都建築大樓 | 我們全部都是組建大樓 |
注意
用來產生字典表單的語言模型已針對各種一般用途和技術文字進行定型和測試,並可用於需要自然語言 Api 的許多其他 Microsoft 產品。 不過,自然語言本質上並不明確,而且所有詞彙的精確度100% 都是不可行的。 例如,詞形歸併還原可能會受到其他語音部分或剖析句子的方式所影響。
如果您需要執行額外的前置處理,或使用特定或網域相依詞彙來執行語言分析,建議您使用可自訂的 NLP 工具,例如 Python 和 R 中提供的工具。
特殊字元
特殊字元會定義為單一字元,而這些字元無法識別為語音的任何其他部分,而且可以包含標點符號:冒號、分號等等。
停用字詞
「 停用字詞 (或 停用字詞) 是一種文字,通常會從索引中移除,因為它是常見的,而且不會針對資訊抓取提供很小的價值,即使它可能有意義的語言也是一樣。
例如,許多語言在明確和無限制的發行項之間會有語義上的區別 ( 「大樓」與「大樓」 ) ,但是針對機器學習和資訊抓取,資訊有時並不相關。 因此,您可能會決定捨棄這些字組。
機器學習環境包含每個支援語言最常見的停用字詞清單。
語言 | 停用字詞數目 | 範例 |
---|---|---|
荷蘭文 | 49 | aan、af、al |
英文 | 312 | a、about、以上 |
法文 | 154 | de、des、d '、la |
德文 | 602 | a、ab、aber |
義大利文 | 135 | a、adesso、ai |
西班牙文 | 368 | ésa, ésta, éste |
為了方便起見,Azure 儲存體中已提供包含所有目前語言之預設停用字詞的 zip 壓縮檔: Stopwords.zip。
如何修改停用字詞清單
我們預期許多使用者都想要建立自己的停用字詞清單,或變更預設清單中包含的詞彙。 Cortana 智慧資源庫中的下列實驗會示範如何自訂停用字詞表清單。
如果您修改清單或建立自己的停用字組清單,請觀察下列需求:
檔案必須包含單一文字資料行。 如果有額外的資料行存在,您可能會收到下列錯誤:「前置處理文字錯誤資料行選取模式」文字資料行必須在輸入資料集中提供1個數據行 (s) ,但實際上會提供2個數據行 () 。 ( Error 0022 ) 」
如果發生這種情況,請在原始匯入停用字詞清單的檔案中尋找空間、索引標籤或隱藏的資料行。 根據檔案的準備方式,文字中包含的索引標籤或逗點也會造成建立多個資料行。
當您收到此錯誤時,請檢查來源檔案,或使用 資料集模組中的 [選取資料行 ],選擇要傳遞給前置處理 文字 模組的單一資料行。
每個資料列只能包含一個字。 為了剖析檔案,字組是由插入空格來決定。
停用字詞清單不可以是空的。
作業順序
在本課程模組中,您可以將多個作業套用至文字。 不過,這些作業的套用順序無法變更。 這可能會影響預期的結果。
例如,如果您將詞形歸併還原套用至文字,同時也使用停用字詞移除,則在套用停用字詞清單之前,所有的單字都會轉換成其 lemma 格式。 因此,如果您的文字包含不在停用字詞清單中的單字,但其 lemma 位於停用字詞清單中,則會移除該字。
務必事先測試目標詞彙,以保證正確的結果。
不支援的語言
如果您的文字資料行包含機器學習不支援的語言,我們建議您只使用不需要語言相依處理的選項。 這有助於避免奇怪的結果。
此外,如果您使用 [選項] 資料 行包含語言,您必須確定已處理的文字中不會包含不支援的語言。 如果資料集中有不支援的語言或其識別碼,則會產生下列執行階段錯誤:
「前置處理文字錯誤 (0039) :請指定支援的語言」。
若要避免因為偵測到不支援的語言而導致整個實驗失敗,請使用 分割資料 模組,然後指定正則運算式,將資料集分割成支援和不支援的語言。
例如,下列正則運算式會根據資料行 Sentence
所偵測到的語言來分割資料集:
\"Sentence Language" Dutch|English|French|Italian|Spanish
如果您有包含語言識別項的資料行,或您已產生這類資料行,您可以使用正則運算式(如下所示)來篩選 [識別碼] 資料行:
\"Sentence Iso6391 Name" nl|en|fr|it|es
預期的輸入
名稱 | 類型 | 說明 |
---|---|---|
資料集 | 資料表 | 輸入資料 |
停用字詞 | 資料表 | 要移除之停用字詞的選擇性自訂清單 |
模組參數
名稱 | 類型 | 範圍 | 選擇性 | 預設 | 描述 |
---|---|---|---|---|---|
移除 Url | 布林值 | True False |
必要 | true | 移除 Url |
語言 | 語言 | 英文 西班牙文 法文 荷蘭文 德文 義大利文 |
必要 | 英文 | 選取要前置處理的語言 |
要清除的文字資料行 | 資料行選取 | 必要 | StringFeature | 選取要清除的文字資料行 | |
自訂正則運算式 | String | 選擇性 | 指定自訂正則運算式 | ||
自訂取代字串 | String | 選擇性 | 指定自訂正則運算式的自訂取代字串 | ||
移除停用字詞 | Boolean | 必要 | true | 移除停用字詞 | |
詞形歸併還原 | Boolean | 必要 | true | 使用詞形歸併還原 | |
在語音中移除 | True False 類型 | true false |
必要 | False | 指出是否應該使用部分的語音分析來識別和移除特定單字類別 |
移除名詞 | Boolean | 當選取 [ 依部分語音篩選 ] 選項時套用 | true | 移除名詞 | |
移除形容詞 | Boolean | 當選取 [ 依部分語音篩選 ] 選項時套用 | true | 移除形容詞 | |
移除動詞 | Boolean | 當選取 [ 依部分語音篩選 ] 選項時套用 | true | 移除動詞 | |
偵測句子 | Boolean | 必要 | true | 藉由新增句子結束字元來偵測句子 \ "| | |\ ",可供 n 語法功能的解壓縮程式模組使用 | |
將大小寫標準化為小寫 | Boolean | 必要 | true | 將大小寫標準化為小寫 | |
移除數位 | Boolean | 必要 | true | 移除數位 | |
移除特殊字元 | Boolean | 必要 | true | 移除非英數位元的特殊字元,並以 \ "| \" 字元取代 | |
移除重複的字元 | Boolean | 必要 | true | 移除重複的字元 | |
移除電子郵件地址 | Boolean | 必要 | true | 移除電子郵件地址 |
輸出
名稱 | 類型 | 說明 |
---|---|---|
結果資料集 | 資料表 | 結果資料集 |
例外狀況
例外狀況 | 描述 |
---|---|
錯誤 0003 | 如果一或多個輸入是 Null 或空白,就會發生例外狀況。 |
錯誤 0030 | 無法下載檔案時,就會發生例外狀況。 |
錯誤 0048 | 無法開啟檔案時,就會發生例外狀況。 |
錯誤 0049 | 無法剖析檔案時,就會發生例外狀況。 |
如需 Studio (傳統) 模組特定的錯誤清單,請參閱機器學習錯誤碼。
如需 API 例外狀況的清單,請參閱機器學習 REST API 錯誤碼。