/stopword — 管理停用詞(白名單)

明確指示 /ingest「此單字無須收錄」。設定後,未來的 /ingest <單字> 要求將被系統拒絕,避免字典中充斥過於簡單或無須複習的內容。

/stopword — Add a word to the allow-list

Tell /ingest "don't bother with this one". Once added, future /ingest <that word> calls are refused, so your dictionary doesn't grow pages nobody plans to drill.

設計初衷

並非所有單字都具備複習價值。例如功能詞(theisof)或過於基礎的詞彙(helloapple),若全數收入字典將導致卡片庫虛胖。透過停用詞機制,您可以過濾雜訊,確保 /ingest 專注於真正需要深度學習與語素拆解的字彙。

停用詞清單儲存於 dictionary/stopwords.md,結構分為兩類:

  • ## default:由 /setup 初始化時寫入的約 150 個預設功能詞(如 and, was 等)。請勿手動修改此區塊,以維持系統預設邏輯的一致性。
  • ## custom:您的個人化停用詞。/stopword 指令僅會更動此區塊,並自動按字母順序排列。

Why this exists

Not every English word deserves a flashcard. Function words like the, a, is have nothing useful to break down; very basic words like hello or book just clutter the deck. Without an allow-list, /ingest hello would happily create dictionary/words/hello.md — one more card, but one you'll roll your own eyes at.

/stopword maintains that "skip this one" list so /ingest stays focused on words actually worth learning.

The list lives in dictionary/stopwords.md, split into two sections:

  • ## default: about 150 English function words (a, and, the, was …) seeded by /setup the first time you run it. **Please don't edit this section by hand** — it's the shared baseline so different users' dictionaries stay comparable.
  • ## custom: words you add. /stopword only touches this section.

具體範例

若您希望封鎖 understand,請於 Claude Code 中執行:

/stopword understand

系統執行流程如下:

  1. 讀取 dictionary/stopwords.md,確認單字是否已存在。
  2. ## custom 區段新增 - understand(自動維持字母排序)。
  3. 回報:「understand 已加入停用詞;日後將無法對此單字執行 /ingest。」

更新後的 dictionary/stopwords.md 結構預覽(節錄):

# StopWords

## default
- a
- about
- after
...

## custom
- understand

此後若誤觸 /ingest understand,系統將回應:「該單字位於停用詞清單,操作已取消。」以確保字典的簡潔性。

A concrete example

Say you don't want understand in your dictionary (maybe you already know it cold). In the Claude Code chat, type:

/stopword understand

Claude will:

  1. Read dictionary/stopwords.md and confirm understand isn't already in ## default or ## custom.
  2. Add - understand under ## custom, keeping the section alphabetised.
  3. Report "understand added to ## custom; future /ingest understand will be refused."

After the edit, dictionary/stopwords.md looks like this (abridged):

# StopWords

## default

- a
- about
- across
- after
...
- yourselves

## custom

- understand

Now, if you accidentally type:

/ingest understand

you'll get a reply like: "understand is in stopwords (custom), no dictionary page will be created." Nothing is written, nothing is overwritten.

操作指南

  1. 鎖定單字:您可以隨時將不想複習的單字加入清單,甚至在執行批次收錄前預先封鎖。
  2. 執行指令:在終端機輸入 /stopword <單字>。亦支援一次輸入多個單字(以空白分隔):
    /stopword hello world apple
  3. 確認結果:系統會逐一報告處理狀態(新增、已存在、或為預設詞)。

如何移除停用詞? 目前 /stopword 不提供移除指令。若要重啟某個單字的收錄權限,請直接編輯 dictionary/stopwords.md 並刪除該行內容即可。

最佳實踐場域:

  • 批次收錄後清理:/ingest 包含了一些瑣碎詞彙,立即執行 /stopword 以絕後患。
  • 預防異常分解:若特定專有名詞(人名、地名)干擾語素分析,將其加入停用詞是以逸待勞的做法。

Step by step

  1. Pick a word you don't want in the dictionary — maybe you saw it sneak in via /ingest on a full sentence, or you want to block it before it ever shows up.
  2. In the Claude Code chat, type:
    /stopword <that word>
    You can also pass several words at once, separated by spaces:
    /stopword hello world apple
  3. Wait for Claude's per-word report (added / already in default / already in custom).
  4. (Optional) Open dictionary/stopwords.md in any text editor and scroll to the bottom to confirm the new lines under ## custom.

About removal: /stopword does not have a remove sub-command today. To take a word back off the allow-list, open dictionary/stopwords.md in any editor and delete its - <word> line. Only delete lines from ## custom; leave ## default alone.

When is /stopword most useful?

  • Right after a sentence-mode /ingest — if you see a few entries that shouldn't have been picked up, fire /stopword … to block them next time.
  • While reading something, you spot a word that's "too easy for me" — /stopword it before it ever gets ingested.
  • A particular word keeps producing odd breakdowns under /ingest (names, places, brand names) — instead of fixing it each time, /stopword it once and move on.

常見誤區與建議

常見誤區 1:認為此指令會自動刪除現有字典檔。 /stopword 僅負責「未來的攔截」。若單字頁面 dictionary/words/understand.md 已存在,設定停用詞不會同步刪除該檔案。您必須手動移除該 Markdown 檔,並視需求使用 /flashcard remove 清理複習卡庫。

常見誤區 2:嘗試直接修改 ## default 區塊。該區塊是系統維護的一致性基準,請將個人偏好全數寫入 ## custom。即使某個字已在 ## default,重複加到 ## custom 也無妨,系統會優先檢查整體狀態。

常見誤區 3:輸入非純英文字彙。系統目前僅支援純英文字母。輸入中文或包含符號(如 state-of-the-art)的字串可能會被拒絕。

後續探索:

  • /ingest — 過濾雜訊後,重新收錄真正重要的字彙
  • /lint — 檢查停用詞設定是否與現有字典產生衝突
  • 返回 首頁

Common mistakes & next steps

Mistake 1 — Assuming /stopword deletes an existing dictionary page: it does not. /stopword understand only blocks future /ingest understand calls; if dictionary/words/understand.md already exists, **the file is left untouched**. To clean up fully, you need to do two more things by hand:

  • Delete dictionary/words/understand.md
  • If the word is already in your review deck, also remove its entry from review/flashcards.json (or use /flashcard remove understand)

Mistake 2 — Editing the ## default section directly: don't. ## default is the shared baseline that /setup seeds from a template, so different users' dictionaries stay comparable. Put your personal preferences in ## custom. If you really feel ## default is missing a common function word, adding it to ## custom works just as well (/ingest checks both sections).

Mistake 3 — Passing Chinese or non-English input: /stopword only accepts a single English word (letters only). Giving it 蘋果, or a hyphenated/punctuated form like state-of-the-art, will be rejected with a prompt to re-enter. (Multiple plain-English words separated by spaces are fine — each one is processed in turn.)

Mistake 4 — Trying /stopword remove: there is no such sub-command today. To take a word back off the list, open dictionary/stopwords.md in any text editor and delete its line. It's plain Markdown — any editor will do.

Next steps:

  • With the noise filtered out, go back to /ingest and process the words you actually want to learn.
  • After a round of clean-up, run /lint to confirm every two-way link in the dictionary still matches.
  • Want to change what ships in ## default or otherwise tune the stopword behavior? See Customize & tune.

Back to home.