日本語形態素解析エンジン「kuromoji」を使ってみた

# 日本語形態素解析エンジン「kuromoji」を使ってみた

ElasticSearchに、日本語形態素解析エンジン「kuromoji」のプラグインをインストールしたため、せっかくなので少しだけ遊んでみた。

## 実行環境

実行するOS環境は以下である。

```bash
$ cat /etc/redhat-release
CentOS Linux release 8.1.1911 (Core)
```

ElasticSearchのプラグインインストール状況は以下である。

```bash
$ curl -XGET localhost:9200/_cat/plugins?v
name          component         version
elasticsearch analysis-icu      7.9.1
elasticsearch analysis-kuromoji 7.9.1
```

## kuromojiを使用しないで分析する ※ElasticSearchのデフォルト分析を使用する

ElasticSearchのデフォルト分析APIに、「吾輩は猫である」の文字列をリクエストするため、以下のようなjsonファイルを用意した。

```bash
$ cat standard.json 
{
  "analyzer" : "standard",
  "text" : "吾輩は猫である"
}'
```

以下コマンドを実行して、リクエスト結果を確認した。なお、コマンド後半のpython3の実行は、jsonを整形するためのコマンドである。

```bash
$ curl -XGET 'localhost:9200/_analyze' -H 'Content-Type: application/json' -d @standard.json | python3 -c 'import sys,json;print(json.dumps(json.loads(sys.stdin.read()),indent=4,ensure_ascii=False))'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   651  100   588  100    63  11094   1188 --:--:-- --:--:-- --:--:-- 12519
{
    "tokens": [
        {
            "token": "吾",
            "start_offset": 0,
            "end_offset": 1,
            "type": "<IDEOGRAPHIC>",
            "position": 0
        },
        {
            "token": "輩",
            "start_offset": 1,
            "end_offset": 2,
            "type": "<IDEOGRAPHIC>",
            "position": 1
        },
        {
            "token": "は",
            "start_offset": 2,
            "end_offset": 3,
            "type": "<HIRAGANA>",
            "position": 2
        },
        {
            "token": "猫",
            "start_offset": 3,
            "end_offset": 4,
            "type": "<IDEOGRAPHIC>",
            "position": 3
        },
        {
            "token": "で",
            "start_offset": 4,
            "end_offset": 5,
            "type": "<HIRAGANA>",
            "position": 4
        },
        {
            "token": "あ",
            "start_offset": 5,
            "end_offset": 6,
            "type": "<HIRAGANA>",
            "position": 5
        },
        {
            "token": "る",
            "start_offset": 6,
            "end_offset": 7,
            "type": "<HIRAGANA>",
            "position": 6
        }
    ]
}
```

## kuromojiを使用して分析する

ElasticSearchのkuromojiプラグインに、「吾輩は猫である」の文字列をリクエストするため、以下のようなjsonファイルを用意した。

```bash
$ cat kuromoji.json 
{
  "analyzer" : "kuromoji",
  "text" : "吾輩は猫である"
}'
```

以下コマンドを実行して、リクエスト結果を確認した。なお、コマンド後半のpython3の実行は、jsonを整形するためのコマンドである。

```bash
$ curl -XGET 'localhost:9200/_analyze' -H 'Content-Type: application/json' -d @kuromoji.json
 | python3 -c 'import sys,json;print(json.dumps(json.loads(sys.stdin.read()),indent=4,ensure_ascii=False))'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   228  100   165  100    63   1187    453 --:--:-- --:--:-- --:--:--  1640
{
    "tokens": [
        {
            "token": "吾輩",
            "start_offset": 0,
            "end_offset": 2,
            "type": "word",
            "position": 0
        },
        {
            "token": "猫",
            "start_offset": 3,
            "end_offset": 4,
            "type": "word",
            "position": 2
        }
    ]
}
```