iT邦幫忙

2026 iThome 鐵人賽

DAY 11
0
Claude AI

Better than 情勒鳥!!Claude AI高中學測向英語家教Skill設計系列 第 11

Day11 一切造物的工已經完畢 【字詞講堂功能設計與錯題本補強】

  • 分享至 

  • xImage
  •  

作為這份英語家教 Skill 中唯一不是「先考試、後檢討」的主題,字詞講堂肩負幾項功能。

字詞講堂的基本架構

單字

單字主題共有四種分類:

  1. 相似字(根/尾)
  2. 一字多義
  3. 同義字
  4. 主題應用

文法

文法主題則有兩種:

  1. 文法
  2. 片語

字詞講堂 Skill 會基於以下架構進行輸出:

  • 「介紹字」+「該字中譯」+「用法/搭配字」
  • 「例句」

多數情況依照之前 grilling 過的共識,就能良好地生成出來。

但在這段期間,依然出現了一些錯誤。


第一次問題:錯題本取材範圍過度受限

在正常情況下,我們有兩種生成講堂內容的方式:

  1. 使用者選題
  2. 依照錯題本出題

在測試「錯題本生成」後,首先出錯的點是:「AI 誤以為只能依照錯題本中已經存在的單字作為介紹項。」
因此出現了整個主題只介紹三個單字的情況。
https://ithelp.ithome.com.tw/upload/images/20260813/20183433pcE6X1hPtE.png
當然,這個問題只需要修改「取材限定」的描述即可。但就「限定」這件事情而言,還存在另一個問題。


第二次問題:字根定義過度發散

https://ithelp.ithome.com.tw/upload/images/20260813/20183433c2G6nv5rI5.png
可以看到,當時的主題採用的是相似字根的 -tion(轉名詞)作為介紹主題。

稍微對英語有點了解的人就知道,-tion 這個字尾接近於「有多少個單字就有多少個變化」的程度。

因此,為了防止 AI 以這種過度發散的字根作為主題,我讓它修改了分群依據中對於「字根」的定義。

當時的分群依據

分群依據:只做「共同字根/字尾」這種最明確的關聯(其他關聯方式之後有需要再擴充,第一版不做)。

同時加入以下限制:

排除純文法性、不帶具體語意的通用字尾-tion-sion-ing-ed-ly-ness-ment-able-ible-er-or/複數 -s 這類——這種字尾套用在任何字根上都成立,把字根彼此無關的字湊在一起沒有教學意義),只用「本身帶著具體語意的字根/字首/字尾」(例如 trans-auto--phobia)或「同一具體字根的不同詞形」(例如 attractattractiveattraction)當分群依據。

然而,這樣做又顯得有些矯枉過正。

第二次測試中,AI 以 attract 作為主題,結果跑出來的內容卻幾乎完全侷限於 attract 的不同詞形。

這顯然又限制得太死,因此,在第三次修改中,我明確定義了字根的封閉性問題,加入了以下規則:

但若這個字根封閉,優先退一步找更小的拉丁/希臘字根片段,例如 -tract-,當分群依據。

同時加入第二種分群依據。

第二種依據:「共同語意主題」

第二種依據「共同語意主題」:vault 裡若有一群字明顯來自同一次出題批次、圍繞同一個具體情境/主題(依 history 裡的 sentence 欄位判斷,不是看拼寫),也算有效群聚,對應「主題相關常用字」內容類型。

到這裡為止,以上都只是一些日常的小修改。


但這些細節修改的過程中,我突然意識到:

倘若連這種定義都有可能出現發散,那麼這份家教 Skill 的另一個核心——錯題本的定義,又會如何?

眾大題都仰賴錯題本提供使用者的錯誤單字及判斷標籤

再根據這些資訊給予適當題目,讓使用者能夠充分複習錯字。

然而,現有的標籤及定義貌似存在一個問題:

在太過發散的同時,又太過紊亂。

單純用文字描述可能很難理解,因此,我決定先重新整理現有的單字庫架構。


資料在哪裡、長什麼樣子?

全部資料存在:

vault.json
~/.claude/gsat-tutor-data/vault.json

目前有兩種 Schema 並存。


1. 選擇題型大題

包含:

  • 詞彙題
  • 文意選填
  • 綜合測驗
  • 篇章結構
  • 閱讀測驗
  • 混合題型的填空與多選部分

這類資料的 key 是單字本身。

例如:

{
  "abandon": {
    "word": "abandon",
    "pos": "v.",
    "level": 4,
    "tags": ["一字多義誤判"],
    "wrong_count": 2,
    "familiarity_score": -1,
    "next_review": "2026-08-10",
    "mastered": false,
    "section": "vocab",
    "history": [
      {
        "date": "...",
        "question_type": "single",
        "sentence": "...",
        "chosen": "B",
        "correct": "A",
        "explanation": "..."
      }
    ]
  }
}

2. 開放式作答大題

包含:

  • 混合題型
  • 翻譯
  • 作文

這類題目的錯誤通常不是單一單字,而是:

  • 文法結構
  • 用法問題

因此改用「摘要/詳情分層」Schema。

key 是文法結構描述,例如「主詞動詞一致性」。

{
  "key": "主詞動詞一致性",
  "section": "essay",
  "summary": "主詞為單數時,動詞誤用複數形式",
  "wrong_count": 3,
  "next_review": "2026-08-14",
  "mastered": false,
  "history": [
    {
      "date": "...",
      "task": "essay",
      "submission": "...",
      "full_feedback": "...",
      "attempt_number": 1
    }
  ]
}

其中:

  • summary:錯題本列表顯示用的一行精簡摘要
  • history:完整的原始作答/批改內容

這樣可以避免錯題本列表被大段文字塞滿。


錯題本畫面

主選單中的選項 10為錯題本。

目前的顯示邏輯是:

next_review 由近到遠,列出所有尚未 mastered 的項目。

每筆顯示:

  • 單字(或摘要)
  • 詞性
  • Level
  • 弱點標籤
  • next_review 日期
  • 累計答錯次數(wrong_count
  • 來源大題(section 欄位,用來標示原本是哪個大題答錯)

複習卷:獨立錯題庫模式

當使用者說「出複習卷」時:

不管這個字原本是在:詞彙題、文意選填、綜合測驗、其他大題中答錯,整份待複習清單都統一交給 gsat-vocab-tutor

並使用詞彙題格式即一句話+4 選項逐一出題。

為什麼不重現原本的大題?

因為複習的目的是:

測「這個字本身記不記得」,而不是重現原大題的出題機制。

因此:

  • 一次一題
  • 答錯照樣走完整四步驟 SOP
  • 不受「自然融入語境」限制
  • 句子生硬也沒關係
  • 重點是覆蓋到清單裡的每個字

答完之後,section 欄位維持原值不變,只是被複習模式抓出來考一次。

兩個容易混淆的追蹤欄位

原本有兩個職責不同的欄位:

  • wrong_count
  • familiarity_score

wrong_count

純粹累計答錯次數。

用途:

  • 錯題本畫面顯示
  • 驅動 next_review 的間隔遞增邏輯

familiarity_score

這是今天字詞講堂上線後新增的欄位,獨立追蹤使用者對單字的熟悉程度。

規則:

  • 初始值:0
  • 任何情境答對:+1
  • 上限:+3
  • 答錯:-1
  • 無下限

涵蓋的情境包括:

  • 練習
  • 大考
  • 複習卷
  • 字詞講堂小測驗

目前用途只有兩個:

  1. 驅動字詞講堂的弱點群聚偵測優先序
  2. 同樣到期時,較負的字優先排入複習

舊資料的相容問題

字詞講堂上線前寫入的舊資料沒有 familiarity_score 欄位。

因此讀取時:

視為預設值 0


原本的弱點標籤

原本的弱點標籤會依大題性質不同而不同,並不是統一的一套系統。

詞彙題/文意選填/綜合測驗詞彙類空格,包含:

  • 字義完全陌生
  • 形近字混淆
  • 一字多義誤判
  • 文法結構看不懂

篇章結構改用篇章邏輯關係類型:

  • 轉折關係誤判
  • 指代對象誤判
  • 清單延續誤判
  • 誘答句誤選

混合題型/翻譯/作文直接使用「文法結構/用法描述」作為 key 本身,不另外貼標籤。


重新設計錯題本

追蹤欄位的wrong_count跟familiarity_score本身功能重疊,只是一個會隨使用者行為動態調整權重而另一個不會,有鑑於諸大題的首要目標都是優先練習使用這最不熟的那一個,所以第一步就是將功能整合進familiarity_score中。

其次我將錯題本的紀錄改為主要兩類:單字與文法。

單字主要從各大題考單字用法的地方紀錄(如詞彙題、綜合/閱讀等長篇文章大題考單字的題目,以及作文/翻譯的誤用,拼字錯誤等)。

文法由於有限因此純紀錄各大題答錯次數(當翻譯/作文出現誤用或沒能使用翻譯題目需求的文法時同樣紀錄)。

這項調整排除了非選及內容理解的錯題記錄,但本身最需要錯題的字詞講堂功能並不配備講解文章理解及寫作架構等內容,所以移除並無影響。最終規整如下圖。

https://ithelp.ithome.com.tw/upload/images/20260813/201834335ek3H4lFcK.png

弱點標籤同樣需要重製,弱點標籤同樣改為單字與文法分類

單字類採:

  • 字義陌生(如當在語意題錯誤時)

  • 形近字混淆(如當非選題錯誤填到相似錯字時,二者皆列入該標籤)

  • 一字多義誤判(如當該單字熟悉度原先屬於正但在不同語意考題中填錯,推測為一字多義誤判)。

相比原先設計這次給了詳細的標籤判斷理由,否則舊綱架所給出的標籤很大程度都是字義陌生而猜不出使用者真正不懂在哪,當然新框架也存在漏洞,後續會在更細緻地進行調整。

文法類與追蹤欄位較相似,將各類型優先排出,當出錯時則幫該類型錯誤次數+1。如下:

"grammar": { "時態": {"familiarity_score": 0, "error_count": 0},
"語態": {"familiarity_score": 0, "error_count": 0},
"假設語氣": {"familiarity_score": 0, "error_count": 0},
"子句": {"familiarity_score": 0, "error_count": 0},
"分詞構句": {"familiarity_score": 0, "error_count": 0},
"不定詞與動名詞": {"familiarity_score": 0, "error_count": 0},
"倒裝與強調句": {"familiarity_score": 0, "error_count": 0},
"比較與對等結構": {"familiarity_score": 0, "error_count": 0},
"主詞動詞一致性": {"familiarity_score": 0, "error_count": 0},
"情態助動詞": {"familiarity_score": 0, "error_count": 0},
"冠詞與數的一致": {"familiarity_score": 0, "error_count": 0},
"介系詞用法": {"familiarity_score": 0, "error_count": 0},
"標點與大小寫": {"familiarity_score": 0, "error_count": 0},
"轉承語與篇章銜接": {"familiarity_score": 0, "error_count": 0}
}

當然詳細不僅限於這些,這次調整牽扯到9個大題10個skill的底層邏輯,光跑就跑了29分鐘,若調整順利,那麼這應該就是本體的最後一個設計了。


上一篇
Day 10 我沒意見,讓別人提點吧 【反饋演進功能設計猜想】
下一篇
Day12 化繁為簡【檔案減負與簡化】
系列文
Better than 情勒鳥!!Claude AI高中學測向英語家教Skill設計15
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言