Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 23 additions & 67 deletions Source/Data/Postprocess.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,32 +5,20 @@

epsilon 0.001


# before 用來確認後製修改之前的詞庫狀態

before ㄓㄜˋ-ㄧㄤˋ-ㄇㄟˊ-ㄕˋ-ㄐㄧㄡˋ-ㄏㄠˇ 這樣-沒-是-就好

before ㄓㄜˋ-ㄉㄟˇ-ㄕˋ-ㄕˋ-ㄘㄞˊ-ㄓ-ㄉㄠˋ 這-得-是-是-才-知道

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

promote-over-single-syllables 沒事 ㄇㄟˊ-ㄕˋ

# 高於同數量同音單字的加總。例如打「試試」但出現「是是」,是因為在 unigram
# model 下,P_log(是) + P_log(是) > P_log(試試)
promote-over-single-syllables 試試 ㄕˋ-ㄕˋ

# assert 用於確認修改之後的詞庫狀態

assert ㄇㄟˊ-ㄕˋ 沒事
assert ㄓㄜˋ-ㄧㄤˋ-ㄇㄟˊ-ㄕˋ-ㄐㄧㄡˋ-ㄏㄠˇ 這樣-沒事-就好

promote-over-single-syllables 好險 ㄏㄠˇ-ㄒㄧㄢˇ
assert ㄏㄠˇ-ㄒㄧㄢˇ-ㄇㄟˊ-ㄕˋ-ㄦˊ-ㄑㄧㄝˇ-ㄏㄠˇ-ㄒㄧㄢˇ-ㄒㄧㄢˇ-ㄕˋ-ㄑㄧˋ-ㄇㄟˊ-ㄏㄨㄞˋ 好險-沒事-而且-好險-顯示器-沒-壞

assert ㄓㄜˋ-ㄉㄟˇ-ㄕˋ-ㄕˋ-ㄘㄞˊ-ㄓ-ㄉㄠˋ 這-得-試試-才-知道

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

promote-over-peers 醫科 ㄧ-ㄎㄜ

# 這個修改讓「一顆」的「一」只能用四聲讀,否則結果永遠出現「醫科」為先
Expand All @@ -56,77 +44,45 @@ assert ㄧ-ㄎㄜ-ㄘㄞˋ 醫科-菜
assert ㄔ-ㄧˋ-ㄎㄜ 吃-一顆
assert ㄧˋ-ㄎㄜ-ㄘㄞˋ 一顆-菜


# 「裡裡外外」已經成詞,所以不需要再 promote 「裡裡」
# promote-over-peers 裡裡 ㄌㄧˇ-ㄌㄧˇ
# assert ㄌㄧˇ-ㄌㄧˇ-ㄨㄞˋ-ㄨㄞˋ 裡裡外外

promote-over-single-syllables 依舊 ㄧ-ㄐㄧㄡˋ
assert ㄓㄜˋ-ㄨㄣˋ-ㄊㄧˊ-ㄧ-ㄐㄧㄡˋ-ㄘㄨㄣˊ-ㄗㄞˋ 這-問題-依舊-存在

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

promote-over-single-syllables 中醫 ㄓㄨㄥ-ㄧ
promote-over-single-syllables 西醫 ㄒㄧ-ㄧ
assert ㄓㄨㄥ-ㄧ-ㄩˇ-ㄒㄧ-ㄧ 中醫-與-西醫
assert ㄑㄧㄥ-ㄕㄢ-ㄧ-ㄐㄧㄡˋ-ㄗㄞˋ 青山-依舊在

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

# 「一再」的兩個念法雖然分數是一樣的,但因為「一」的不同念法分數不同,
# 導致唸一聲的「一+在」分數高於首字唸一聲的「一再」,而唸二聲的「一+在」
# 反而分數低於首字唸二聲的「一再」,因此「一再」其實不是個問題詞
# (因為這個詞一般首字都唸二聲),因此我們選擇不 boost
before ㄧ-ㄗㄞˋ 一-在
before ㄧˊ-ㄗㄞˋ-ㄔㄨ-ㄒㄧㄢˋ 一再-出現
before ㄧ-ㄗㄞˋ-ㄔㄨ-ㄒㄧㄢˋ 一-再出現
before ㄧ-ㄗㄞˋ-ㄈㄚ-ㄕㄥ 一-在-發生
before ㄧˊ-ㄗㄞˋ-ㄈㄚ-ㄕㄥ 一再-發生

before ㄍㄜˋ-ㄕˋ-ㄔㄢˇ-ㄆㄧㄣˇ 個-是-產品
before ㄍㄜˋ-ㄕˋ-ㄍㄜˋ-ㄧㄤˋ 各式各樣
promote-over-single-syllables 各式 ㄍㄜˋ-ㄕˋ
assert ㄍㄜˋ-ㄕˋ-ㄔㄢˇ-ㄆㄧㄣˇ 各式-產品

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

# 其實這個「作」應該是「做」,但語料當中「作」分數高於「做」
before ㄕˋ-ㄓㄜ˙-ㄗㄨㄛˋ-ㄎㄢˋ-ㄎㄢˋ 是-著-作-看看
promote-over-single-syllables 試著 ㄕˋ-ㄓㄜ˙
assert ㄕˋ-ㄓㄜ˙-ㄗㄨㄛˋ-ㄎㄢˋ-ㄎㄢˋ 試著-作-看看

before ㄎㄨㄢ-ㄎㄨㄛˋ-ㄉㄜ˙-ㄕˋ-ㄧㄝˇ 寬闊-的-是-也
promote-over-single-syllables 視野 ㄕˋ-ㄧㄝˇ
assert ㄎㄨㄢ-ㄎㄨㄛˋ-ㄉㄜ˙-ㄕˋ-ㄧㄝˇ 寬闊-的-視野

# 「不到」的「不」讀為二聲,但四聲的語音干擾了更常用的「步道」
before ㄒㄧㄥˊ-ㄖㄣˊ-ㄅㄨˋ-ㄉㄠˋ 行人-不-到
promote-over-single-syllables 步道 ㄅㄨˋ-ㄉㄠˋ
assert ㄒㄧㄥˊ-ㄖㄣˊ-ㄅㄨˋ-ㄉㄠˋ 行人-步道

before ㄗˋ-ㄏㄨㄟˋ-ㄓㄥˇ-ㄌㄧˇ 自-會-整理
before ㄗㄥ-ㄑㄧㄤˊ-ㄧㄥ-ㄨㄣˊ-ㄗˋ-ㄏㄨㄟˋ 增強-英文字-會
promote-over-single-syllables 字彙 ㄗˋ-ㄏㄨㄟˋ
# 增加「字彙」的問題是,這個詞其實是斷在「英文字」

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

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

before ㄓㄜˋ-ㄉㄟˇ-ㄕˋ-ㄕˋ-ㄘㄞˊ-ㄓ-ㄉㄠˋ 這-得-是-是-才-知道
promote-over-single-syllables 試試 ㄕˋ-ㄕˋ
assert ㄓㄜˋ-ㄉㄟˇ-ㄕˋ-ㄕˋ-ㄘㄞˊ-ㄓ-ㄉㄠˋ 這-得-試試-才-知道
before ㄧㄡˇ-ㄕˋ-ㄓㄠˇ-ㄨㄛˇ 有-是-找-我
promote-over-single-syllables 有事 ㄧㄡˇ-ㄕˋ
assert ㄧㄡˇ-ㄕˋ-ㄓㄠˇ-ㄨㄛˇ 有事-找-我

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

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

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

before ㄓㄨㄣˇ-ㄅㄟˋ-ㄇㄧㄢˋ-ㄕˋ-ㄘㄞˊ-ㄓ-ㄉㄠˋ-ㄑㄧㄡˊ-ㄓˊ-ㄅㄨˊ-ㄧˋ 準備-面-是-才-知道-求職-不易
promote-over-single-syllables 面試 ㄇㄧㄢˋ-ㄕˋ
before ㄓㄨㄣˇ-ㄅㄟˋ-ㄇㄧㄢˋ-ㄕˋ-ㄘㄞˊ-ㄓ-ㄉㄠˋ-ㄑㄧㄡˊ-ㄓˊ-ㄅㄨˊ-ㄧˋ 準備-面試-才-知道-求職-不易
2 changes: 1 addition & 1 deletion Source/Data/curation/builders/frequency_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ def main():
phrases[k] = phrases[k] - phrases[v]

for k in phrases:
norm += fscale ** (len(k) / 3 - 1) * phrases[k]
norm += fscale ** (len(k) - 1) * phrases[k]

try:
handle = open('PhraseFreq.txt', "w")
Expand Down
Loading