Kuromoji 形態素解析を理解する

2016年03月03日(編集2016年03月03日)
このエントリーをはてなブックマークに追加

形態素解析を理解する。
環境はkuromoji, javaはoracle jdkを利用します。

環境

  • Windows8.1
  • oracle jdk version 1.8.0_71
  • Eclipse version Luna Service Release 2 (4.4.2)
  • kuromoji version 0.7.7

内容

初心者向け

形態素解析とは

文章から、文法や単語の品詞等の情報にもとづき、形態素(意味を持つ最小の単位)に分解し、品詞等を判別する作業のことです。

例文

寿司が食べたい。

形態素解析結果

文字列 品詞
寿司 名詞
助詞
食べ 動詞
たい 助動詞
記号
上記の例は「kuromoji」を使用した。

形態素解析エンジンの種類

様々な種類の形態素解析エンジンが開発されています。日本語の形態素解析エンジンで、主要なのは以下の2つになります。

  • Kuromoji
  • Mecab

SolrやElasticsearchを利用して日本語の形態素解析をする場合は、Kuromojiを利用するのが一般的となっています。

Kuromojiの理解

形態素解析は用語が難しいので、実際にコードを実装するのが一番理解が深まります。

ここでは、Eclipseを使ってkuromojiプロジェクトを作成して形態素解析を理解していきます。

プロジェクト作成

Eclipseでmavenプロジェクトを作成します。

Mavenプロジェクト作成

作成したプロジェクトのpom.xmlファイルを編集します。 *赤文字が追加箇所です。

{project_folder}/src/main/java/App.java

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>kuromoji</groupId>
  <artifactId>kuromoji</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>kuromoji</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <repositories>
    <repository>
      <id>Atilika Open Source repository</id>
      <url>http://www.atilika.org/nexus/content/repositories/atilika</url>
    </repository>
  </repositories>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.atilika.kuromoji</groupId>
      <artifactId>kuromoji</artifactId>
      <version>0.7.7</version>
      <type>jar</type>
      <scope>compile</scope>
    </dependency>
  </dependencies>

</project>
        
maven install

Eclipseでmaven installを実行します。

プロジェクト右クリック → Run As → Maven installとなる

プロジェクトにkuromojiのライブラリがinstallされていることを確認します。

Maven Dependenciesでライブラリが確認できる。

これでKuromojiの利用できるプロジェクトが完成しました。
実際に実装していきましょう。

kuromojiを実行

プロジェクトのmainメソッドに以下を実装します。

{project_folder}/src/main/java/App.java

public class App 
{
    public static void main( String[] args )
    {
        Tokenizer tokenizer = Tokenizer.builder().build();
        for (Token token : tokenizer.tokenize("寿司が食べたい。")) {
          System.out.println(token.getSurfaceForm() + "	" + token.getAllFeatures());
        }
    }
}
        

Run As  →  Java Applicationでコードを実行します。

Eclipse Console

寿司	名詞,一般,*,*,*,*,寿司,スシ,スシ
が	助詞,格助詞,一般,*,*,*,が,ガ,ガ
食べ	動詞,自立,*,*,一段,連用形,食べる,タベ,タベ
たい	助動詞,*,*,*,特殊・タイ,基本形,たい,タイ,タイ
。	記号,句点,*,*,*,*,。,。,。
        

形態素に分解されました。

ユーザ辞書を利用する

タグ検索で調べてみよう

Kuromoji