PythonでWatson APIのNLCを使う

目的

 Watson API の NLC(Natural Language Classifier)を使いたい!

 できれば、Python でやりたい!

 

参考リンク

 nl-classifier - API Reference | IBM Watson Developer Cloud

 

動作環境

 Windows7

 Python 2.7.13 :: Anaconda 4.3.1 (64-bit)

 

やりかた

 1.Python で Watson API を使えるようにする

   コマンドプロンプトから以下を実行

   > pip install watson-developer-cloud

 

 2.自然言語の分類器の操作

  1)分類器の作成

    以下の形式で質問文と分類結果をCSVファイルで作成。UTF-8コードで保存。

質問1,カテゴリA
質問2,カテゴリA
質問3,カテゴリA
質問5,カテゴリB
質問6,カテゴリB
質問7,カテゴリB
質問8,カテゴリC
質問9,カテゴリC

    A.ユーザ名とパスワードを確認

      ⇒ Bluemix にログイン

      ⇒ Natuural Language Classifier サービスにログイン

      ⇒ サービス資格情報

      ⇒ 資格情報の表示 で "username" と "password" を確認

    B.Python で以下を実行

# -*- coding: utf-8 -*
import json
from watson_developer_cloud import NaturalLanguageClassifierV1
natural_language_classifier = NaturalLanguageClassifierV1(username='ユーザ名', password='パスワード')
with open('CSVファイルのパス', 'rb') as training_data:
  classifier = natural_language_classifier.create(
    training_data=training_data,
    name='mikasute',
    language='ja'
  )
print(json.dumps(classifier, indent=2))

  2)分類器のリスト

    Python で以下を実行

# -*- coding: utf-8 -*
import json
from watson_developer_cloud import NaturalLanguageClassifierV1 as NaturalLanguageClassifier
natural_language_classifier = NaturalLanguageClassifier(username='ユーザ名', password='パスワード')
classifiers = natural_language_classifier.list()
print(json.dumps(classifiers, indent=2))

  3)分類器の情報取得

    A.前項の分類器のリスト表示で分類器IDを参照

    B.Python で以下を実行

# -*- coding: utf-8 -*
import json
from watson_developer_cloud import NaturalLanguageClassifierV1 as NaturalLanguageClassifier
natural_language_classifier = NaturalLanguageClassifier(username='ユーザ名', password='パスワード')
status = natural_language_classifier.status('分類器ID')
print (json.dumps(status, indent=2))

  4)分類

    Python で以下を実行

# -*- coding: utf-8 -*
import json
from watson_developer_cloud import NaturalLanguageClassifierV1
natural_language_classifier = NaturalLanguageClassifierV1(username='ユーザ名', password='パスワード')
classes = natural_language_classifier.classify('分類器ID', '質問文')
print classes['text'], '->', classes['top_class']
for x in classes['classes']:
  print x['class_name'], round(x['confidence'],2)

  5)分類器の削除

    Python で以下を実行

# -*- coding: utf-8 -*
import json
from watson_developer_cloud import NaturalLanguageClassifierV1
natural_language_classifier = NaturalLanguageClassifierV1(username='ユーザ名', password='パスワード')
classes = natural_language_classifier.remove('分類器ID')
print(json.dumps(classes, indent=2))

 

Good Luck !!!