程式者的胡言亂語
回應jocosn君關於「從搜尋引擎的查詢條件建構關鍵詞」一文的回應:
首先,長島冰茶是一種酒 :-) 每日三杯長島冰茶,有益身心。依照Wikipedia的說法:
長島冰茶英文名為<Long Island Iced Tea>,雖取名冰茶,卻是在沒有使用半滴紅茶的情況下,調製出具有紅茶色澤與口味的美味雞尾酒。調製的主要成份為伏特加,氈酒和朗姆酒。喝過長島冰茶的人都知道,它絕對是無庸置疑的烈酒。
在jocosn的回應中提到:
如何從使用者回饋進來的查詢條件中自動的建詞?像是如果有人輸入:「紅酒都是用軟木塞塞住瓶口」,如何斷出詞彙(紅酒、軟木塞、塞住、瓶口)?可以在沒有分隔字元的一組字中不用詞庫就斷詞是怎麼辦到的?這居然喝兩杯咖啡就解出來,真是太神了!
如果是使用一堆複合關鍵字搜尋,又該怎麼選擇重要關鍵字納入標籤雲中?像是有人輸入查詢「牙痛、java、思路受阻、錯誤PHP訊息」亂打一通,結果還是查到本網站,在做標籤雲時,勢必只納入 java 一詞作考量,如何踢掉另外幾個完全無關的搜尋關鍵字?
我的作法是這樣子的:
如果我們只是拿到「紅酒都是用軟木塞塞住瓶口」這句話一次,照我的方法是分不出來的,必須等到日後再出現「紅酒」、「軟木塞」、「塞住」、「瓶口」這些詞,我的機制才有可能把它們斷出來。
以這個例子為例,如果它只出現過一次,它是不會成為我認定的關鍵詞,因為我有設定一個門檻值,目前是1,日後還會再調高。而長句通常不會exactly的再出現一次,所以不會造成困擾。
我的方法的重點在於,如果「紅酒」在你的文章中的確是個重要的詞的話,日後肯定還會再有使用者用「紅酒」來查詢,這個時候我們就能知道「紅酒」的確是一個詞了。這是我認為從搜尋引擎來的查詢條件,和一般文本的文字在做斷詞時的很大不同。因為就如我所提到的,從搜尋引擎來的查詢條件多半都是查詢者已經適時的加以切割,就像這邊所提到的第二個例子:「牙痛、java、思路受阻、錯誤PHP訊息」,查詢者已經先用逗號做了一些分割,所以在這種情況下查詢反而能主動的告訴我們什麼是一個詞。我們要做的就只剩下過濾一些雜訊,例如這個例子裡「牙痛」。假設你的文章不巧出現「牙痛」,又很受搜尋引擎抬愛,在ranking時把你的網站設為基本分數高的網站,那麼當使用者搜尋「牙痛」時,就很容易因為「牙痛」而搜尋到你的網站。但對你網站的文章而言,「牙痛」並不是有意義的關鍵詞,它並不能代表你文章的特性。在這種情況下,「牙痛」就是一個干擾的雜訊,而我現在處理雜訊的方法就是利用門檻值的方式來過濾。倘若沒有足夠多的讀者,因為「牙痛」一詞來到你的網站,那麼「牙痛」就不致於成為關鍵詞。倘若有足夠多的讀者,因為「牙痛」一詞來到你的網站,那麼足以證明,對讀者而言,你的文章的確具備「牙痛」的特性,並且強度強大足夠吸引他們來閱讀(要吸引夠多的讀者在搜尋引擎所提供的長長列表中點擊你的網站,這恐怕還不是一件太容易的事)。
也許你預期「Java」才是代表你文章屬性的詞,這就像很多blog提供標籤的機制一樣,由撰寫者自己標記。但是我要強調我提的這種機制和標籤不同,標籤是由撰寫者主導,而這個機制是由讀者主導,它展現出來的是讀者的觀感,而非寫作者的觀感。
倘若有一天,真的證明了有許多讀者會因為「牙痛」造訪你的網站,你又怎麼說你的文章對「牙痛」的查詢者來說,沒有吸引力或代表性呢?
所以總的來講,我的機制就是讓使用者來告訴我什麼是詞,而且更重要的是,他們會告訴我這個詞是吸引他們來的原因,而這意謂著這個詞對文章本身的特質具備足夠的代表性。這樣子也算是Web 2.0的協同合作吧,呵呵。
Posted at 05:44下午 九月 21, 2006 by Chien-Hsing Wang in programming |
星期四 九月 21, 2006
