自然言語系サービス色々試してみた

# きっかけ
[前の記事](https://qiita.com/silverbox/items/a1f020c6c2225d547689) からの続きで、機械学習系の体験をしていきたい。機械学習の一つとして自然言語処理がある。既に色々英知の結晶が提供されている様なので、体験したい。

# 試してみるサービス等
- [GiNZA](https://megagonlabs.github.io/ginza/)
- [COTOHA API](https://api.ce-cotoha.com/contents/index.html)
- AWSの自然言語系サービス

# 試してみる文章＆機能

**文章：**
[前の記事](https://qiita.com/silverbox/items/a1f020c6c2225d547689) で書いた**「個人趣味で開発してた自分用家計簿サービスが一段落し、次にやる事を考えてみた。やっぱり、今流行りの機械学習で何かしてみたい。とはいえ、基本知識すらない。」**

**機能：**
一番基本的な機能、構文解析（形態素解析）

# GiNZAを使ってみた。

### インストール

```shell-session:
# pythonで何かする時は、venv使う派なので。 
sudo apt-get install python3-venv
python3 -m venv ginza
source ginza/bin/activate
cd ~/ginza

# GiNZA の中でsudachipyというライブラリが使用されているのでそのインストール
# 本来ならGiNZA本体インストール時にインストールされると思うが、なぜかそこに失敗した為。
# https://github.com/WorksApplications/SudachiPy
pip install SudachiPy
pip install https://object-storage.tyo2.conoha.io/v1/nc_2520839e1f9641b08211a5c85243124a/sudachi/SudachiDict_core-20200127.tar.gz

# GiNZA 本体インストール
# 後から知ったが、pip install ginza で大丈夫だったらしい。
pip install "https://github.com/megagonlabs/ginza/releases/download/latest/ginza-latest.tar.gz"

```

### 構文解析（形態素解析）

前述文章を**sample.txt**に保存して以下実行。

```shell:
(ginza) ubuntu@ubuntu:~/ginza$ ginza sample.txt 
```

<details><summary>実行結果</summary><div>

```shell:コンソール出力

mode is C
disabling sentence separator
# text = 個人趣味で開発してた自分用家計簿サービスが一段落し、次にやる事を考えてみた。やっぱり、今流行りの機械学習で何かしてみたい。とはいえ、基本知識すらない。
1	個人	個人	NOUN	名詞-普通名詞-一般	_	2	compound	_	BunsetuBILabel=B|BunsetuPositionType=CONT|SpaceAfter=No|NP_B
2	趣味	趣味	NOUN	名詞-普通名詞-一般	_	4	nmod	_	BunsetuBILabel=I|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_I
3	で	で	ADP	助詞-格助詞	_	2	case	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
4	開発	開発	VERB	名詞-普通名詞-サ変可能	_	11	acl	_	BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No
5	し	為る	AUX	動詞-非自立可能	_	4	aux	_	BunsetuBILabel=I|BunsetuPositionType=FUNC|SpaceAfter=No
6	て	てる	AUX	助動詞	_	4	aux	_	BunsetuBILabel=I|BunsetuPositionType=FUNC|SpaceAfter=No
7	た	た	AUX	助動詞	_	4	aux	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
8	自分	自分	NOUN	名詞-普通名詞-一般	_	11	compound	_	BunsetuBILabel=B|BunsetuPositionType=CONT|SpaceAfter=No|NP_B
9	用	用	NOUN	接尾辞-名詞的-一般	_	11	compound	_	BunsetuBILabel=I|BunsetuPositionType=CONT|SpaceAfter=No|NP_I
10	家計簿	家計簿	NOUN	名詞-普通名詞-一般	_	11	compound	_	BunsetuBILabel=I|BunsetuPositionType=CONT|SpaceAfter=No|NP_I
11	サービス	サービス	NOUN	名詞-普通名詞-サ変可能	_	14	nsubj	_	BunsetuBILabel=I|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_I
12	が	が	ADP	助詞-格助詞	_	11	case	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
13	一段落	一段落	NUM	名詞-普通名詞-一般	NumType=Card	14	nummod	_	BunsetuBILabel=B|BunsetuPositionType=CONT|SpaceAfter=No
14	し	為る	AUX	動詞-非自立可能	_	21	advcl	_	BunsetuBILabel=I|BunsetuPositionType=SEM_HEAD|SpaceAfter=No
15	、	、	PUNCT	補助記号-読点	_	14	punct	_	BunsetuBILabel=I|BunsetuPositionType=CONT|SpaceAfter=No
16	次	次	NOUN	名詞-普通名詞-一般	_	18	obl	_	BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_B
17	に	に	ADP	助詞-格助詞	_	16	case	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
18	やる	遣る	VERB	動詞-非自立可能	_	19	acl	_	BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No
19	事	事	NOUN	名詞-普通名詞-一般	_	21	obj	_	BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_B
20	を	を	ADP	助詞-格助詞	_	19	case	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
21	考え	考える	VERB	動詞-一般	_	35	advcl	_	BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No
22	て	て	SCONJ	助詞-接続助詞	_	21	mark	_	BunsetuBILabel=I|BunsetuPositionType=FUNC|SpaceAfter=No
23	み	見る	AUX	動詞-非自立可能	_	21	aux	_	BunsetuBILabel=I|BunsetuPositionType=FUNC|SpaceAfter=No
24	た	た	AUX	助動詞	_	21	aux	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
25	。	。	PUNCT	補助記号-句点	_	21	punct	_	BunsetuBILabel=I|BunsetuPositionType=CONT|SpaceAfter=No
26	やっぱり	矢張り	ADV	副詞	_	35	advmod	_	BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No
27	、	、	PUNCT	補助記号-読点	_	26	punct	_	BunsetuBILabel=I|BunsetuPositionType=CONT|SpaceAfter=No
28	今	今	ADV	名詞-普通名詞-副詞可能	_	35	advmod	_	BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No
29	流行り	流行	NOUN	名詞-普通名詞-一般	_	31	nmod	_	BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_B
30	の	の	ADP	助詞-格助詞	_	29	case	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
31	機械学習	機械学習	NOUN	名詞-普通名詞-一般	_	35	nmod	_	BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_B
32	で	で	ADP	助詞-格助詞	_	31	case	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
33	何	何	PRON	代名詞	_	35	iobj	_	BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_B
34	か	か	ADP	助詞-副助詞	_	33	case	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
35	し	為る	AUX	動詞-非自立可能	_	47	advcl	_	BunsetuBILabel=B|BunsetuPositionType=SEM_HEAD|SpaceAfter=No
36	て	て	SCONJ	助詞-接続助詞	_	35	mark	_	BunsetuBILabel=I|BunsetuPositionType=FUNC|SpaceAfter=No
37	み	見る	AUX	動詞-非自立可能	_	35	aux	_	BunsetuBILabel=I|BunsetuPositionType=FUNC|SpaceAfter=No
38	たい	たい	AUX	助動詞	_	35	aux	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
39	。	。	PUNCT	補助記号-句点	_	35	punct	_	BunsetuBILabel=I|BunsetuPositionType=CONT|SpaceAfter=No
40	と	と	ADP	助詞-格助詞	_	35	case	_	BunsetuBILabel=I|BunsetuPositionType=FUNC|SpaceAfter=No
41	は	は	ADP	助詞-係助詞	_	35	case	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
42	いえ	言う	VERB	動詞-一般	_	35	aux	_	BunsetuBILabel=I|BunsetuPositionType=CONT|SpaceAfter=No
43	、	、	PUNCT	補助記号-読点	_	35	punct	_	BunsetuBILabel=I|BunsetuPositionType=CONT|SpaceAfter=No
44	基本	基本	NOUN	名詞-普通名詞-一般	_	45	compound	_	BunsetuBILabel=B|BunsetuPositionType=CONT|SpaceAfter=No|NP_B
45	知識	知識	NOUN	名詞-普通名詞-一般	_	47	iobj	_	BunsetuBILabel=I|BunsetuPositionType=SEM_HEAD|SpaceAfter=No|NP_I
46	すら	すら	ADP	助詞-副助詞	_	45	case	_	BunsetuBILabel=I|BunsetuPositionType=SYN_HEAD|SpaceAfter=No
47	ない	無い	ADJ	形容詞-非自立可能	_	0	root	_	BunsetuBILabel=B|BunsetuPositionType=ROOT|SpaceAfter=No
48	。	。	PUNCT	補助記号-句点	_	47	punct	_	BunsetuBILabel=I|BunsetuPositionType=CONT|SpaceAfter=No
```
</div></details>

[CoNLL-U Format](https://universaldependencies.org/format.html) という標準フォーマットで出力される。

### Pythonでもやってみる。

[公式ページ](https://megagonlabs.github.io/ginza/) のサンプルをちょっと改造。

```python:サンプルソース改造
import spacy

nlp = spacy.load('ja_ginza')

# 解析対象文
test_data = open("sample.txt", "r")
try:
    test_lines = test_data.readlines()

    for line in test_lines:
        doc = nlp(line)
        for sent in doc.sents:
            for token in sent:
                print(token.i, token.orth_, token.lemma_, token.pos_, token.tag_, token.dep_, token.head.i)
            print('EOS')

finally:
    test_data.close()
```

<details><summary>実行結果</summary><div>

```console:コンソール出力
(ginza) ubuntu@ubuntu:~/ginza$ python3 test02.py 
0 個人 個人 NOUN 名詞-普通名詞-一般 compound 1
1 趣味 趣味 NOUN 名詞-普通名詞-一般 nmod 3
2 で で ADP 助詞-格助詞 case 1
3 開発 開発 VERB 名詞-普通名詞-サ変可能 acl 10
4 し 為る AUX 動詞-非自立可能 aux 3
5 て てる AUX 助動詞 aux 3
6 た た AUX 助動詞 aux 3
7 自分 自分 NOUN 名詞-普通名詞-一般 compound 10
8 用 用 NOUN 接尾辞-名詞的-一般 compound 10
9 家計簿 家計簿 NOUN 名詞-普通名詞-一般 compound 10
10 サービス サービス NOUN 名詞-普通名詞-サ変可能 nsubj 13
11 が が ADP 助詞-格助詞 case 10
12 一段落 一段落 NUM 名詞-普通名詞-一般 nummod 13
13 し 為る AUX 動詞-非自立可能 advcl 20
14 、 、 PUNCT 補助記号-読点 punct 13
15 次 次 NOUN 名詞-普通名詞-一般 obl 17
16 に に ADP 助詞-格助詞 case 15
17 やる 遣る VERB 動詞-非自立可能 acl 18
18 事 事 NOUN 名詞-普通名詞-一般 obj 20
19 を を ADP 助詞-格助詞 case 18
20 考え 考える VERB 動詞-一般 ROOT 20
21 て て SCONJ 助詞-接続助詞 mark 20
22 み 見る AUX 動詞-非自立可能 aux 20
23 た た AUX 助動詞 aux 20
24 。 。 PUNCT 補助記号-句点 punct 20
EOS
25 やっぱり 矢張り ADV 副詞 advmod 34
26 、 、 PUNCT 補助記号-読点 punct 25
27 今 今 ADV 名詞-普通名詞-副詞可能 advmod 34
28 流行り 流行 NOUN 名詞-普通名詞-一般 nmod 30
29 の の ADP 助詞-格助詞 case 28
30 機械学習 機械学習 NOUN 名詞-普通名詞-一般 nmod 34
31 で で ADP 助詞-格助詞 case 30
32 何 何 PRON 代名詞 iobj 34
33 か か ADP 助詞-副助詞 case 32
34 し 為る AUX 動詞-非自立可能 ROOT 34
35 て て SCONJ 助詞-接続助詞 mark 34
36 み 見る AUX 動詞-非自立可能 aux 34
37 たい たい AUX 助動詞 aux 34
38 。 。 PUNCT 補助記号-句点 punct 34
EOS
39 と と ADP 助詞-格助詞 advmod 46
40 は は ADP 助詞-係助詞 dep 44
41 いえ 言う VERB 動詞-一般 dep 44
42 、 、 PUNCT 補助記号-読点 punct 44
43 基本 基本 NOUN 名詞-普通名詞-一般 compound 44
44 知識 知識 NOUN 名詞-普通名詞-一般 iobj 46
45 すら すら ADP 助詞-副助詞 case 44
46 ない 無い ADJ 形容詞-非自立可能 ROOT 46
47 。 。 PUNCT 補助記号-句点 punct 46
EOS

```
</div></details>

# COTOHA使ってみた
[自然言語処理を簡単に扱えると噂のCOTOHA APIをPythonで使ってみた](https://qiita.com/gossy5454/items/83072418fb0c5f3e269f) をそのままトレースさせてもらいました。

<details><summary>実行結果</summary><div>

```json:jsonファイルへ出力した結果
{
    "result": [
        {
            "chunk_info": {
                "id": 0,
                "head": 1,
                "dep": "D",
                "chunk_head": 1,
                "chunk_func": 2,
                "links": []
            },
            "tokens": [
                {
                    "id": 0,
                    "form": "個人",
                    "kana": "コジン",
                    "lemma": "個人",
                    "pos": "名詞",
                    "features": [],
                    "attributes": {}
                },
                {
                    "id": 1,
                    "form": "趣味",
                    "kana": "シュミ",
                    "lemma": "趣味",
                    "pos": "名詞",
                    "features": [],
                    "dependency_labels": [
                        {
                            "token_id": 0,
                            "label": "compound"
                        },
                        {
                            "token_id": 2,
                            "label": "case"
                        }
                    ],
                    "attributes": {}
                },
                {
                    "id": 2,
                    "form": "で",
                    "kana": "デ",
                    "lemma": "で",
                    "pos": "格助詞",
                    "features": [
                        "連用"
                    ],
                    "attributes": {}
                }
            ]
        },
        {
            "chunk_info": {
                "id": 1,
                "head": 2,
                "dep": "D",
                "chunk_head": 0,
                "chunk_func": 3,
                "links": [
                    {
                        "link": 0,
                        "label": "place"
                    }
                ],
                "predicate": [
                    "past",
                    "past"
                ]
            },
            "tokens": [
                {
                    "id": 3,
                    "form": "開発",
                    "kana": "カイハツ",
                    "lemma": "開発",
                    "pos": "名詞",
                    "features": [
                        "動作"
                    ],
                    "dependency_labels": [
                        {
                            "token_id": 1,
                            "label": "nmod"
                        },
                        {
                            "token_id": 4,
                            "label": "aux"
                        },
                        {
                            "token_id": 5,
                            "label": "aux"
                        },
                        {
                            "token_id": 6,
                            "label": "aux"
                        }
                    ],
                    "attributes": {}
                },
                {
                    "id": 4,
                    "form": "し",
                    "kana": "シ",
                    "lemma": "し",
                    "pos": "動詞活用語尾",
                    "features": [],
                    "attributes": {}
                },
                {
                    "id": 5,
                    "form": "て",
                    "kana": "テ",
                    "lemma": "て",
                    "pos": "動詞接尾辞",
                    "features": [
                        "接続",
                        "連用"
                    ],
                    "attributes": {}
                },
                {
                    "id": 6,
                    "form": "た",
                    "kana": "タ",
                    "lemma": "た",
                    "pos": "動詞接尾辞",
                    "features": [
                        "連体"
                    ],
                    "attributes": {}
                }
            ]
        },
        {
            "chunk_info": {
                "id": 2,
                "head": 3,
                "dep": "D",
                "chunk_head": 3,
                "chunk_func": 4,
                "links": [
                    {
                        "link": 1,
                        "label": "adjectivals"
                    }
                ]
            },
            "tokens": [
                {
                    "id": 7,
                    "form": "自分",
                    "kana": "ジブン",
                    "lemma": "自分",
                    "pos": "名詞",
                    "features": [
                        "代名詞"
                    ],
                    "attributes": {}
                },
                {
                    "id": 8,
                    "form": "用",
                    "kana": "ヨウ",
                    "lemma": "用",
                    "pos": "名詞接尾辞",
                    "features": [
                        "名詞"
                    ],
                    "attributes": {}
                },
                {
                    "id": 9,
                    "form": "家計簿",
                    "kana": "カケイボ",
                    "lemma": "家計簿",
                    "pos": "名詞",
                    "features": [],
                    "attributes": {}
                },
                {
                    "id": 10,
                    "form": "サービス",
                    "kana": "サービス",
                    "lemma": "サービス",
                    "pos": "名詞",
                    "features": [
                        "動作"
                    ],
                    "dependency_labels": [
                        {
                            "token_id": 3,
                            "label": "acl"
                        },
                        {
                            "token_id": 9,
                            "label": "compound"
                        },
                        {
                            "token_id": 8,
                            "label": "compound"
                        },
                        {
                            "token_id": 7,
                            "label": "compound"
                        },
                        {
                            "token_id": 11,
                            "label": "case"
                        }
                    ],
                    "attributes": {}
                },
                {
                    "id": 11,
                    "form": "が",
                    "kana": "ガ",
                    "lemma": "が",
                    "pos": "格助詞",
                    "features": [
                        "連用"
                    ],
                    "attributes": {}
                }
            ]
        },
        {
            "chunk_info": {
                "id": 3,
                "head": 7,
                "dep": "P",
                "chunk_head": 0,
                "chunk_func": 1,
                "links": [
                    {
                        "link": 2,
                        "label": "object"
                    }
                ],
                "predicate": []
            },
            "tokens": [
                {
                    "id": 12,
                    "form": "一段落",
                    "kana": "イチダンラク",
                    "lemma": "一段落",
                    "pos": "名詞",
                    "features": [
                        "動作"
                    ],
                    "dependency_labels": [
                        {
                            "token_id": 10,
                            "label": "dobj"
                        },
                        {
                            "token_id": 13,
                            "label": "aux"
                        },
                        {
                            "token_id": 14,
                            "label": "punct"
                        }
                    ],
                    "attributes": {}
                },
                {
                    "id": 13,
                    "form": "し",
                    "kana": "シ",
                    "lemma": "し",
                    "pos": "動詞接尾辞",
                    "features": [
                        "連用"
                    ],
                    "attributes": {}
                },
                {
                    "id": 14,
                    "form": "、",
                    "kana": "",
                    "lemma": "、",
                    "pos": "読点",
                    "features": [],
                    "attributes": {}
                }
            ]
        },
        {
            "chunk_info": {
                "id": 4,
                "head": 5,
                "dep": "D",
                "chunk_head": 0,
                "chunk_func": 0,
                "links": []
            },
            "tokens": [
                {
                    "id": 15,
                    "form": "次に",
                    "kana": "ツギニ",
                    "lemma": "次に",
                    "pos": "連用詞",
                    "features": [],
                    "dependency_labels": [],
                    "attributes": {}
                }
            ]
        },
        {
            "chunk_info": {
                "id": 5,
                "head": 6,
                "dep": "D",
                "chunk_head": 0,
                "chunk_func": 1,
                "links": [
                    {
                        "link": 4,
                        "label": "manner"
                    }
                ]
            },
            "tokens": [
                {
                    "id": 16,
                    "form": "や",
                    "kana": "ヤ",
                    "lemma": "やる",
                    "pos": "動詞語幹",
                    "features": [
                        "R"
                    ],
                    "dependency_labels": [
                        {
                            "token_id": 15,
                            "label": "advmod"
                        },
                        {
                            "token_id": 17,
                            "label": "aux"
                        }
                    ],
                    "attributes": {}
                },
                {
                    "id": 17,
                    "form": "る",
                    "kana": "ル",
                    "lemma": "る",
                    "pos": "動詞接尾辞",
                    "features": [
                        "連体"
                    ],
                    "attributes": {}
                }
            ]
        },
        {
            "chunk_info": {
                "id": 6,
                "head": 7,
                "dep": "D",
                "chunk_head": 0,
                "chunk_func": 1,
                "links": [
                    {
                        "link": 5,
                        "label": "adjectivals"
                    }
                ]
            },
            "tokens": [
                {
                    "id": 18,
                    "form": "事",
                    "kana": "コト",
                    "lemma": "事",
                    "pos": "名詞",
                    "features": [],
                    "dependency_labels": [
                        {
                            "token_id": 16,
                            "label": "amod"
                        },
                        {
                            "token_id": 19,
                            "label": "case"
                        }
                    ],
                    "attributes": {}
                },
                {
                    "id": 19,
                    "form": "を",
                    "kana": "ヲ",
                    "lemma": "を",
                    "pos": "格助詞",
                    "features": [
                        "連用"
                    ],
                    "attributes": {}
                }
            ]
        },
        {
            "chunk_info": {
                "id": 7,
                "head": 16,
                "dep": "P",
                "chunk_head": 0,
                "chunk_func": 3,
                "links": [
                    {
                        "link": 3,
                        "label": "manner"
                    },
                    {
                        "link": 6,
                        "label": "object"
                    }
                ],
                "predicate": [
                    "past",
                    "past"
                ]
            },
            "tokens": [
                {
                    "id": 20,
                    "form": "考え",
                    "kana": "カンガエ",
                    "lemma": "考える",
                    "pos": "動詞語幹",
                    "features": [
                        "A"
                    ],
                    "dependency_labels": [
                        {
                            "token_id": 12,
                            "label": "advcl"
                        },
                        {
                            "token_id": 18,
                            "label": "dobj"
                        },
                        {
                            "token_id": 21,
                            "label": "aux"
                        },
                        {
                            "token_id": 22,
                            "label": "aux"
                        },
                        {
                            "token_id": 23,
                            "label": "aux"
                        },
                        {
                            "token_id": 24,
                            "label": "punct"
                        }
                    ],
                    "attributes": {}
                },
                {
                    "id": 21,
                    "form": "て",
                    "kana": "テ",
                    "lemma": "て",
                    "pos": "動詞接尾辞",
                    "features": [
                        "接続",
                        "連用"
                    ],
                    "attributes": {}
                },
                {
                    "id": 22,
                    "form": "み",
                    "kana": "ミ",
                    "lemma": "みる",
                    "pos": "動詞語幹",
                    "features": [
                        "A",
                        "Lて連用"
                    ],
                    "attributes": {}
                },
                {
                    "id": 23,
                    "form": "た",
                    "kana": "タ",
                    "lemma": "た",
                    "pos": "動詞接尾辞",
                    "features": [
                        "終止"
                    ],
                    "attributes": {}
                },
                {
                    "id": 24,
                    "form": "。",
                    "kana": "",
                    "lemma": "。",
                    "pos": "句点",
                    "features": [],
                    "attributes": {}
                }
            ]
        },
        {
            "chunk_info": {
                "id": 8,
                "head": 16,
                "dep": "D",
                "chunk_head": 0,
                "chunk_func": 0,
                "links": []
            },
            "tokens": [
                {
                    "id": 25,
                    "form": "やっぱり",
                    "kana": "ヤッパリ",
                    "lemma": "やっぱり",
                    "pos": "連用詞",
                    "features": [],
                    "dependency_labels": [
                        {
                            "token_id": 26,
                            "label": "punct"
                        }
                    ],
                    "attributes": {}
                },
                {
                    "id": 26,
                    "form": "、",
                    "kana": "",
                    "lemma": "、",
                    "pos": "読点",
                    "features": [],
                    "attributes": {}
                }
            ]
        },
        {
            "chunk_info": {
                "id": 9,
                "head": 10,
                "dep": "D",
                "chunk_head": 0,
                "chunk_func": 0,
                "links": []
            },
            "tokens": [
                {
                    "id": 27,
                    "form": "今",
                    "kana": "イマ",
                    "lemma": "今",
                    "pos": "名詞",
                    "features": [
                        "日時",
                        "連用"
                    ],
                    "dependency_labels": [],
                    "attributes": {}
                }
            ]
        },
        {
            "chunk_info": {
                "id": 10,
                "head": 11,
                "dep": "D",
                "chunk_head": 0,
                "chunk_func": 1,
                "links": [
                    {
                        "link": 9,
                        "label": "time"
                    }
                ]
            },
            "tokens": [
                {
                    "id": 28,
                    "form": "流行り",
                    "kana": "ハヤリ",
                    "lemma": "はやり",
                    "pos": "名詞",
                    "features": [],
                    "dependency_labels": [
                        {
                            "token_id": 27,
                            "label": "nmod"
                        },
                        {
                            "token_id": 29,
                            "label": "case"
                        }
                    ],
                    "attributes": {}
                },
                {
                    "id": 29,
                    "form": "の",
                    "kana": "ノ",
                    "lemma": "の",
                    "pos": "格助詞",
                    "features": [
                        "連体"
                    ],
                    "attributes": {}
                }
            ]
        },
        {
            "chunk_info": {
                "id": 11,
                "head": 13,
                "dep": "D",
                "chunk_head": 1,
                "chunk_func": 2,
                "links": [
                    {
                        "link": 10,
                        "label": "adjectivals"
                    }
                ]
            },
            "tokens": [
                {
                    "id": 30,
                    "form": "機械",
                    "kana": "キカイ",
                    "lemma": "機械",
                    "pos": "名詞",
                    "features": [],
                    "attributes": {}
                },
                {
                    "id": 31,
                    "form": "学習",
                    "kana": "ガクシュウ",
                    "lemma": "学習",
                    "pos": "名詞",
                    "features": [
                        "動作"
                    ],
                    "dependency_labels": [
                        {
                            "token_id": 28,
                            "label": "nmod"
                        },
                        {
                            "token_id": 30,
                            "label": "compound"
                        },
                        {
                            "token_id": 32,
                            "label": "cop"
                        }
                    ],
                    "attributes": {}
                },
                {
                    "id": 32,
                    "form": "で",
                    "kana": "デ",
                    "lemma": "で",
                    "pos": "判定詞",
                    "features": [
                        "連用"
                    ],
                    "attributes": {}
                }
            ]
        },
        {
            "chunk_info": {
                "id": 12,
                "head": 13,
                "dep": "D",
                "chunk_head": 0,
                "chunk_func": 0,
                "links": []
            },
            "tokens": [
                {
                    "id": 33,
                    "form": "何か",
                    "kana": "ナニカ",
                    "lemma": "何か",
                    "pos": "連用詞",
                    "features": [],
                    "dependency_labels": [],
                    "attributes": {}
                }
            ]
        },
        {
            "chunk_info": {
                "id": 13,
                "head": 16,
                "dep": "D",
                "chunk_head": 0,
                "chunk_func": 6,
                "links": [
                    {
                        "link": 11,
                        "label": "condition"
                    },
                    {
                        "link": 12,
                        "label": "manner"
                    }
                ],
                "predicate": [
                    "past"
                ]
            },
            "tokens": [
                {
                    "id": 34,
                    "form": "し",
                    "kana": "シ",
                    "lemma": "する",
                    "pos": "動詞語幹",
                    "features": [
                        "SURU"
                    ],
                    "dependency_labels": [
                        {
                            "token_id": 31,
                            "label": "nmod"
                        },
                        {
                            "token_id": 33,
                            "label": "advmod"
                        },
                        {
                            "token_id": 35,
                            "label": "aux"
                        },
                        {
                            "token_id": 36,
                            "label": "aux"
                        },
                        {
                            "token_id": 37,
                            "label": "aux"
                        },
                        {
                            "token_id": 38,
                            "label": "punct"
                        },
                        {
                            "token_id": 39,
                            "label": "mark"
                        },
                        {
                            "token_id": 40,
                            "label": "case"
                        }
                    ],
                    "attributes": {}
                },
                {
                    "id": 35,
                    "form": "て",
                    "kana": "テ",
                    "lemma": "て",
                    "pos": "動詞接尾辞",
                    "features": [
                        "接続",
                        "連用"
                    ],
                    "attributes": {}
                },
                {
                    "id": 36,
                    "form": "み",
                    "kana": "ミ",
                    "lemma": "みる",
                    "pos": "動詞語幹",
                    "features": [
                        "A",
                        "Lて連用"
                    ],
                    "attributes": {}
                },
                {
                    "id": 37,
                    "form": "たい",
                    "kana": "タイ",
                    "lemma": "たい",
                    "pos": "動詞接尾辞",
                    "features": [
                        "終止"
                    ],
                    "attributes": {}
                },
                {
                    "id": 38,
                    "form": "。",
                    "kana": "",
                    "lemma": "。",
                    "pos": "句点",
                    "features": [],
                    "attributes": {}
                },
                {
                    "id": 39,
                    "form": "と",
                    "kana": "ト",
                    "lemma": "と",
                    "pos": "引用助詞",
                    "features": [
                        "連用"
                    ],
                    "attributes": {}
                },
                {
                    "id": 40,
                    "form": "は",
                    "kana": "ハ",
                    "lemma": "は",
                    "pos": "連用助詞",
                    "features": [],
                    "attributes": {}
                }
            ]
        },
        {
            "chunk_info": {
                "id": 14,
                "head": 16,
                "dep": "D",
                "chunk_head": 0,
                "chunk_func": 0,
                "links": []
            },
            "tokens": [
                {
                    "id": 41,
                    "form": "いえ",
                    "kana": "イエ",
                    "lemma": "いえる",
                    "pos": "動詞語幹",
                    "features": [
                        "A"
                    ],
                    "dependency_labels": [
                        {
                            "token_id": 42,
                            "label": "punct"
                        }
                    ],
                    "attributes": {}
                },
                {
                    "id": 42,
                    "form": "、",
                    "kana": "",
                    "lemma": "、",
                    "pos": "読点",
                    "features": [],
                    "attributes": {}
                }
            ]
        },
        {
            "chunk_info": {
                "id": 15,
                "head": 16,
                "dep": "D",
                "chunk_head": 1,
                "chunk_func": 2,
                "links": []
            },
            "tokens": [
                {
                    "id": 43,
                    "form": "基本",
                    "kana": "キホン",
                    "lemma": "基本",
                    "pos": "名詞",
                    "features": [],
                    "attributes": {}
                },
                {
                    "id": 44,
                    "form": "知識",
                    "kana": "チシキ",
                    "lemma": "知識",
                    "pos": "名詞",
                    "features": [],
                    "dependency_labels": [
                        {
                            "token_id": 43,
                            "label": "compound"
                        },
                        {
                            "token_id": 45,
                            "label": "case"
                        }
                    ],
                    "attributes": {}
                },
                {
                    "id": 45,
                    "form": "すら",
                    "kana": "スラ",
                    "lemma": "すら",
                    "pos": "連用助詞",
                    "features": [],
                    "attributes": {}
                }
            ]
        },
        {
            "chunk_info": {
                "id": 16,
                "head": -1,
                "dep": "O",
                "chunk_head": 0,
                "chunk_func": 1,
                "links": [
                    {
                        "link": 7,
                        "label": "manner"
                    },
                    {
                        "link": 8,
                        "label": "manner"
                    },
                    {
                        "link": 13,
                        "label": "object"
                    },
                    {
                        "link": 14,
                        "label": "manner"
                    },
                    {
                        "link": 15,
                        "label": "object"
                    }
                ],
                "predicate": []
            },
            "tokens": [
                {
                    "id": 46,
                    "form": "な",
                    "kana": "ナ",
                    "lemma": "ない",
                    "pos": "形容詞語幹",
                    "features": [
                        "アウオ段"
                    ],
                    "dependency_labels": [
                        {
                            "token_id": 20,
                            "label": "advcl"
                        },
                        {
                            "token_id": 25,
                            "label": "advmod"
                        },
                        {
                            "token_id": 34,
                            "label": "dobj"
                        },
                        {
                            "token_id": 41,
                            "label": "advmod"
                        },
                        {
                            "token_id": 44,
                            "label": "dobj"
                        },
                        {
                            "token_id": 47,
                            "label": "aux"
                        },
                        {
                            "token_id": 48,
                            "label": "punct"
                        }
                    ],
                    "attributes": {
                        "DepLabel": "NEG"
                    }
                },
                {
                    "id": 47,
                    "form": "い",
                    "kana": "イ",
                    "lemma": "い",
                    "pos": "形容詞接尾辞",
                    "features": [
                        "終止"
                    ],
                    "attributes": {}
                },
                {
                    "id": 48,
                    "form": "。",
                    "kana": "",
                    "lemma": "。",
                    "pos": "句点",
                    "features": [],
                    "attributes": {}
                }
            ]
        }
    ],
    "status": 0,
    "message": ""
}
```
</div></details>

標準フォーマットではなさそうですね。chunk_info という要素もあり、固まり情報も提供してくれるようです。

# AWS Comprehend 使ってみた

### コンソールからもサンプル実行できるらしい。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/530376/c719493c-fe50-080d-b0ef-be2e6d9e6c7f.png)

の入力に対して

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/530376/9958583f-689d-90ed-f170-310d8afb5e68.png)

の様な結果を返してくれるはずだが、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/530376/61827a05-8575-0e3a-889a-ccdd69d438de.png)

の入力に対して、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/530376/a44bd127-f2dc-8c12-f29d-7e44ebecb4a0.png)

こんな感じ。一応日本語サポートされてるらしいのだけど。
[Languages Supported in Amazon Comprehend](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html)

APIだとうまく行くのかな？この調子だとあまり期待できない。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/530376/5bafc760-ff0d-1f25-d07e-c4972995f449.png)

構文解析はSyntaxの方だったのかも。ただ、こっちは日本語未対応。マジか。

# 重要ワード

上記対応で色々調べていっているうちに知った重要ワード

### コーパス
言語学において、自然言語処理の研究に用いるため、自然言語の文章を構造化し大規模に集積したもの。（wikiより引用）
### CoNLL-U Format
言語学で決められている（？）構文解析結果のフォーマット
### 言語処理100本ノック
[言語処理100本ノック 2015](http://www.cl.ecei.tohoku.ac.jp/nlp100/)
東北大学の乾・鈴木研究室で使用されている、言語処理の基本を体に叩き込むための課題集（だと思う）。Qiitaでも取り組んでいる人が多い様子。自分もやってみたい。
### ベクトル化
単語の特徴を数値化したもの。これにより更なる処理が出来るようになる。今後もっといろいろな事をやる時には必要になるはず。

# 感想

多分画像処理系と共に機械学習の大きなターゲットである自然言語処理。画像処理系は必要サンプル数も処理時間も相当なものになりそう。個人が趣味でやるには自然言語の方がよさそう。自分の当面の目標であるクソアプリのネタも色々転がっていそう。
100本ノックに走るか、もうちょっと各種サービスを体験するか悩んでいる今日この頃。

# 参考にさせてもらったページ

[【初心者向け】自然言語処理ツール「GiNZA」を用いた言語解析（形態素解析からベクトル化まで）](https://qiita.com/cove_ht/items/63ffdd8ff237d4845566)

[自然言語処理を簡単に扱えると噂のCOTOHA APIをPythonで使ってみた](https://qiita.com/gossy5454/items/83072418fb0c5f3e269f)