Tuesday, March 25, 2008

中文搜尋日久見人性?

相信大家都有在電腦上使用搜尋功能的經驗,不管是 Google、Yahoo、或是應用軟體內裡的搜尋功能。一般最簡單搜尋方式的不外乎是輸入一個詞,然後如果網路上或文件裡出現一模一樣的詞,就會被找到。不過有些搜尋功能不止是這樣,而是會對搜尋條件與結果做多一點的干預。Mac OS X 10.5 Leopard 的中文搜尋就是這樣。

Leopard 有一個新的「tokenization」機制,可以把一向連在一起的中文字做某種的分隔。在蘋果網站的 Leopard 新功能介紹中就說到,10.5 裡增加了新的中文「tokenizer」,它會根據中文字之間的關係與意義,聰明地這些字分割開來,以呈現關聯性最高的搜尋結果。

Tokenization 就是把一連串的字元切開,變成一個個有作用的單位,例如在處理中文時,語言中的「詞」(word) 就是一個很好用的單位,只是在電腦的處理上,這些 token 不一定會跟真實語言中的單位完全吻合,而通常會是對程式的目的有用或有幫助的單位。例如「美國總統候選人」只是一串連續的字元,對程式來說由於沒有其他資訊,可能只能做最基本的搜尋,但經過 tokenization 後可能會分成「美國 總統 候選人」之類的,電腦認得這些單位後,就有機會可以呈現更好的搜尋結果。假如使用者用「共和黨候選人」當關鍵字,而這幾個字元也被切成「共和黨 候選人」的話,則「美國總統候選人」這句話就可以被找出來而呈現在搜尋結果裡,因為兩者都有「候選人」,當然由於「共和黨」一詞未出現,所以其關聯性可以被定得低一點。 假設現在有「什麼時候選人類學教科書?」這句話,它雖然表面上有「候選人」三個字,但如果被切成「什麼 時候 選 人類學 教科書 ?」,那麼在搜尋時就可能與「美國總統候選人」產生不了很大的關聯。

現在用 Mac OS X 10.5 底下的 Mail.app 來做搜尋會發現,用「垃圾郵件」、「垃圾」、「郵件」當作搜尋關鍵字,都可以找到內含「垃圾郵件」的信件,但是如果輸入「圾郵」來搜尋,照很多人的習慣會以為也可以搜尋到「垃圾郵件」,但事實上可能會搜尋不到東西。用 Spotlight 來搜尋也會有這樣的結果。此外,Google 也有類似的效果,例如搜尋「統計報表」,會發現有些只出現「統計」的、只出現「報表」的、或是「統計」與「報表」兩者都出現但分開出現在不同位置的網頁,也被搜尋出來。

這種做法會使搜尋有機會更貼近使用者的需求,不過對於有些已經習慣傳統搜尋的電腦玩家來說,可能會覺得有點囉嗦。在使用 Google 做搜尋時, 若使用者不要搜尋引擎這麼雞婆,可以用雙引號加在關鍵字上,例如打入 "共和黨候選人" ,就只有那些包含這六個字而且這六個字照關鍵字的方式一起出現的網頁才會被搜尋出來了。

但 Leopard 的搜尋有點奇怪, 若一篇文件只出現「報表」而沒出現「統計」,那麼用「統計報表」當關鍵字還是搜尋不到該文件的,不知道是不是搜尋條件本身不會被切開的關係。另外用「圾郵」一律找不出「垃圾郵件」四字,這對某些人來說會有點困惑,如果這時還是可以把「垃圾郵件」找出來,只是關聯度較低的話,也許會比較好用。像我自己在 Mail.app 中用「報表」兩字進行搜尋,竟會找不到標題為「垃圾郵件日報表」的信件,並不符合我的預期。顯然, 搜尋結果是否能讓使用者感到滿意,和 tokenization 的做法有很大的關係。

Leopard 的中文搜尋算是有新意,Google 甚至在搜尋的過程中不斷學習,似乎都是想更接近人性,但搜尋機制改變了,人似乎也要改變自己搜尋方式才能得到最好的結果,Leopard 大概就是一個例子吧。

本文同步刊登於符號工作站

Monday, February 25, 2008

更新了那個有農曆的萬年曆

國曆+農曆的萬年曆 widget 加入了新功能,這次主要是可設定幾種不同的背景顏色,也可以調整星期排列的方式。要調整時,只要按右下角的 i 字樣把它翻面,就可以設定了。其實在這一版裡面還有一些使用者需求沒到能照顧到,不過,就慢慢來吧,希望下次更新時還能更進步。 當然,若覺得這一版還有任何問題的話,也歡迎不吝指教。

若需要關於這個 widget 的其他細節,可參考之前的這篇文章:做了一個有農曆的萬年曆。要下載的話就按這裡吧。

至於 Google 小工具則是未能更新,先說聲抱歉了。 :P

本文同步刊登於符號工作站

Sunday, February 3, 2008

Mac OS X 語文處理的幾個好與壞

這裡有一些與 Mac OS X 語文處理有關的小發現,有的在 10.4 就有了,也許有很多人已經知道,只是本人比較笨而一直沒有注意到,有的則是在10.5 (Leopard) 出現的問題,也一起記在這裡。

  • Big 5 編碼提供了一些英數字的全形符號,不過這全形與半形的問題有時還真是會造成困擾,例如 1 與 1 看起來很像,但卻是兩個不同的字元。還好,在某些需要輸入數字的 Mac 軟體中,即使輸入的是中文的全形數字,也可以被認得為正常的數字。例如 Dashboard 裡的單位轉換 widget,若是在公里轉換為公尺的時候若輸入全形的「10」(公里),它也會正常地轉換為 10,000 公尺。在 Mail.app 的搜尋欄位裡輸入全形的「1234」,也可以找到包含 1234(半形)這個數字的郵件,打入全形的「macbook」也可以找到包含半形 MacBook 的郵件,算是挺人性的。

  • 用 control + delete 可以刪掉字母上的附加符號。例如在「文字編輯」(TextEdit) 中按 option + e 再單獨按 e,會輸入一個 é,此時如果按下 control + delete,則只會刪掉 e 頭上的那一撇,但不會把 e 本身刪掉。

  • 到系統偏好設定 > 國際設定 > 格式,設定不同的地區,會影響 Mac OS X 內建月曆 widget 的星期排列順序,例如我一開始是設成 English (Taiwan),結果月曆 widget 是從星期一開始排到星期日,如果選擇英國英語,也是這麼排列,但如果選的是美國英語,則是從星期日排到星期六。隨附的 iCal 軟體也會受此影響。我個人是比較喜歡從星期一到星期日的排法。

  • 我們之前提過 VoiceOver Utilities 可以讓使用者自行設定某些詞要怎麼念,然後系統在朗讀英文時就會照設定的方式念。在 10.4 時,系統預設「GIF」要念成 jiff,不過很有趣地,到了 10.5「GIF」的念法被改成 giff,也就是 g 的發音從 /dʒ/ 變成了 /g/。英文維基百科說某些英文字典把兩種發音並列,算是兩種都可以,不過使用 Mac OS X 內建的牛津美語字典則只列出 /dʒ/ 的版本。


  • 在新版 Safari 中,網頁中的粗體中文變得相當不清楚。
    中文字體到了 Leopard 還是幾乎沒改變,所以過去說的沒行距、沒粗細、字體種類少等問題都還是一樣、字形品質本身當然也沒有有什麼改善。

  • 這個問題和上一個有點關係。以前的 Safari 在中文介面下,若也是用預設中文字體顯示網頁文字, 就沒辦法顯示粗體,若用日文字體的話就可以,因為日文字體之內已包含幾種不同粗細等級。不過在 Safari 3 裡面,網頁中的中文字體也可顯示為粗體了。這看起來是一種改進,問題是中文字體本身仍然沒有提供不同等級的粗細,所以網頁中的粗體其實是硬把原來的字形加粗而成,其品質當然就有點糟糕了。由於本來的中文黑體已經不太細,再硬加粗就有糊成一團的感覺,各中文 Mac 討論區也的確有不少人在抱怨。根本的解決之道,就是蘋果應該提供精緻而有不同粗細的中文字體。

先說到這兒囉。

本文同步刊登於符號工作站

Thursday, December 20, 2007

做了一個有農曆的萬年曆

我之前做了一個 Google 小工具 (gadget),是一個結合國曆跟農曆的萬年曆,除了兩種曆法的日期對照外,也可以顯示農曆節日與節氣, 也有干支紀年以及生肖。既然做了這個 gadget,我就順勢把它移植到了 Mac OS X 上,成為一個 Dashboard widget,如果有人覺得用得上的話,可以在此下載。 (已做了一點修改,Mac OS X 10.4 與 10.5 皆適用)

它的用法是:

  • 點左箭頭可顯示上一個月,點右箭頭可顯示下一個月。
  • 點左右箭頭之間文字,可回到目前的月份。
  • 將滑鼠游標移到日期數字上,可顯示農曆日期、節日、與節氣。
  • 按鍵盤的上鍵或下鍵可顯示前一年與後一年,按左或右鍵則是顯示上一個月或下一個月,按 home 可回到目前的月份。

農曆日期與節氣的計算,我是採用林洵賢先生的程式,可說是相當的準確,在此對他表示感謝。不過照例還是得聲明一下,若這個 widget 裡面的資訊有任何錯誤,請以政府公布的為準。

如果你沒有 Mac,也可以試試我之前做的 Google 小工具,不過外觀不一樣,而且沒有鍵盤的控制方式,所以 Mac 版應該是好用一點。如果大家有什麼意見,不妨留言讓我知道。

本文同步刊登於符號工作站

Friday, November 23, 2007

Leopard 的倉頡輸入法

Leopard 上市將近一個月,我也用了大概兩個禮拜,對於 Leopard 的倉頡輸入,我目前觀察到以下的狀況:

  1. 在過去,第三代與第五代倉頡混在一起,在 Leopard 中,則似乎只能用第五代了。這對我這個熟悉第三代的人來說有點不習慣,不過我還願意適應。現在「黃」這個字只能用「廿中田金」打出,而不能用「廿一田金」打出了,但是很奇怪的,「橫」這個字除了可用「木廿中金」打出,卻也可以用「木廿一金」打出,算是挺莫名其妙的。既然要統一用第五代,就全部改成第五代,怎麼會還留著部份別的拆碼方式,顯然這部份是沒有做好的。
  2. 雖然改成第五代倉頡,不過很多重複碼的字還是可以加X在前面打出。例如「濱」與「演」的碼都是「水十一金」,在 Leopard 中用「水十一金」時選字的視窗會跳出讓人在「濱」與「演」之中選擇一個,若不選則是「濱」,但用「X水十一金」則可打出「演」。但是還是有些重複碼字的第二個字無法加「X」打出,例如「宋」與「未」的碼相同,但「X十木」打不出字來。所以,這部份作法還是跟以前一樣亂七八糟,根本不統一。
  3. 有一項改進是,在 Tiger 中遇到重複碼而跳出選字視窗時,有的字非要按數字鍵選字不可,有的字卻在打下一個字時就會自動選取第一個字,讓人無所適從。Leopard 中的倉頡則比較統一,目前我所碰到的重複碼,都可以在打下一字時自動選取第一個字。
  4. Mac 的倉頡可以打出一一些外字集裡才有的香港字、異體字、或簡體字,不過現在多了一個選項,可以將此功能關閉,這樣就只會打出 Big5 收錄的字,這是相當不錯的改進。不過如果在 Leopard 中開啟此功能,雖然是列出了外字,但卻沒有用符號標示出外字以警告使用者,這個在 Tiger 裡有的功能不知為何不見了。
  5. 在倉頡輸入法狀態下,過去按空白鍵打出的是半形的空白,但如今在 Leopard 中打出的變成全形的空白。雖然這樣跟其他符號比較一致,但是平常我們打全形空白的機會遠少於半形空白,現在必須切回英文或按大寫鍵才能打出半形空白,實在相當地不方便。
  6. 過去的倉頡打 ~ 會出現「符」字,並讓使用者按其他鍵來輸入符號。在 Leopard 中打 ~ 仍會出現「符」字,但根本無法輸入符號,不知道按 ~ 出現「符」的意義何在?而且按兩次 ~ 不能打出全形的「~」,卻出現「}」,也是相當莫名其妙。
  7. 這是我的感覺:Leopard 倉頡的速度似乎比 Tiger 還要遲鈍,常常打完一組碼後還要等一下,才會看到字出現。
  8. 「並」字在 Leopard 中要用「廿廿一」才能打出,而不是「廿廿金」。第三代與第五代倉頡中,「並」都是「廿廿金」,不太清楚「廿廿一」是從何而來。而且「碰」這個字在 Leopard 中仍是「一口廿廿金」而非「一口廿廿一」。又是一個莫名其妙的問題。

總體看來,Leopard 的倉頡是有些改進,但仍有不少問題。Leopard 的上市距 Tiger 足足兩年多,問題的改善卻不是那麼顯著,這是令人失望的。

本文同步刊登於符號工作站

Thursday, November 8, 2007

iPod touch 不懂藏文

iPod touch 的 Safari 上的藏文我近日也弄來了一部 iPod touch。雖然之前看過許多 iPod touch 的介紹,但親自操作才感覺到它的神奇。由於 iPod touch 可算是一部沒有手機通訊功能的 iPhone,所以藉著它我也可以想像 iPhone 的迷人之處。目前還有人在為 iPhone 與 iPod touch 的中文輸入法努力,而我倒是想試試藏文的顯示能力,所以用 iPod touch 內建的 Safari 瀏覽器打開含有藏文的網頁,結果藏文都變成方框而無法正常顯示。

如果 iPhone 或 iPod touch 的系統有完整 的 Unicode 支援,再加上它與 Mac OS X 類似的系統結構,那應該只要裝上適當的字體,就應該能顯示藏文了吧?抱著這種想法,我試著將一個藏文字體裝到 iPod touch 的 /Applications/Library/Fonts 目錄裡。當然,要能夠存取 iPod touch 裡的檔案,還是得「越獄」一下,然後安裝 BSD Subsystem 與 OpenSSH。安裝完成後我將 Unicode 藏文字體放進去,再重新開機,沒想到那些方框還是沒變成藏文。

後來我發現,在 Fonts 目錄下還有一個 Cache 目錄,打開一看,裡面竟然有 STHeiti.ttf 這樣的簡體中文字形,看來和 Mac OS X 裡的是一樣的,拿出來測試後,也發現裡面有藏文字形。這樣看來,iPod touch 也算是內建藏文字體了。所以,iPod touch 不能顯示藏文,似乎不是因為缺少字體,而是因為它本身就未能完全支援所有的語文。只是我不太懂的是,為何 STHeiti.ttf 只出現在 Cache 目錄之中,卻沒有直接出現在 Fonts 目錄之下。

看來要再努力一下,才能讓 iPod touch 顯示藏文了。倒是新的 Mac OS X 10.5 (Leopard),已經能在 Safari 中顯示正常的藏文了。希望 iPhone 與 iPod touch 的文字顯示和輸入法能再加油。

寫到這裡,也藉機談談 iPod touch 本身吧。雖然 iPod touch 比起任何其他 iPod 都要先進,有多重觸控介面、有偵測機體傾斜方向的 accelerometer(可做出這樣的應用),還可無線上網,但其他 iPod 上已經出現很久的筆記、歌詞顯示等簡單而基本的功能,竟然都未出現在 iPod touch 上。在 iPhone 上原來有記事本,但到了 iPod touch 上就被蘋果拿掉了,而且 iPod 原來的筆記功能可加入歌曲的連結,在看文字時按下連結,即可播放某首音樂或聲音檔,但即使是 iPhone 的記事本,似乎也沒有這樣的功能。至於在 iTunes 存好的歌詞無法顯示,也讓人有退步的感覺。還有人會抱怨的,就是 iPod touch 不像其他 iPod 一樣附有遊戲。不過 iPod touch 上真正的操控按鈕只有一個,不像其他 iPod 上有幾個操控按鍵和轉盤,也許 iPod 上的遊戲有很多還沒辦法直接移植到 iPod touch 上運作。總之, iPod touch 拿掉了一些原來 iPhone 具有的應用程式,有些 iPod 舊功能卻也沒出現,難免讓人覺得有所欠缺。

另外,其他的 iPod 都可當外接硬碟或儲存裝置使用,而 iPod touch 具有 8GB 或 16GB 空間,卻不能直接用來儲存檔案資料,也使它的效用打了折扣。當然 iPod touch 與 iPhone 的介面才推出不久,而且目前蘋果對於系統安全性似乎還有些顧慮。未來它顯然會繼續更新,而且等到明年二月蘋果開放 iPhone 原生軟體的開發,狀況應該會大不相同了。

本文同步刊登於符號工作站

Wednesday, October 10, 2007

星光發音學:ㄉㄊ篇



Mandarin t.
中文的t

English t。超級星光大道常見的發音法
英語的t

最近歌唱比賽節目大行其道 ,其中某個最受歡迎的節目,有個客座評審說到,有人在唱「天」這個字時有洋腔洋調的問題。

不知道她想說的是不是 t(或ㄉ、ㄊ)這類音的發音方式。不管是不是,我們都還是可以在這裡藉機討論一下 t 的問題。英語裡 t 的發音位置與台灣人所發的ㄉ、ㄊ的確稍有不同。大致上,這些音是舌尖音,發音時是把舌尖頂到門牙後方到其上方的牙齦之間,只是舌尖放上面一點還是下面一點,就造成了英語發音與台灣人發音之間的差異。英語的 t,舌尖頂住位置比較「上」或比較「後」,幾乎都在牙齦的地方,而台灣人的發音通常比較靠近牙齒,所以也比較下面一點。 (請參考右邊的示意圖,請注意舌尖位置, 畫得不好請見諒。XD)

現在的確很多人在唱中文歌時,都會把 t(ㄉ)與 th(ㄊ)用比較後的部位發音,在比賽節目中就有一大票,已經成了一種不可忽視的現象。他們也許真的是有意無意間學習了英語的腔調,不知道歌唱上的發音是否有一天也會影響口語的發音,如果這是這樣,那倒是個很有趣的事情。不過既然有人對這類問題提出批評了,我想歌手雖然不一定就得要改掉或不改掉這個腔調,但至少有了一個機會去思考發音方式的問題,進而讓自己表現得更好更自然。

本文同步刊登於符號工作站