Cloud Natural Language APIを使う

# Cloud Natural Language APIのドキュメント

[クイックスタート](https://cloud.google.com/natural-language/docs/quickstart?hl=ja)
[gcloudコマンドのリファレンス](https://cloud.google.com/sdk/gcloud/reference/ml/language/)

## gcloudコマンドで実行

自分の環境にはすでにgcloudがインストールされているので、クイックスタートをそのまま実行

```
gcloud ml language analyze-entities --content="お前がどれだけ軽い銃を使おうが知ったこっちゃ無いが、俺に言わせりゃロマンに欠けるな"
```

なんか出た。が。これじゃあロマンに欠ける。

```
{
  "entities": [
    {
      "mentions": [
        {
          "text": {
            "beginOffset": 3,
            "content": "前"
          },
          "type": "COMMON"
        }
      ],
      "metadata": {},
      "name": "前",
      "salience": 0.393913,
      "type": "OTHER"
    },
    {
      "mentions": [
        {
          "text": {
            "beginOffset": 27,
            "content": "銃"
          },
          "type": "COMMON"
        }
      ],
・・・・
```

# リファレンスに書いてあるコマンドを実行してみる

## エンティティ感情分析

```
$ gcloud ml language analyze-entity-sentiment --content="お前がどれだけ軽い銃を使おうが知ったこっちゃ無いが、俺に言わせりゃロマンに欠けるな"

...ロマンに欠けるので結果は割愛...
```

## 感情分析

```
$ gcloud ml language analyze-sentiment --content="お前がどれだけ軽い銃を使おうが知ったこっちゃ無いが、俺に言わせりゃロマンに欠けるな"
{
  "documentSentiment": {
    "magnitude": 0.5,
    "score": 0.5
  },
  "language": "ja",
  "sentences": [
    {
      "sentiment": {
        "magnitude": 0.5,
        "score": 0.5
      },
      "text": {
        "beginOffset": 0,
        "content": "お前がどれだけ軽い銃を使おうが知ったこっちゃ無いが、俺に言わせりゃロマンに欠けるな"
      }
    }
  ]
}
```

https://cloud.google.com/natural-language/docs/reference/rest/v1beta2/Sentiment
magnitudeはどれだけ感情的か、scoreはネガティブなら負、ポジティブなら正になる。のかな。

もう少し情熱的な言葉を投げてみる。

```
$ gcloud ml language analyze-sentiment --content="奴は、、奴は、奴は本物だあー、！\
> 生きていやがった！生きていやがったんだ、あーはっはっは…\
> 貴様が死なんなら俺も死なん！こうなったら終わりはないぞー！\
> 地獄の底まで付き合ってやる。貴様の骨にこの手で戒名を刻んでやるぞー！"
{
  "documentSentiment": {
    "magnitude": 2.3,
    "score": 0.3
  },
  "language": "ja",
  "sentences": [
    {
      "sentiment": {
        "magnitude": 0.0,
        "score": 0.0
      },
      "text": {
        "beginOffset": 0,
        "content": "奴は、、奴は、奴は本物だあー、！"
      }
    },
    {
      "sentiment": {
        "magnitude": 0.6,
        "score": 0.6
      },
      "text": {
        "beginOffset": 48,
        "content": "生きていやがった！"
      }
    },
    {
      "sentiment": {
        "magnitude": 0.6,
        "score": 0.6
      },
      "text": {
        "beginOffset": 75,
        "content": "生きていやがったんだ、あーはっはっは…"
      }
    },
    {
      "sentiment": {
        "magnitude": 0.0,
        "score": 0.0
      },
      "text": {
        "beginOffset": 132,
        "content": "貴様が死なんなら俺も死なん！"
      }
    },
    {
      "sentiment": {
        "magnitude": 0.1,
        "score": 0.1
      },
      "text": {
        "beginOffset": 174,
        "content": "こうなったら終わりはないぞー！"
      }
    },
    {
      "sentiment": {
        "magnitude": 0.3,
        "score": 0.3
      },
      "text": {
        "beginOffset": 219,
        "content": "地獄の底まで付き合ってやる。"
      }
    },
    {
      "sentiment": {
        "magnitude": 0.4,
        "score": 0.4
      },
      "text": {
        "beginOffset": 261,
        "content": "貴様の骨にこの手で戒名を刻んでやるぞー！"
      }
    }
  ]
}
```

とっつぁんのおかげで、キチンと1文ごとと文章全体を分析して結果を返してくれることがわかった。
Google的には、骨に戒名を刻むことがすごくポジティブな行動であることもわかった。

## 構文解析

```
$ gcloud ml language analyze-syntax --content="お前がどれだけ軽い銃を使おうが知ったこっちゃ無いが、俺に言わせりゃロマンに欠けるな"

...ロマンに欠けるので結果は割愛...
```

## コンテンツの分類

```
$ gcloud ml language classify-text --content="お前がどれだけ軽い銃を使おうが知ったこっちゃ無いが、俺に言わせりゃロマンに欠ける"
ERROR: (gcloud.ml.language.classify-text) INVALID_ARGUMENT: The language ja is not supported for classify_text analysis.

```
日本語には対応しておらず。


以上。