📝

自然言語処理モデル「BERT」によるテキスト分類AIを簡単に作れるWebアプリを作った

2021/04/02に公開

こんにちは。
趣味でWebサービスの個人開発をしている、2z(Twitter: @2zn01 )と申します。

ノーコードで誰でも簡単にAIを作れる「AIメーカー」というサービスを運営しています。

今回作ったもの

今回は「AIメーカー」でGoogleが誇る自然言語処理モデル「BERT」によるテキスト分類のAIを簡単に作れる機能をリリースしましたので、ご紹介します。

以下の3ステップで誰でも簡単にテキスト分類のAIを作れます!

  1. AIに学習させるテキストのラベルを設定
  2. 学習データはツイッターから自動で収集
  3. AIがデータから学習

何ができるの?

指定したテキストを学習時に定義したカテゴリへ分類するAIを作ることができます。
分かりやすい用途としては、コメントのスパム判定などが考えられます。

試しに、ローランドさんの「俺か、俺以外か」をテキストから見分けるAIを作ってみました。

以下のように、テキストやTwitterの直近のツイートやプロフィールなどから、AIによる診断を試すことができます。

以下のURLより、実際に試せますので、ぜひ遊んでみてください。

  • 俺か俺以外か

https://aimaker.io/app/text-classification/id/5798

  • 駆け出しエンジニア判定

https://aimaker.io/app/text-classification/id/5877

  • プログラミング適正診断

https://aimaker.io/app/text-classification/id/5758

  • 会社員・フリーランス診断

https://aimaker.io/app/text-classification/id/4028

画面イメージ

AIモデル登録画面

AIモデル登録画面

学習データの登録画面

学習データの登録画面

モデルの学習画面

モデルの学習画面

モデルの学習履歴

モデルの学習履歴

モデルの推論画面

モデルの推論画面

モデルの推論結果画面

モデルの推論結果画面

システム構成図

システム構成図は以下の通りです。

AIメーカー-システム構成図

Amazon Web Services(以下、AWS)を使ってサービスを構築しました。

大きな構成としては、主にユーザからのリクエストを受け付けるフロントサーバと機械学習の処理を取り扱うバックエンドサーバの2つです。

使用技術

Linux

クラウドのホスティングはAWSで、EC2でサーバを立てています。
サーバのOSはLinuxでフロントサーバ側はAmazon Linux2、バックエンドサーバ側はUbuntuを使っています。

Apache

webサーバはApacheを使っています。
Nginxもありますが、Apacheは普段から使っており、設定方法も把握しているため、いつも通りの安定の選択としました。

MySQL(Amazon RDS)

データベースはMySQL(Amazon RDS)を使用しています。

NFS(Amazon EFS)

各インスタンスでファイルを共有するため、NFS(ネットワークファイルシステム)として、Amazon EFSを使用しています。

PHP

フロントサーバのプログラムはPHPを使って実装しています。

Python

バックエンドサーバのプログラムはPythonを使っています。
また、フロントサーバ側からバックエンド処理を呼び出すためのAPIは、「FastAPI」というフレームワークを使って実装しています。

ktrain

「ktrain」はディープラーニングを簡単にローコードで使えるライブラリです。
TensorFlow, Keras, transformers, scikit-learn, stellargraphなどの軽量ラッパーで、たった数行程度のコードでファインチューニング、推論などを実行することができます。

HuggingFace Transformers

Hugging Face社が提供している、自然言語処理のディープラーニングのフレームワークです。
TensorFlowとPyTorchの両方に対応していて、BERTなどの最先端のアルゴリズムを手軽に試すことができます。
今回はktrainを通して利用しています。

TensorFlow

TensorFlowは、Googleが開発・オープンソースで公開されている、機械学習のフレームワークです。
今回はktrainを通して利用しています。

実装で工夫した箇所など

1. 学習データの自動収集

AIのモデル作成で大変なのが学習データの収集です。
AIメーカーではとにかく手軽に誰でも試せるように、ツイッターAPIを使ってラベル名をもとにツイートを自動収集し、学習データとして利用することができます。

また、自動収集だけでなく、CSVアップロードによる学習データの登録にも対応しています。

学習データの登録画面

2. 学習モデルによる自動アノテーション機能

学習データ(教師データ)を用意する際のラベル付け、大変ですよね、、?

そこで、学習済みのモデルから自動でアノテーション(ラベル付け)する機能を用意しました。

自動アノテーション機能

自動アノテーション機能を使った場合は、そのラベル付けが正しいかをチェックする必要がありますが、ゼロからラベル付けするよりも、アノテーション作業の手間を減らすことができます。

API

作ったAIは、APIを使ってwebサービスやアプリに組み込めるようにしています。
自分が作ったAIはもちろん、他の方が作って公開されているAIもAPIでご活用頂けます。

APIの呼び出し方法

HTTPリクエスト

POST https://aimaker.io/text/classification/api

クエリパラメータ

パラメータ 説明
id integer モデルのIDを指定してください(必須)
apikey string APIキーを指定してください(必須)
text string 分類したいテキストを指定してください(必須)

モデルID、APIキーについては、AIメーカーの各モデル画面の「APIを使う!」をご覧ください。
https://aimaker.io/app/text-classification/id/5877

各モデルは以下URLのみんなのAIから検索頂けます。
https://aimaker.io/app/search

CURLでAPIを実行する場合

curl -X POST -F id=$id -F apikey=$apikey -F "text=テキスト" "https://aimaker.io/text/classification/api"

成功時のレスポンス

JSON形式


{
    "state": 1,
    "text": "テキスト",
    "labels": {
        "0": {
            "score": 0.997,
            "label": "ラベル0"
        },
        "1": {
            "score": 0.003,
            "label": "ラベル1"
        }
    }
}

失敗時のレスポンス

JSON形式


{
    "state": 0,
    "messages": [
        "不正なアクセスです。"
    ]
}

APIの活用例

あくまで一例ですが、以下のような活用が可能かと思います。

  • webサービスにテキスト分類AIを組み込む
  • アプリにテキスト分類AIを組み込む
  • LINE BOTなどでテキスト分類の診断Botを作る

AIメーカーとそのAPIを使うことで、自分でテキスト分類AIのモデルを作る手間を省いてシステムに組み込めるので、ぜひご活用ください。

最後に

今回は「AIメーカー」でGoogleが誇る自然言語処理モデル「BERT」によるテキスト分類のAIを作れる機能について、ご紹介しました。

以下のURLよりぜひAIを作って、試してみてください!

■URL
https://aimaker.io/

皆さんもぜひ試して頂いた際には、試した結果をTwitterにシェアして頂けると嬉しいです!

また、このサービスに少しでも興味をもって頂けましたら、ぜひともフォローやいいね、リツイートで応援お願いします!

普段は以下のようなサービスを開発・運営していますので、興味があるものがございましたら、ぜひとも使ってみて頂けると嬉しいです!

  • AIメーカー

https://aimaker.io/

誰でも簡単にAIを作ったり、試したりできるサービスです。
使ったAIを活用するためのAPIも提供していますので、ぜひご活用ください。

  • waifu2x-multi

https://waifu2x.me/

画像・動画を高画質化・拡大・ノイズ除去できるサービスです。

  • 文字起こすくん

https://text.aimaker.io/recognize-bot/

画像、音声、動画をアップするだけで簡単に文字起こし・書き起こしできるサービスです。話者の識別も可能になりました!

  • テロップメーカー

https://text.aimaker.io/recognize-video/

動画をアップロードするだけで、動画内の音声を認識して文字起こしを行い、自動で動画に字幕・テロップをつけるサービスです。こちらも話者の識別が可能になりました!

  • Clubhouse Watch

https://watchclub.house/

Clubhouseの配信情報・人気ランキングを見たり、ルーム検索機能で話題のルームや興味のあるルームを探せるサービスです。

Discussion