FishInBed / LDS_bot

0 stars 0 forks source link

Utterance to long (too completed) #1

Open Droidtown opened 1 year ago

Droidtown commented 1 year ago

https://github.com/FishInBed/LDS_bot/blob/d009090cddcf1bdf202a235bff6696633c8b27fa/A_background/intent/Loki_congenital_disease.py#L64

其實只要建 有[唇顎裂] 就行了。因為你現在有兩個動詞,一是「出生」另一個是「有」,那就表示要兩個動詞都出現的時候,才會落入這一個 utterance 的 syntax structural pattern。只要使用者沒講「出生」而只說了「有唇顎裂」,那麼你這個 utterance 就會抓不到囉。

Linguistics 的訓練應該讓我們知道「哪些詞彙串在一起,會剛好形成一個詞組。而人類的語言會以詞組為單位做省略、位移…等等句法操作」。因此你要做的是「建立核心語意的那個詞組」做為 utterance pattern。

FishInBed commented 1 year ago

那這樣是不是其實只需要留第一個「唇顎裂」的utterance就好了呢?

Droidtown commented 1 year ago

Nope, 只有「唇顎裂」一個 utterance 的話,因為它是 Entity,那就表示任何一個「有 Entity 的 utterance 都符合這個 pattern」。這麼一來程式會寫不完。以你下面列的 utterance 為例,應該這樣調整:

原來的 utterance:

  1. "[我][兒子]有[唇顎裂]"
  2. "出生就[腦出血]"
  3. "出生就確診[唇顎裂]"
  4. "出生就被診斷有[唇顎裂]"
  5. "我家小孩有[唇顎裂]"
    ====

調整後的 utterance: (把原來的五組收斂成三組)

  1. 有[唇顎裂]
  2. 出生就[腦出血]
  3. 確診[唇顎裂]

只要這三個,分別有「有」「出生」「確診」三個動詞做為 function 的名詞,而其後被框起來的 Entity 做為 argument,這就是一個有效率的模型。這三個分別就能處理前面原來的 5 個句子裡的…

  1. 1, 4, 5

  2. 2

  3. 3

這樣才是「用少的例子,理解多的現象」,也正是人類嬰兒學習語言的模式。

FishInBed commented 1 year ago

了解了謝謝! 順便一提,這樣的話我想新加一個可以抓到「被診斷為唇顎裂」的utterance是不是只需要「診斷為唇顎裂」就可以了?

Droidtown commented 1 year ago

對。 除非「被動式」的「被」對你要做的語意邏輯而言很重要,否則只要選「診斷為唇顎裂」這個 VP 就夠了。