Dennis' Blog of Indiscriminate | I thought what I’d do was, I’d pretend I was one of those deaf-mutes

Archive for June 2007

Jun/07

12

心情依然未平復

過左幾日,依然被上星期件事影響。雖然控制得到,但忘記唔到。
唯有工作先至可以令到暫時完全忘記自己原來係唔開心,一但停下來第一件想到就是這件事。

被打到的地方,不是新傷,而是舊患,更加是死穴。幸好有人在 msn 關心一下我,雖然要在內心案件重演一次又一次,但那總比自己一個胡亂想像的好。不過,感看則每次都不一樣。語言真是係奇妙,不同的語言當中,都相似而不一樣的詞言/句子去形容不同的傷心。未經驗過,不會明白,但只需體會過一次,卻能清楚了解當中分野。
我并沒有失去甚麼,只是發現原來自己還沒有得到甚麼。
記憶中沒有增加痛苦回憶,卻喚醒起了種種更悲哀難過的過去。
感謝大家,今次我所得到的,比想得到而還沒有得到的更重要。那是無可改取代的經驗。

Hide

Jun/07

10

Apache Lucene 中文與英文分詞

Apache Lucene 是一個以 java 編寫(現在已有 .NET 版本), 具有高效率, 支持全文檢索的開源搜索引擎. 主要功能是對數據作索引及搜索,它與其他工具配合能處理 word, html, pdf, excel 的全文搜尋。

Lucene 提供了一個簡單確強大的應用程式介面,能夠做全文索引和搜尋,在 Java 裡 Lucene 是一個成熟的免費開放原始碼工具;就其本身而論,Lucene是現在並且是這幾年,最受歡迎的免費 java 資訊檢索程式庫。 人們經常提到資訊檢索程式庫,就像是搜尋引擎,但是不應該將資訊檢索程式庫與網搜索引擎相混淆。

Lucene @ wikipedia 有關 Lucene 的簡介,可以讀 車案 chedong 的文章 http://www.chedong.com/tech/lucene.html (簡體中文) 我就先跳過中文分詞的理論,直接深討在現實應用中會一定會發生多國語言的問題。 體、繁體、英文甚至多國語言在同一文件中同時出現 面對正式的,官方的文件和公司內部文件時是沒有問題的。 它們一般都不會把不同語言混合使用,會更多單一語言。 但是,在 Internet 等的公開場合呢?特別是夾在世界各國文化之間的香港。 "中式英文", "英式中文", 簡體、繁體、日文、英文混合也是很常見的現像。 單純的一個 "ChineseAnalyzer/CJKAnalyzer" 根本沒有用。 就算是比較官方的通告也是一樣,例如:公告以三種語言分別寫一次,放在同一文件內,而不是以連結方式轉換語言。 而在非官方場合,最可怕的情況,卻也是最常見的;就是留言版討論區的文化。 你不能事先知道被索引的文件會是甚麼語言的的。 對自動化的程式來說 Unicode 內文所用的語言是一個謎。 你可能想在統計字元或內碼方面著手。但事實上,實作字碼檢查時已經很麻煩了,再加上語言推算就更亂了,更何況我們根本沒有這方面的數據。算你有 google 一樣的海量數據,它經常還是會出錯。 選擇分詞引擎 雖然,你很想看到純英文文件時應用 StandardAnalyzer。體的文件用相應字典,繁體的文件用另一套字典。是,BIG5 也可能寫英文。 GBK 不但可寫英文,也可以寫繁體,甚至日文的。 Unicode 情況下,你甚至可能使用了日文漢字和簡體也不自覺。如果你參考別人的程式,一般都是把會應用到的 StandardAnalyzer 的名字寫死在原始碼/設定檔中,而不是依被讀的文件而自動更換的。 分詞字典應用建立和更新 如果只是單純使用 n-Gram 或 Bi-gram 的話,可能沒有這麻煩。 但根據字典分詞還是十分有吸引力的,它能提昇一定的準確性和減少索引檔的大小。 先說建立字典的方法,幸好兩岸也有人做常用詞的統計。幸苦一點自己找免費的,還是付錢買的也可以。 把它們合併,轉換成一個 "繁簡中文字典" 相對整體來說還是簡單的。 可是更新就是一個問題了~任由它不更新不是不可以,但網絡和語言都是活的。 而且,在更新後,你要重新為舊件建立新的索引,這比甚麼都要麻煩。 在香港,應該應用那一個 Analyzer 當你發覺 StandardAnalyzer 不太支持中文的時候,在 sandbox 中找到了 CJKAnalyzer。 可是事實上它們都是低能兒,寫得太過簡單了(相對 StandardAnalyzer)。 StandardAnalyzer 應該是用 javacc 生成的,自行胡亂改動不是一個好方法。 以前試過應用 StandardTokenizer,而單純在它不支持的中文 Token 組合再進行二次分詞,效果不錯。 這一篇文章其實是在數年前寫下的 Draft,最近整理 My Documents 時發現。反正有空,拿來修改一下之後就貼在這 Blog。

, , , , Hide

Jun/07

9

心如刀割

自己犯下的錯,令自己初次體會到心如刀割是甚麼一回事。

原來,那不是文彩的特別高的人想像出來的詞語。
那是一件簡單不過,清楚、深刻、 難忘、生不如死的一種悲傷感覺的最簡單最直接的名詞,而不是形容詞。

心如刀割,不是一下子刺或割的感覺,而像是有一把刀貼在心的表面。心每跳一下就痛一下,你沒法拿掉刀片,它就在你的體內,你更沒法停止你的心跳,甚至連呼吸都是痛的。

你只能任時間過去,任它割,等心的傷口迎合到刀片的形狀。傷口還在,刀還在,只是剛好割不到,就沒有那麼痛了。

Hide

Jun/07

6

不響的電話

個性內向,不喜歡與人接觸,認為會受到傷害。常常跟自己說:不要逃避!

像某個知名動畫的主角,不過這個應該是我;至少,到目前為止,這個還是真正的我。

就算是和其他人接觸多了,不代表我沒有受到傷害。只是,在表面裝作沒事的同時,任由內心在滴血。
希望這只是過渡期的情況吧;失敗感,孤單,沮喪,失落,孤獨,疏離感…它們最近襲擊我的次數和時間越來越多。不足一星期時間卻感到以往一年份的悲哀。或許,或許是我的過去實在過份空白,我不懂等如何應付它們。

有訴說的地方,唯有發洩係自己個 blog。

既然已經決定了,也向帶刺的前踏出了,只有快點適應,像抗體一樣得到免役力。

不付出犧牲,便得不到任何回報;如果要得到什麼,就必須付出同等代價。

最近比較懶,遲D我會寫返少少 Java 或者技術野的。

Hide

最最基本的,實用的,簡單的,極度平凡而合理的功能總是不會加到 JRE 當中。
可有可無的,花考的,繁復的,意想不到而令人驚喜的意想不到的功能卻總會在下一個版本出現。

好多人都想有但係等極都無嘅例子

  • Better AWT (舊版沒有 tray)
  • JVM uptime
  • System uptime
  • JVM Process ID
  • Child Process ID
  • Better OS Integration /Platform Optional Feature
  • SwingWorker (6.0)
  • 簡單的 IPC

唔係一般需要,係就係好正,但係唔係個個用得著,又幫唔到上面的需要

  • Swing
  • Script Engine
  • Change of Syntax
  • Java Web Start
  • Pack200

最後,有需要的人就會開始用D奇奇怪怪的方法去做 work around。例如:

  • JVM uptime / System uptime
    • 因為 currentTimeMillis 唔單止唔多準確,而且會因改 clock 而錯誤
    • 自己寫 JNI wrapper ,整 DLL/SO ,拿 system uptime.
  • JVM Process ID
    • 有人用 unix $$ 放入 properties,但係好重 OS dependences (windows 不能)
    • 有人用 create subprocess, 再叫個 subprocess return 個 ppid…
    • 有人又寫 JNI…..
  • Child Process ID
    • 有人走去用 external command list 曬所有 pid, 再段估
  • Better OS Integration /Platform Optional Feature
    • 簡單如 COPY FILE  沒有;OS 的 copy 是包括 copy security/secondary stream 和其他 meta data 的
    • Kill process
    • Window Docking 之類

, Hide

<< Latest posts

Theme Design by devolux.org