9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

COTOHAで文章の類似度を取得してみる

Posted at

COTOHA

公式サイト
image.png

実装

  • COTOHAというNTTが提供している自然言語系のAPIを触ってみます。
  • 文章と文章の類似度を算出するAPIを使います。
  • Ipython形式で実装します。

ライブラリのインポート

import json
import numpy as np
import pandas as pd
import urllib.request
from os import path

情報の定義

  • アカウントホームのデータを定義する。
  • Developer API Base URLAccess Token Publish URLは全ユーザー共通だと思いますが、念のため各自登録してお調べください。
スクリーンショット_2019-07-24_8_33_45.png
base_url = [Developer API Base URL]
developer_id = [Developer Client id]
secret = [Developer Client secret]
token_url = [Access Token Publish URL]
    'Content-Type': 'application/json',
}

アクセストークンの取得

  • アクセストークンを取得するため、POSTでアクセストークン取得用のAPIにアクセスします。
data = {
  'grantType': 'client_credentials',
  'clientId': developer_id,
  'clientSecret': secret
}

req = urllib.request.Request(token_url, json.dumps(data).encode(), headers=headers, method='POST')
with urllib.request.urlopen(req) as res:
    access_info = json.load(res)
print(access_info['access_token'])

単語文章同士の類似度取得

*取得したアクセストークンをヘッダーに詰めて、類似度取得APIにアクセスします。

def similarity_api(s1: str, s2: str):
    data = {
        's1': s1,
        's2': s2,
        'type': 'default'
    }
    headers = {
        'Content-Type': 'application/json;charset=UTF-8',
        'Authorization': 'Bearer {}'.format(access_info['access_token'])
    }
    url = base_url + 'nlp/v1/similarity'
    req = urllib.request.Request(url, json.dumps(data).encode(), headers=headers, method='POST')
    with urllib.request.urlopen(req) as res:
        body = json.load(res)
    return body
similarity_api('近くのレストランはどこですか?', 'このあたりの定食屋はどこにありますか?')

所感

  • 単語や文章の類似度の算出は、tf-idf、word2vecやdoc2vecで割と世の中に出回っているため、目新しさはないです。
  • ただ、機械学習に慣れていない方には比較的に簡単に扱えるため、便利だと思います。
  • また、wikipediaのデータで自分で学習したword2vecのモデルより、対応している単語も多くかつ、類似度の精度も高い印象でした。
9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?