Kuromoji 工具介紹文


本文由邱郁婷編輯

本文摘自Atilika的〈Kuromoji〉,由邱郁婷統整後撰文。


Kuromoji介紹

Kuromoji為一開源的日語形態分析器,以程式語言Java寫成,現隸屬於Apache Software Foundation,並為Apache Lucene及Apache Solr 3.6 & 4.0提供日語支援;若想單獨使用Kuromoji,仍能透過GitHub下載。

Kuromoji的使用

Kuromoji具有標準的形態分析功能,詳細如下:

一、 文本切割

將文本切割成單字(語素)。

二、 詞性標記(Part-of-speech tagging)

將字詞依詞性分類,如名詞、動詞、副詞、形容詞等。

三、 按屈折變化形式歸類(Lemmatization)

找出屈折變化後之動詞及形容詞的字典形式(Dictionary form)。

四、 讀數(Reading)

提取文本中的漢字。

Kuromoji十分適合用於搜索,使用者可透過字詞拆分來確保搜索時精確地找出複合名詞。舉例來說,大多數的分析器無法以「機場」一詞查詢到「關西國際機場」,因為一般的分析器會將「關西國際機場」視為是一個字詞,而非由「關西」、「國際」、「機場」三個單字組成的複合名詞,同樣的問題亦出現於片假名的複合字詞,例如「軟體工程師(シニアソフトウェアエンジニア,Senior Software Engineer)」;然而,Kuromoji能做到這點,其具有不同的文本切割模式,詳細如下:

一、 普通模式:一般的文本切割。

二、 搜尋模式:透過啟發法(Heuristic)進行額外的文本切割以進行更有效率的搜索。

三、 擴充模式:與搜尋模式相似,不過此模式亦會對未知字詞進行單個字的拆解(Unigram)。(實驗階段)

如同開頭所述,Kuromoji為Apache Lucene及Apache Solr 3.6 & 4.0提供了日語支援,其預設配置具有以下功能:

一、 移除停用詞與停用標籤 移除助詞與常用詞(Common Words)以避免出現排序偏差(Rank-skew)。

二、 字母全半形統一

將全形的羅馬字母轉換為半形;半形的假名轉換為全形。

三、 按屈折變化形式歸類

將屈折變化後之動詞及形容詞還原成原形。

除了上述內容之外,Kuromoji亦有許多實用的標記屬性功能(Token Attributes)可用於讀數、羅馬化讀數及詞類等。此外, Kuromoji的索引(Index)中亦保留了完整的複合單字,並將其視為同義字詞,這是為了能夠拆分複合單字,並達到精確的搜尋。

Kuromoji亦可與Maven一起使用,如欲進行此操作,需先將Kuromoji的儲存庫寫入欲使用之專案模型(Pom.xml)的之中,如:

Atilika Open Source repository http://www.atilika.org/nexus/content/repositories/atilika

接著再將Kuromoji座標加至當中,如:

org.atilika.kuromoji kuromoji 0.7.7 jar compile

完成上述步驟後,即可於自己的專案計畫中使用Kuromoji。