cht電腦資訊gcin
adm Find login register

有關「預選詞」清單的問題

winlin
1 有關「預選詞」清單的問題
Promote 0 Bookmark 02013-11-17quote  

小弟自訂了很多「很長又類似」的預選詞
每個詞大約15個字或稍少,
這些詞可能前7個字都一樣,第8個字開始才有些不同,
有點類似下面這樣:

  • 我覺得某些自訂的預選詞實在很好用
  • 我覺得某些自訂的名詞實在很好看
  • 我覺得某些自訂的產品很有創意

這類的自訂預選詞當中,有些會在打字打3-4個字就會出現,
但是有些自訂詞卻要打很長到第7-8個字才會出現,例如:

我要打完「我覺得某些自訂的」,才會出現下面這2個預選詞

  • 我覺得某些自訂的名詞實在很好看
  • 我覺得某些自訂的產品很有創意

這跟之前不太一樣,之前我大概打到「我覺得」之後就會出現上述預選詞了,不必打到第7-8個字。

我猜測應該是這個2.8.2的新功能造成的:

- 預選詞出現的次數變多&更準確了

不知道eliu兄能否告知小弟這個新功能是gcin source中的哪個檔案,
小弟想置換成前一版的重編看看問題是否還在。

感謝~

eliu
2
Promote 0 Bookmark 02013-11-17quote  

可以改 tsin-scan.cpp。

改成長的排前面。之前用的心得是短的放前面會比較好用,因為第一次使用 gcin 時,沒有使用次數的資料。一般來說,短的詞使用次數會比較高。

 

static int qcmp_pre_sel_usecount(const void *aa, const void *bb)
{
PRE_SEL *a = (PRE_SEL *) aa;
PRE_SEL *b = (PRE_SEL *) bb;

int d = b->usecount - a->usecount;

if (d != 0)
return d;

#if 0
return a->len - b->len; // shorter first
#e
return b->len - a->len; // longer first
#endif 

}

edited: 1
winlin
3
Promote 0 Bookmark 02013-11-17quote  

感謝eliu兄協助,
重編之後我發現特定某些「自訂詞」還是無法出現在清單中,
一定要打到第7-8個字之後才會出現,實在非常奇怪!
查了一下詞庫之後,發現詞庫上有些問題,待會小弟會回報這個問題,
但是當前我需要先快速處理這個問題,
請問eliu兄用文字編輯器自行修改自訂預選詞的話,是要編輯~/.gcin中哪個檔案?
編輯完後要執行什麼指令update詞庫?
感謝~

eliu
4
Promote 0 Bookmark 02013-11-17quote  
winlin
5
Promote 0 Bookmark 02013-11-17quote  

經過測試,我終於弄懂了為什麼有些很長的預選詞會無法出現了,
重複步驟如下:

(1)mv ~.gcin gcin-bak

(2)重新啟動gcin,切換到「詞音」

(3)先用詞音分別加入這些詞(把游標移到緩衝區最前面再按shift+enter):

我覺得某些自訂的預選詞實在很好用
我覺得某些自訂的預選詞實在很好看
我覺得某些自訂的產品實在很有創意

(4)切換到五四三倉頡,隨便打幾個字(例如:oir grc),讓五四三倉頡生成詞庫

(5)繼續用五四三倉頡,拆下列的碼:

hqi hbu hoi tmd ypmm hbu yrmn hai h

eliu兄應可發現畫面會長得像下面這樣:

「我覺得某些自訂的產品實在很有創意」這個詞要打到那段拆碼最後那個「h」時才會出現,

這個就是我所遇到的問題!

為什麼會這樣呢?
我猜測應該是因為詞音詞庫裡「一些很長的自訂詞」轉成gtab詞庫時,
由於五四三倉頡同一字的拆碼方式可能有3種,
例如:「覺」在五四三倉頡中的拆法有:

  • hbbuu
  • hbbu
  • hbu

這麼一來,若自訂詞有16個字,假設每個字都有3種拆法,
那這個自訂詞到五四三倉頡詞庫時,就會有3x3x3x3x3x3x3x3x3x3x3x3x3x3x3x3種組合?
目前的預選詞顯示設計似乎會因為組合太多而忽略比較後面的詞,
所以「我覺得某些自訂的產品實在很有創意」這句話就要打到很後面的字才會被挑出來放到預選詞清單裡。
我想這就是我遇到的問題。

不知道eliu兄對此是否有什麼建議或看法?

感謝~

eliu
6
Promote 0 Bookmark 02013-11-17quote  

cht電腦資訊gcin
adm Find login register
views:15067