共用方式為


具名實體辨識

重要

Machine Learning 工作室 (傳統) 的支援將於 2024 年 8 月 31 日結束。 建議您在該日期之前轉換成 Azure Machine Learning

自 2021 年 12 月 1 日起,您將無法建立新的 Machine Learning 工作室 (傳統) 資源。 在 2024 年 8 月 31 日之前,您可以繼續使用現有的 Machine Learning 工作室 (傳統) 資源。

ML 工作室 (傳統) 文件即將淘汰,未來將不再更新。

識別文字資料行中的具名實體

Category:文字分析

注意

適用于僅限機器學習 Studio (傳統)

Azure Machine Learning 設計工具中提供類似的拖放模組。

模組概觀

本文說明如何使用機器學習 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) 。

如何設定命名實體辨識

  1. 命名實體 辨識模組新增至您在 Studio (傳統) 中的實驗。 您可以在文字分析分類中找到此模組。

  2. 在名為「 故事」的輸入上,連接包含要分析之文字的資料集。

    「故事」應該包含要從中解壓縮已命名實體的文字。

    當做 故事 使用的資料行應該包含多個資料列,其中每個資料列都包含一個字串。 字串可以是簡短的,例如句子或 long,就像新聞文章一樣。

    您可以連接任何包含文字資料行的資料集。 但是,如果輸入資料集包含多個資料行,請使用 [ 選取資料集中的資料行 ] 只選擇包含您要分析之文字的資料行。

    注意

    目前不支援第二個輸入( 自訂資源 (Zip) )。

    未來,您可以在這裡新增自訂資源檔,以識別不同的實體類型。

  3. 執行實驗。

結果

此模組會輸出一個資料集,其中包含每個已辨識實體的資料列,以及位移。

因為輸入文字的每個資料列可能包含多個命名實體,所以會自動產生並包含在輸出中的發行項識別碼,以識別包含已命名實體的輸入資料列。 發行項識別碼是根據輸入資料集中資料列的自然順序。

您可以將此輸出資料集轉換為 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 資源庫 中的下列範例實驗示範如何使用機器學習中常用的文字分類方法:

技術說明

語言支援

目前,[具名實體辨識] 模組僅支援英文文字。 它可以偵測英文句子中的組織名稱、人員名稱和位置。 如果您使用其他語言的模組,您可能不會收到錯誤,但結果不如英文文字那麼好。

在未來,將會整合 Office 自然語言工具組中所提供的多語系元件,以支援其他語言。

預期的輸入

名稱 類型 說明
情節 資料表 輸入資料集 (DataTable) 包含您想要分析的文字資料行。
CustomResources Zip (選擇性) 包含其他自訂資源的檔案 (ZIP 格式)。

此選項目前無法使用,只是基於往後相容性而提供。

輸出

名稱 類型 描述
實體 資料表 字元位移和實體的清單

另請參閱

文字分析
特性雜湊
計分 Vowpal Wabbit 7-4 模型
定型 Vowpal Wabbit 7-4 模型