some pseudo code of dim
zi -- 一个汉字, 或者是一个输入法中的字, 比入 Wang
entry -- 连在一起的两个 zi 的词, 比如前面一句中的 ``在一,'' 有可能是随机
的从 word_chain 中检出来的.
word_chian -- 一列 zi, 有可能就是一个句子, 或者是分断好了的一串拼音, 比
如 Jiang,Ze,Ming,Dai,Yan,Jing; 也有可能是待填空的句子, 比如 张__是__部长
dict -- 这里面有很多 entry, 每个 entry 后面带上好多 word_chain.
从 word_chain 中学习新的 word_chain
learn_word_chain(word_chain)
while (entry=pick_next_most_possible_entry(word_chain)) ***
while (cmp=pick_next_most_possible_word_chain(entry))
cmp_and_learn(word_chain,cmp);
break_at_random_chances;
break_at_random_chances;
把一个拼音的 word_chain 转化成汉字的 word_chain
guess_word_chain(word_chain)
while (entry=pick_next_most_possible_entry(word_chain)) ***
while (cmp=pick_next_most_possible_word_chain(entry))
score_amgic();
result=cmp_and_guess_segment(word_chain,cmp);
add_result_to_tmp_memory(result);
break_at_nearly_random_chances;
break_at_nearly_random_chances;
result=best_result_from_tmp_memory;
*** 在 *** 处, 可以 launch 一个 thread 来做.
cmp_and_learn(word_chain,cmp)
cmp_magic();
count_hit_points();
cmp_and_guess_segment(word_chain,cmp)
cmp_magic();
score_magic();
cmp_magic()
如果兴趣在汉字上,就比较汉字;
如果兴趣在拼音上,就比较拼音;
类似于 Unix 命令 diff/patch 的算法:
ABC123DEF, GHI123JKL => __123__, ABC, DEF, GHI, JKL
ABC123DEF, __123__ => ABC, DEF, __123__
ABCXYDEF, 123XY456 => score_entry(XY), ABC, DEF, 123, 456
更复杂的情况, 再论.
score_magic()
减 若干分, per entry, 表示多翻一次字典, 累啊
加 若干分, per __XXX__
其它部分, 只要挑 hits_number 最高的就可以, hits_number=score.
forget_magic()
...
告诉我你们的意见.谢谢!
--
Personal Homepage ....................... http://www.zhaoway.com
Debian Chines Input Method .......... http://dim.sourceforge.net
Reply to: