具名實體辨識
重要
Machine Learning 工作室 (傳統) 的支援將於 2024 年 8 月 31 日結束。 建議您在該日期之前轉換成 Azure Machine Learning。
自 2021 年 12 月 1 日起,您將無法建立新的 Machine Learning 工作室 (傳統) 資源。 在 2024 年 8 月 31 日之前,您可以繼續使用現有的 Machine Learning 工作室 (傳統) 資源。
ML 工作室 (傳統) 文件即將淘汰,未來將不再更新。
識別文字資料行中的具名實體
Category:文字分析
模組概觀
本文說明如何使用機器學習 Studio (傳統) 中的命名實體辨識模組,來識別文字資料行中專案(例如人員、公司或位置)的名稱。
在機器學習和自然語言處理 (NLP) 中,具名實體辨識是很重要的研究領域,因為它可以用來回答許多實際問題,例如:
推文是否包含某人的名字? Tweet 也提供他目前的位置嗎?
新聞文章中提及哪些公司?
抱怨或評論中提及的產品是否已指定?
若要取得具名實體的清單,您可以提供包含文字資料行的資料集做為輸入。 命名實體辨識模組接著會識別三種類型的實體:每個) 的人員 (、位置 (的位置) ,以及組織 (組織) 。
此模組也會依找到這些字組的順序來標記順序,以便您可以使用這些字詞來進一步分析。
例如,下表顯示簡單的輸入句子,以及模組所產生的詞彙和值:
輸入文字 | 模組輸出 |
---|---|
“Boston is a great place to live.” | 0,Boston,0,6,LOC |
輸出可解讀如下:
第一個 '0' 表示此字串是輸入到模組的第一篇文章。
因為單一文章可能有多個實體,所以輸出中必須包含文章資料列號碼,將特徵對應至文章。
Boston
這是可辨識的實體。0
接下來Boston
的表示實體Boston
是從輸入字串的第一個字母開始。 索引是以零為基底。6
表示實體Boston
的長度為6。LOC
表示實體Boston
是位置或位置。 其他支援的命名實體類型為 person (PER
) 和組織 (ORG
) 。
如何設定命名實體辨識
將 命名實體 辨識模組新增至您在 Studio (傳統) 中的實驗。 您可以在文字分析分類中找到此模組。
在名為「 故事」的輸入上,連接包含要分析之文字的資料集。
「故事」應該包含要從中解壓縮已命名實體的文字。
當做 故事 使用的資料行應該包含多個資料列,其中每個資料列都包含一個字串。 字串可以是簡短的,例如句子或 long,就像新聞文章一樣。
您可以連接任何包含文字資料行的資料集。 但是,如果輸入資料集包含多個資料行,請使用 [ 選取資料集中的資料行 ] 只選擇包含您要分析之文字的資料行。
注意
目前不支援第二個輸入( 自訂資源 (Zip) )。
未來,您可以在這裡新增自訂資源檔,以識別不同的實體類型。
執行實驗。
結果
此模組會輸出一個資料集,其中包含每個已辨識實體的資料列,以及位移。
因為輸入文字的每個資料列可能包含多個命名實體,所以會自動產生並包含在輸出中的發行項識別碼,以識別包含已命名實體的輸入資料列。 發行項識別碼是根據輸入資料集中資料列的自然順序。
您可以將此輸出資料集轉換為 CSV 以供下載,或將它儲存為資料集以供重複使用。
在 web 服務中使用命名實體識別
如果您使用 c #、Python 或其他語言(例如 R)將 web 服務發佈機器學習 Studio) (,您必須先執行 web 服務的說明頁面上所提供的服務程式代碼。
如果您的 Web 服務提供多個資料列的輸出,則您加入至 C#、Python 或 R 程式碼的 Web 服務的 URL,應該具有後置詞 scoremultirow
,而不是score
。
例如,假設您針對 web 服務使用下列 URL: https://ussouthcentral.services.azureml.net/workspaces/<workspace id>/services/<service id>/score
若要啟用多重資料列輸出,請將 URL 變更為 https://ussouthcentral.services.azureml.net/workspaces/<workspace id>/services/<service id>/scoremultirow
若要發佈此 web 服務,您應該在命名實體辨識模組之後新增額外的「執行 R 腳本」模組,以將多個資料列輸出轉換成單一以分號分隔的 (; ) 。 將輸出的多個資料列合併成單一資料列,目的是希望每一個輸入資料列傳回多個實體。
例如,假設您有一個輸入句子,內含兩個具名實體。 您可以傳回以分號 (;) 分隔、具有多個實體的單一資料列,而不要為每個輸入資料列傳回兩個資料列,如下所示:
輸入文字 | Web 服務的輸出 |
---|---|
Microsoft 在波士頓有兩個辦公室位置。 | 0,Microsoft,0,9,ORG,;,0,Boston,38,6,LOC,; |
下列程式碼範例示範如何執行這項操作:
# Map 1-based optional input ports to variables
d <- maml.mapInputPort(1) # class: data.frame
y=length(d) ##size of cols
x=dim(d)[1] ##size of rows
longd=matrix("NA",nrow=1,ncol=x*(y+1))
for (i in 1:x)
{
for (j in 1:y)
{
longd[1,j+(i-1)*(y+1)]=toString(d[i,j])
}
longd[1,j+(i-1)*(y+1)+1]=c(";")
}
final_output=as.data.frame(longd)
# Select data.frame to be sent to the output Dataset port
maml.mapOutputPort("final_output");
範例
此 blog 提供有關命名實體辨識運作方式、其背景和可能應用程式的詳細說明:
此外,請參閱 Azure AI 資源庫 中的下列範例實驗示範如何使用機器學習中常用的文字分類方法:
新聞分類範例:使用特徵雜湊將文章分類成預先定義的類別清單。
類似公司範例:使用維琪百科文章的文字將公司分類。
文字-分類步驟1之5:資料準備:在這五個部分的文字分類逐步解說中,Twitter 訊息中的文字是用來執行情感分析。 也會示範各種不同的文字前處理技術。
技術說明
語言支援
目前,[具名實體辨識] 模組僅支援英文文字。 它可以偵測英文句子中的組織名稱、人員名稱和位置。 如果您使用其他語言的模組,您可能不會收到錯誤,但結果不如英文文字那麼好。
在未來,將會整合 Office 自然語言工具組中所提供的多語系元件,以支援其他語言。
預期的輸入
名稱 | 類型 | 說明 |
---|---|---|
情節 | 資料表 | 輸入資料集 (DataTable) 包含您想要分析的文字資料行。 |
CustomResources | Zip | (選擇性) 包含其他自訂資源的檔案 (ZIP 格式)。 此選項目前無法使用,只是基於往後相容性而提供。 |
輸出
名稱 | 類型 | 描述 |
---|---|---|
實體 | 資料表 | 字元位移和實體的清單 |