Google Cloud Natural Language APIで自然言語解析入門 | SiTest (サイテスト) ブログ

メニューボタン閉じるボタン

Google Cloud Natural Language APIで自然言語解析入門

自然言語処理というのをご存知でしょうか。
Machine Learning 等を使用して、普段我々が使用している言葉を解析・分析します。なんだか難しそうですよね。時間もかかりそうです。
今回は自然言語処理が簡単にできてしまうというGoogleが公開している自然言語処理APIを使ってみたいと思います。

自然言語処理とは?

自然言語処理(しぜんげんごしょり、英語: natural language processing、略称:NLP)は、人間が日常的に使っている自然言語をコンピュータに処理させる一連の技術であり、人工知能と言語学の一分野である。データベース内の情報を自然言語に変換したり、自然言語の文章をより形式的な(コンピュータが理解しやすい)表現に変換するといった処理が含まれる。応用例としては予測変換、IMEなどの文字変換が挙げられる。

(Wikipedia:自然言語処理)

日常的に使っている言葉から単語を抽出したり、要約や応答まですることを自然言語処理と呼ぶようです。

Google Cloud Natural Language APIとは?

Google Cloud Natural Language API は、使いやすい REST API による強力な機械学習モデルを提供することで、テキストの構造と意味を明らかにします。Natural Language API によって、例えばニュース記事やブログ記事で言及されている人、場所、イベントなどの情報を抽出できます。また、例えばソーシャルメディアなどで自社サービスについて書かれていることの感情(例 : “肯定的”、“否定的”)を理解したり、コールセンターやメッセージング アプリで使えば、趣旨を解析することもできます。

(Cloud Natural Language API)

テキストから人、場所、イベント等の情報を自然言語処理によって抽出してくれるようですね。
さらに感情まで理解してくれるとは!おもしろそうです!
これらはGoogleの機械学習アルゴリズムが実現しています。

自然言語処理をやってみよう

今回は以前私が書いたこちらの記事の一部を自然言語処理してみます。
Google Cloud Platformの公式ドキュメントを参考に進めましょう。

Google Cloud Platform にログインし、Cloud Natural Language APIを有効化します。

APIキーを取得し、APIにアクセス出来る状態にします。
 ※APIキーにIP制限等を付与するほうが安全です。

今回はPostman等のRESTクライアントを使って処理結果を得たいと思います。
PostmanのBodyにはJSONを指定します。

{
    "document":{
        "type":"PLAIN_TEXT",
        "language":"ja",
        "content":"謎のシンガー・ソングライター「ピコ太郎」が歌う「ペンパイナッポーアッポーペン」です。YouTubeでの再生回数は 1,000万回以上! 流行に敏感な中高生のみならず、あのジャスティン・ビーバーもTwitterで紹介するほどの人気で、PPAPを真似して踊っている動画が次々に投稿されています。"
    },
    "encodingType":"UTF8"
}

上記のようになJSONをBodyに記入します。

・document.type : ドキュメントのタイプ
・document.language : 指定言語
・document.content : 解析対象の文章(改行は入れないほうがいいようです)
・encodingType : document.contentの文字コード

それを以下のURLにPOSTします。

https://language.googleapis.com/v1beta1/documents:analyzeEntities?key={発行したAPIキー}

↓レスポンス↓

{
  "entities": [
    {
      "name": "ピコ太郎",
      "type": "PERSON",
      "metadata": {},
      "salience": 0,
      "mentions": [
        {
          "text": {
            "content": "ピコ太郎",
            "beginOffset": 45
          }
        }
      ]
    },
    {
      "name": "ペンパイナッポーアッポーペン",
      "type": "CONSUMER_GOOD",
      "metadata": {},
      "salience": 0,
      "mentions": [
        {
          "text": {
            "content": "ペンパイナッポーアッポーペン",
            "beginOffset": 72
          }
        }
      ]
    },
    {
      "name": "YouTube",
      "type": "OTHER",
      "metadata": {
        "wikipedia_url": "http://ja.wikipedia.org/wiki/YouTube"
      },
      "salience": 0,
      "mentions": [
        {
          "text": {
            "content": "YouTube",
            "beginOffset": 126
          }
        }
      ]
    },
    {
      "name": "ジャスティン",
      "type": "PERSON",
      "metadata": {
        "wikipedia_url": "http://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A3%E3%82%B9%E3%83%86%E3%82%A3%E3%83%B3%E3%83%BB%E3%82%A2%E3%83%83%E3%83%97%E3%83%88%E3%83%B3"
      },
      "salience": 0,
      "mentions": [
        {
          "text": {
            "content": "ジャスティン",
            "beginOffset": 229
          }
        }
      ]
    },
    {
      "name": "ビーバー",
      "type": "LOCATION",
      "metadata": {
        "wikipedia_url": "http://ja.wikipedia.org/wiki/%E3%83%93%E3%83%BC%E3%83%90%E3%83%BC"
      },
      "salience": 0,
      "mentions": [
        {
          "text": {
            "content": "ビーバー",
            "beginOffset": 250
          }
        }
      ]
    },
    {
      "name": "Twitter",
      "type": "OTHER",
      "metadata": {
        "wikipedia_url": "http://ja.wikipedia.org/wiki/Twitter"
      },
      "salience": 0,
      "mentions": [
        {
          "text": {
            "content": "Twitter",
            "beginOffset": 265
          }
        }
      ]
    },
    {
      "name": "PPAP",
      "type": "OTHER",
      "metadata": {},
      "salience": 0,
      "mentions": [
        {
          "text": {
            "content": "PPAP",
            "beginOffset": 308
          }
        }
      ]
    }
  ],
  "language": "ja"
}

レスポンスが返ってきました!
レスポンスもJSONで返っており、nameプロパティがそれぞれ自然言語として認識されたものになります。それぞれにTypeがついており、PERSONやCONSUMER_GOOD、OTHER等の言葉の品詞がついています。
さらに一部のデータにはWikipediaのリンクまで付いていますね!すごいです。
自然言語処理が簡単にできてしまいました!

まとめ

 今回の結果で「ジャスティン・ビーバー」がジャスティンとビーバーに分かれてしまい、それぞれ別のWikipediaリンクがついてしまったのは残念でした。まだBETA版とのことなので、今後に期待です!
 公式サイトにもありますがGoogle Cloud Speech API を組み合わせて音声データを言語処理したり、Vision API OCR と組み合わせてスキャンしたドキュメントを分析するのに使えるそうです。夢が膨らみます!
 みなさんも気軽に自然言語解析に挑戦してみてください。

今すぐお気軽に
ご相談ください。

0120-315-465

(平日 10:00~19:00)

今すぐお気軽に
ご相談ください。

0120-315-465

(平日 10:00~19:00)

グラッドキューブは
「ISMS認証」を取得しています。

認証範囲:
インターネットマーケティング支援事業、インターネットASPサービスの提供、コンテンツメディア事業

「ISMS認証」とは、財団法人・日本情報処理開発協会が定めた企業の情報情報セキュリティマネジメントシステムの評価制度です。

いますぐ無料で
お試しください。

SiTest の革新的な機能を
お試しいただけます。
利用規約

お名前【必須】
メールアドレス【必須】
電話番号【必須】