2017-10-20 80 views
2

我想在LUIS檢測一個人的名字,其中包括一個由姓名的人(如:瑪麗 - 安妮)
設置:如何安裝Microsoft LUIS檢測由名稱(破折號分隔)

  • 對於名稱的簡單的自定義實體
  • 爲破折號分隔字圖案特徵:^\ W * - \ W * $
  • 功能短語列表,試圖得到至少一些例子的工作:[馬克 - 安德烈· ,marie-anne,jean-marc]

我接受過培訓並發表(在分期),但它從來沒有檢測到整個組成名稱,而是隻會返回第一部分作爲實體(例如:實體是「marc」而不是「marc-andre 「)。

你知道如何配置LUIS以正確檢測我的組合名稱實體嗎?

更新以丹尼斯的回答考慮

在Luis.ai UI,我沒有意識到的是,雖然標籤的話語,就可以點擊超過一次選擇多個單詞,而指定的實體。

utterance labelling

回答

8

我能像你描述的配置簡單的自定義實體。我發佈了可導入到LUIS here的JSON。

沒有看到您的LUIS應用程序的JSON,很難說出爲什麼它無法識別破折號分隔的名稱 - 隨時在這裏發佈您的LUIS應用程序的JSON。有時,由於缺少標籤,LUIS應用程序無法識別實體。獲得LUIS識別實體的關鍵部分是標註足夠的示例。模式特徵僅僅是LUIS的暗示 - 您仍然需要定義具有標籤實體的示例話語。例如,如果你定義稱爲意圖MyNameIs,想認識名稱中他們實體,你會想各種話語添加到MyNameIs意圖包含劃線分隔的名字和標籤每個名稱與實體。 enter image description here

當我添加的圖形特徵我用+在正則表達式,而不是*表示「一個或多個」。但是,這種差異不應該破壞你的模式特徵。 enter image description here

連字符可能發生的另一個問題是LUIS返回的JSON。當您檢查來自LUIS的JSON結果時,您可以看到名稱實體是如何識別的。請注意,在entity字段中,LUIS在連字符周圍插入空格,但startIndexendIndex字段標識原始發音中實體的索引。因此,如果您的代碼在query字段中未使用startIndexendIndex來解析entity字段,則行爲可能與您預期的不同。

{ 
    "query": "my name is anne-marie", 
    "topScoringIntent": { 
    "intent": "MyNameIs", 
    "score": 0.9912877 
    }, 
    "entities": [ 
    { 
     "entity": "anne - marie", 
     "type": "Name", 
     "startIndex": 11, 
     "endIndex": 20, 
     "score": 0.8978088 
    } 
    ] 
} 
+0

非常感謝丹尼斯這個偉大的答案。 我還沒有嘗試過使用API​​配置Luis,它似乎比使用Luis.ai UI更強大。 我沒有意識到的是,在用戶界面中,您可以在上下文菜單顯示後繼續單擊,爲單個實體選擇多個單詞。 從那時起它似乎工作得很好。再次感謝。 – Aymeric

+0

不客氣 - 很高興能夠幫助:) –