簡體   English   中英

Dialogflow-如何在數字識別中處理空格

[英]Dialogflow - How to handle blanks in number recognition

在我的Dialogflow中,我使用實體@ sys.number來識別用戶說出的12位數字。 根據用戶的拼寫方式,它不會被識別為單個12位數字,但有時會被識別為兩個數字,分別是3、9、6和6或任何數字。 但是,Dialogflow可以按預期識別“ 123 456 789 123”,這對我來說似乎是非常隨機的行為。

如何讓Dialogflow將任意12位數字識別為12位數字?

到目前為止我嘗試過的是:

  • 將所需的參數“ number”設置為列表,但是這會使數字跳過零,因此“ 000111”將被識別為“ 111”,這不是故意的

  • 使意圖匹配任何數字,然后在@ sys.any之后(可以是任何字符串),並嘗試將其與起始數字連接。 確實不起作用,因為我必須提供任何給定的可能性,以將任何12位數字拆分為長度為1到12的前導數字,然后再拆分數字和數字的任何組合。 它也將首先接受字母

  • 使意圖匹配最多12個數字。 這是有問題的,因為如果這些數字是直接連續的,它將不提供任何信息。 另外,提供足夠的訓練數據以使其被識別是非常繁瑣的。

當用戶輸入數字時,Google會在用戶輸入的每個停頓處添加空格,這就是為什么有時會在數字中出現隨機空格的原因。

當我不得不識別由9個字符(字母或數字)組成的產品代碼時,我遇到了類似的問題。 在我的方法中,我使用@ sys.any參數作為輸入。 一旦用戶輸入了字符串,我就從輸入中刪除了所有空格,以便將句子分成一個整體。 之后,我使用了正則表達式來提取代碼。

  const response = conv.parameters.input;
  // remove whitespaces
  const textWithoutWhitespaces = response.replace(/\s/g,"");
  // Look into the string for a 12 digit number
  const regExp = new RegExp(/\d{12}/g);
  const result = regExp.test(textWithoutWhitespaces);

  if(result === true) {
    // continue
  }
  else { 
   // error
  };

如果找不到輸入,我將conv.ask()並要求用戶再次輸入。 否則,我將繼續代碼。

以數字結束您的發言是否有意義?

如果是這樣,我可能會嘗試確保將數字放在末尾,然后我們使用@ sys.any來捕捉他們所說的內容。 到那時,將所有數字連接在一起可能是可行的,盡管您顯然必須處理它們說的不是有效數字的情況。

或使用戶說“ 123億,456.65億,79.89萬,666.6”。 簡單容易:-p

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM