80
99

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 3 years have passed since last update.

Googleが誇る自然言語処理モデル「BERT」のAIを簡単に作れるWebアプリを作ってみた

Last updated at Posted at 2021-03-28

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

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

今回作ったもの

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

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

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

何ができるの?

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

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

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

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

画面イメージ

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. 学習モデルによる自動アノテーション機能

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

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

自動アノテーション機能.png

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

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

80
99
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
80
99

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?