# 詞庫後製設定檔

# epsilon 用來設定 override 對數分數的 ε 值。web 版精確度只有小數點後三位，因
# 此建議 epsilon 設到這個數字

epsilon 0.001

# before 用來確認後製修改之前的詞庫狀態
before ㄓㄜˋ-ㄉㄟˇ-ㄕˋ-ㄕˋ-ㄘㄞˊ-ㄓ-ㄉㄠˋ 這-得-是-是-才-知道

# promote-over-single-syllables 的意思是，給定多字詞，這個多字詞的分數，應該
# 高於同數量同音單字的加總。例如打「試試」但出現「是是」，是因為在 unigram
# model 下，P_log(是) + P_log(是) > P_log(試試)
promote-over-single-syllables 試試 ㄕˋ-ㄕˋ

# assert 用於確認修改之後的詞庫狀態
assert ㄓㄜˋ-ㄉㄟˇ-ㄕˋ-ㄕˋ-ㄘㄞˊ-ㄓ-ㄉㄠˋ 這-得-試試-才-知道

# promote-over-peers 的意思是，如果有許多同字數的同音詞，把指定的詞給列為最高
# 順位。例如首字理論上可念成一聲（但實際則否）的「一顆」「一棵」「一科」這三
# 個詞跟「醫科」有衝突，在語用上「ㄧ ㄎㄜ」應該出「醫科」為首。
promote-over-peers 醫科 ㄧ-ㄎㄜ

# 這個修改讓「一顆」的「一」只能用四聲讀，否則結果永遠出現「醫科」為先
assert ㄧˋ-ㄎㄜ-ㄊㄤˊ-ㄍㄨㄛˇ 一顆-糖果
assert ㄧ-ㄎㄜ-ㄉㄚˋ-ㄒㄩㄝˊ 醫科-大學
assert ㄉㄨˊ-ㄧ-ㄎㄜ 讀-醫科
assert ㄧ-ㄎㄜ-ㄕㄥ 醫科-生

# ㄎㄜ 與右鄰成詞（科目）時，「一」保留，promote 不覆蓋
assert ㄧ-ㄎㄜ-ㄇㄨˋ 一-科目

# ㄧ 與左鄰成詞（第一、這一）時，「一」亦保留
assert ㄉㄧˋ-ㄧ-ㄎㄜ 第一-科
assert ㄓㄜˋ-ㄧ-ㄎㄜ 這一-科

# 副作用：量詞「一顆」「一棵」左右皆無法成詞時，誤判為「醫科」；
# 日後若能依上下文正確判斷量詞，此二 assert 將失敗以示提醒。
assert ㄔ-ㄧ-ㄎㄜ 吃-醫科
assert ㄧ-ㄎㄜ-ㄘㄞˋ 醫科-菜

# 若念為四聲則不衝突，但此處「ㄧˋ ㄎㄜ」因為組詞模型欠缺判別下文的能力，
# 首選仍為「一顆」
assert ㄔ-ㄧˋ-ㄎㄜ 吃-一顆
assert ㄧˋ-ㄎㄜ-ㄘㄞˋ 一顆-菜

# 這個問題目前還不能解決
#
# promote-over-single-syllables 依舊在 ㄧ-ㄐㄧㄡˋ-ㄗㄞˋ
#
# 提升後，斷詞仍然是「青山-一-就在」
assert ㄑㄧㄥ-ㄕㄢ-ㄧ-ㄐㄧㄡˋ-ㄗㄞˋ 青山-依舊在

# 以下兩例用來確保修改後，不會影響其他同音但詞界不同詞
# 台中一中、中一中為完整長詞
assert ㄓㄨㄥ-ㄧ-ㄓㄨㄥ 中一中
assert ㄊㄞˊ-ㄓㄨㄥ-ㄧ-ㄓㄨㄥ 台中一中

# 「是用」是一個詞，而「試用」雖然分數低於「是」「用」，但其實是被「是用」遮蓋
# 同時，「...後再+動詞」並不是這個輸入法有處理的字
before ㄕˋ-ㄩㄥˋ-ㄏㄡˋ-ㄗㄞˋ-ㄇㄞˇ 是用-後-在-買
promote-over-peers 試用 ㄕˋ-ㄩㄥˋ
assert ㄕˋ-ㄩㄥˋ-ㄏㄡˋ-ㄗㄞˋ-ㄇㄞˇ 試用-後-在-買

before ㄗˋ-ㄏㄨㄟˋ-ㄓㄥˇ-ㄌㄧˇ 自-會-整理
before ㄗㄥ-ㄑㄧㄤˊ-ㄧㄥ-ㄨㄣˊ-ㄗˋ-ㄏㄨㄟˋ 增強-英文字-會
promote-over-single-syllables 字彙 ㄗˋ-ㄏㄨㄟˋ

assert ㄗˋ-ㄏㄨㄟˋ-ㄓㄥˇ-ㄌㄧˇ 字彙-整理

# TODO: 只提升「字彙」無法解決以下問題：詞其實是斷在「英文字」
assert ㄗㄥ-ㄑㄧㄤˊ-ㄧㄥ-ㄨㄣˊ-ㄗˋ-ㄏㄨㄟˋ 增強-英文字-會
# assert ㄗㄥ-ㄑㄧㄤˊ-ㄧㄥ-ㄨㄣˊ-ㄗˋ-ㄏㄨㄟˋ 增強-英文-字彙

before ㄧㄡˇ-ㄕˋ-ㄓㄠˇ-ㄨㄛˇ 有-是-找-我
promote-over-single-syllables 有事 ㄧㄡˇ-ㄕˋ
assert ㄧㄡˇ-ㄕˋ-ㄓㄠˇ-ㄨㄛˇ 有事-找-我

# TODO: 這個詞無法正確斷開，因為「語音」詞頻高，結果是「陽性-語音-性」
# assert ㄧㄤˊ-ㄒㄧㄥˋ-ㄩˇ-ㄧㄣ-ㄒㄧㄥˋ 陽性-與-陰性

before ㄒㄧㄢˋ-ㄕㄤˋ-ㄕˋ-ㄐㄧˊ-ㄍㄡˋ-ㄨˋ 線上-是-及-購物
promote-over-single-syllables 市集 ㄕˋ-ㄐㄧˊ
assert ㄒㄧㄢˋ-ㄕㄤˋ-ㄕˋ-ㄐㄧˊ-ㄍㄡˋ-ㄨˋ 線上-市集-購物

# TODO: 這個會失敗，因為仍然是「去世-及-買東西」
# assert ㄑㄩˋ-ㄕˋ-ㄐㄧˊ-ㄇㄞˇ-ㄉㄨㄥ-ㄒㄧ 去市集買東西

