|
Webソフトやアプリ開発に役立つAPIを無料で提供する【gooラボ】 gooラボが自然言語処理 関連で、形態素解析APIや固有表現抽出API を公開しています。ずいぶん前にさわったのを忘れてましたので、改めてメモっときます 使い方は、 API利用方法 |ソフト・アプリ開発のAPIなら【gooラボ】 ここに説明があります。GitHubのアカウントを用いて、アプリケーションIDを取得すればOKですね。そのIDは APIを呼び出すときにパラメタに載せるような識別子になってます。 あ、利用規約を見ると非商用利用のみとなってますのでご注意。一日に大量アクセスすると制限かかるかもね、と書いてありますが、明確にこれくらいまでってのはなさそうです。。 形態素解析API †curlで呼び出すとこんな感じ。 $ cat parameter.json
{
"app_id":"31e6exxxxxxxxxxxx",
"sentence":"鈴木さんがきょうの9時30分に横浜に行きます。"
}
$ curl -X POST \ -H 'Content-Type:application/json' \ -H 'Accept:application/json' \ --data-binary @parameter.json \ https://labs.goo.ne.jp/api/morph 実行結果: {
"request_id": "labs.goo.ne.jp\t1532479475\t0",
"word_list": [
[
[ "鈴木", "名詞", "スズキ" ],
[ "さん", "名詞接尾辞","サン" ],
[ "が", "格助詞", "ガ" ],
[ "きょう", "名詞", "キョウ" ],
[ "の", "格助詞", "ノ" ],
[ "9時", "名詞", "クジ" ],
[ "30分", "名詞", "サンジュップン"],
[ "に", "格助詞", "ニ" ],
[ "横浜", "名詞", "ヨコハマ" ],
[ "に", "格助詞", "ニ" ],
[ "行", "動詞語幹", "イ" ],
[ "き", "動詞活用語尾", "キ" ],
[ "ます", "動詞接尾辞", "マス" ],
[ "。", "句点", "$" ]
]
]
}
結果は多少整形してます。 ちゃんと形態素にバラしてくれましたね。 固有表現抽出API †curlで呼び出すとこんな感じ。 $ cat parameter.json
{
"app_id":"31e6exxxxxxxxxxxx",
"sentence":"鈴木さんがきょうの9時30分に横浜に行きます。"
}
$ curl -X POST \ -H 'Content-Type:application/json' \ -H 'Accept:application/json' \ --data-binary @parameter.json \ https://labs.goo.ne.jp/api/entity 実行結果: {
"request_id": "labs.goo.ne.jp\t1532479348\t0",
"ne_list": [
[ "鈴木", "PSN" ],
[ "きょう", "DAT" ],
[ "9時30分","TIM" ],
[ "横浜", "LOC" ]
]
}
とれましたねー。 Pythonから呼び出す †つづいてPythonから呼んでみます。Vagrantなどで Pythonをつかえる環境を作成します。以下の通りやれば環境は構築できるかと思います。 $ git clone https://github.com/masatomix/ai-samples.git $ cd ai-samples/ $ git checkout -b tag refs/tags/0.0.1 $ vagrant up $ vagrant ssh vagrant@ubuntu-xenial:~$ cd /vagrant/samples/ vagrant@ubuntu-xenial:/vagrant/samples$ sudo pip3 install -r requirement.txt -t ./ vagrant@ubuntu-xenial:/vagrant/samples$ cp -pfr config/config.ini.sample config/config.ini vagrant@ubuntu-xenial:/vagrant/samples$ cat config/config.ini [payload] app_id = 31e6exxxxxxxxxxxx <-正しいのにしてください。 実行します。 $ sudo python3 goolab.py sentence: [鈴木さんがきょうの9時30分に横浜に行きます。] 固有表現抽出結果: ['鈴木', 'PSN'] ['きょう', 'DAT'] ['9時30分', 'TIM'] ['横浜', 'LOC'] 形態素解析結果: ['鈴木', '名詞', 'スズキ'] ['さん', '名詞接尾辞', 'サン'] ['が', '格助詞', 'ガ'] ['きょう', '名詞', 'キョウ'] ['の', '格助詞', 'ノ'] ['9時', '名詞', 'クジ'] ['30分', '名詞', 'サンジュップン'] ['に', '格助詞', 'ニ'] ['横浜', '名詞', 'ヨコハマ'] ['に', '格助詞', 'ニ'] ['行', '動詞語幹', 'イ'] ['き', '動詞活用語尾', 'キ'] ['ます', '動詞接尾辞', 'マス'] ['。', '句点', '$'] vagrant@ubuntu-xenial:/vagrant/samples$ うまくいきました! ソースは以下のような感じです vagrant@ubuntu-xenial:/vagrant/samples$ cat goolab.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import requests
import json
import configparser
config = configparser.ConfigParser()
config.read("./config/config.ini")
def main(args):
sentence = "鈴木さんがきょうの9時30分に横浜に行きます。"
print("sentence: [{0}]".format(sentence))
payload_obj = {
"app_id": config["payload"]["app_id"],
"sentence": sentence
}
entities = create_entities(payload_obj)
print("固有表現抽出結果:")
for entity in entities:
print(entity)
morphs = create_morphs(payload_obj)
print("形態素解析結果:")
for sentence in morphs:
for morph in sentence:
print(morph)
def create_morphs(payloadObj):
payload = json.dumps(payloadObj, ensure_ascii=False)
headers = {
"Accept": "application/json",
"Content-type": "application/json"
}
proxies, verify = get_proxy()
r = requests.post(
'https://labs.goo.ne.jp/api/morph',
data=payload.encode('utf-8').decode('latin-1'),
headers=headers,
proxies=proxies,
verify=verify)
return r.json()["word_list"]
def create_entities(payloadObj):
payload = json.dumps(payloadObj, ensure_ascii=False)
headers = {
"Accept": "application/json",
"Content-type": "application/json"
}
proxies, verify = get_proxy()
r = requests.post(
'https://labs.goo.ne.jp/api/entity',
data=payload.encode('utf-8').decode('latin-1'),
headers=headers,
proxies=proxies,
verify=verify)
return r.json()["ne_list"]
def get_proxy():
verify = True
proxies = None
if config["proxy"].getboolean("proxy"):
proxies = {
"http": config["proxy"]["http"],
"https": config["proxy"]["https"]
}
verify = False
return proxies, verify
if __name__ == "__main__":
main(sys.argv)
お疲れ様でした。 この記事は 現在のアクセス:2519 |