日本語形態素解析器SudachiをMacにインストールしてみた

- WorksApplicationsさんがSudachiという日本語形態素解析器を公開しているのでタイトルの通りMacにインストールしてみました
- 日本語形態素解析器とは日本語の文章や文字列から名詞や形容詞を抽出するものです
- 他に有名なものにMeCabやkuromojiなどがあります
 - MeCabと比べると正規化が出来るとのことです(詳しい対応表はGitHubのREADMEをご参照ください)
- 今回は自分の持っている環境であるMacにインストールしましたが、Javaで書かれているためbrewインストールの部分を変更すればWindowsでも可能かと思います

# 環境
- macOS Sierra
- RAM 16GB

# Sudachiのインストール
1. Javaのインストール
 - Mavenで管理されているリポジトリであるためJavaが必要になります
  - もうすでに入っている方は次に進んでください
 - 公式からjdkの最新版のdmgをダウンロードしてインストールしました

    ```sh
    $ java -version
    java version "1.8.0_144"
    ```

1. Git LFSのインストール
 - [Git Large File Storage](https://git-lfs.github.com/)
 - [homebrew](https://brew.sh/index_ja.html)がインストールされているなら`brew install git-lfs`が楽でいいかと思います

1. Mavenのインストール
 - `brew install maven`が楽でいいかと思います

    ```sh
    $ brew install maven
    $ mvn -version
    Apache Maven 3.5.0
    ```

1. Sudachiのコードをクローンして辞書をビルドする
 - GitHubのソースコードをクローンしてきて辞書をビルドします
 - 今回はSudachiのREADMEに書いてある通りビルドしたいと思います
  - 辞書をダウンロードするので有線でやった方がいいと思います（無線でやったら20分かかった）

    ```sh
    $ git clone https://github.com/WorksApplications/Sudachi.git
    $ cd Sudachi/
    $ mvn package
    ```

- このときGit LFSがインストールされていない場合は辞書がダウンロードされていないため、ビルドがコケます
 - その場合はまず、`git lfs pull`をやったあと`mvn package`をすることでビルド可能です

1. 作成されたjarファイルを実行
- `target`フォルダーを確認すると`sudachi-0.1-SNAPSHOT.jar`ができていますので早速実行

    ```sh
    $ java -jar target/sudachi-0.1-SNAPSHOT.jar
    Exception in thread "main" java.io.FileNotFoundException: system.dic 
    (No such file or directory)
	at java.io.FileInputStream.open0(Native Method)
	at java.io.FileInputStream.open(FileInputStream.java:195)
	at java.io.FileInputStream.<init>(FileInputStream.java:138)
	at java.io.FileInputStream.<init>(FileInputStream.java:93)
	at  
 com.worksap.nlp.sudachi.JapaneseDictionary.readSystemDictionary(JapaneseDictionary.java:91)
	at com.worksap.nlp.sudachi.JapaneseDictionary.<init>(JapaneseDictionary.java:56)
	at com.worksap.nlp.sudachi.JapaneseDictionary.<init>(JapaneseDictionary.java:48)
	at com.worksap.nlp.sudachi.DictionaryFactory.create(DictionaryFactory.java:34)
	at com.worksap.nlp.sudachi.SudachiCommandLine.main(SudachiCommandLine.java:155)
    ```

- エラー、どうやら`system.dic`というファイルがみつからないようです
 - **@matsuda_vla さんご教示いただきありがとうございました**
  - sudachi-0.1-SNAPSHOT.jarと同階層にできる`sudachi-0.1-SNAPSHOT-executable.zip`か`sudachi-0.1-SNAPSHOT-executable.tar.bz2`を解凍することで必要なファイルが含まれていました
  - unzipしてそのディレクトリに入って実行してみます
 
    ```
    $ unzip sudachi-0.1-SNAPSHOT-executable.zip
    Archive:  sudachi-0.1-SNAPSHOT-executable.zip
   creating: sudachi-0.1-SNAPSHOT/
  inflating: sudachi-0.1-SNAPSHOT/LICENSE-2.0.txt
   creating: sudachi-0.1-SNAPSHOT/licenses/
  inflating: sudachi-0.1-SNAPSHOT/licenses/javax.json-1.1.txt
  inflating: sudachi-0.1-SNAPSHOT/README.md
  inflating: sudachi-0.1-SNAPSHOT/javax.json-1.1.jar
  inflating: sudachi-0.1-SNAPSHOT/sudachi-0.1-SNAPSHOT.jar
  inflating: sudachi-0.1-SNAPSHOT/system.dic
  inflating: sudachi-0.1-SNAPSHOT/char.def
  inflating: sudachi-0.1-SNAPSHOT/unk.def

    $ cd sudachi-0.1-SNAPSHOT
    $ ls
LICENSE-2.0.txt  char.def            licenses                  system.dic
README.md        javax.json-1.1.jar  sudachi-0.1-SNAPSHOT.jar  unk.def
    $ java -jar sudachi-0.1-SNAPSHOT.jar
    コミュニケーション
コミュニケーション	名詞,普通名詞,サ変可能,*,*,*	コミュニケーション
EOS
コミニケーション
コミニケーション	名詞,普通名詞,サ変可能,*,*,*	コミュニケーション
EOS
シュミレーション
シュミレーション	名詞,普通名詞,サ変可能,*,*,*	シミュレーション
EOS
シミュレーション
シミュレーション	名詞,普通名詞,サ変可能,*,*,*	シミュレーション
EOS
```
- 動きました　表記揺れも修正できているようです

# 終わり
- インストールの手順について間違っている場合やもっとこうした方がいい情報は教えていただきたいです

  
# 参考
- [仕組みについてSlideShare](https://t.co/NXZ6h6GGyF)
- [SudachiのGitHubリポジトリ](https://github.com/WorksApplications/Sudachi)