自然言語処理モデル「BERT」によるテキスト分類AIを簡単に作れるWebアプリを作った
こんにちは。
趣味でWebサービスの個人開発をしている、2z(Twitter: @2zn01 )と申します。
ノーコードで誰でも簡単にAIを作れる「AIメーカー」というサービスを運営しています。
- AIメーカー
https://aimaker.io/
今回作ったもの
今回は「AIメーカー」でGoogleが誇る自然言語処理モデル「BERT」によるテキスト分類のAIを簡単に作れる機能をリリースしましたので、ご紹介します。
以下の3ステップで誰でも簡単にテキスト分類のAIを作れます!
- AIに学習させるテキストのラベルを設定
- 学習データはツイッターから自動で収集
- AIがデータから学習
何ができるの?
指定したテキストを学習時に定義したカテゴリへ分類するAIを作ることができます。
分かりやすい用途としては、コメントのスパム判定などが考えられます。
試しに、ローランドさんの「俺か、俺以外か」をテキストから見分けるAIを作ってみました。
以下のように、テキストやTwitterの直近のツイートやプロフィールなどから、AIによる診断を試すことができます。
以下のURLより、実際に試せますので、ぜひ遊んでみてください。
- 俺か俺以外か
- 駆け出しエンジニア判定
- プログラミング適正診断
- 会社員・フリーランス診断
画面イメージ
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」というフレームワークを使って実装しています。
- FastAPI
https://fastapi.tiangolo.com/ja/
ktrain
「ktrain」はディープラーニングを簡単にローコードで使えるライブラリです。
TensorFlow, Keras, transformers, scikit-learn, stellargraphなどの軽量ラッパーで、たった数行程度のコードでファインチューニング、推論などを実行することができます。
HuggingFace Transformers
Hugging Face社が提供している、自然言語処理のディープラーニングのフレームワークです。
TensorFlowとPyTorchの両方に対応していて、BERTなどの最先端のアルゴリズムを手軽に試すことができます。
今回はktrainを通して利用しています。
- HuggingFace Transformers
https://github.com/huggingface/transformers
TensorFlow
TensorFlowは、Googleが開発・オープンソースで公開されている、機械学習のフレームワークです。
今回はktrainを通して利用しています。
- TensorFlow
https://www.tensorflow.org/?hl=ja
実装で工夫した箇所など
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を使う!」をご覧ください。
各モデルは以下URLのみんなのAIから検索頂けます。
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
皆さんもぜひ試して頂いた際には、試した結果をTwitterにシェアして頂けると嬉しいです!
また、このサービスに少しでも興味をもって頂けましたら、ぜひともフォローやいいね、リツイートで応援お願いします!
普段は以下のようなサービスを開発・運営していますので、興味があるものがございましたら、ぜひとも使ってみて頂けると嬉しいです!
- AIメーカー
誰でも簡単にAIを作ったり、試したりできるサービスです。
使ったAIを活用するためのAPIも提供していますので、ぜひご活用ください。
- waifu2x-multi
画像・動画を高画質化・拡大・ノイズ除去できるサービスです。
- 文字起こすくん
画像、音声、動画をアップするだけで簡単に文字起こし・書き起こしできるサービスです。話者の識別も可能になりました!
- テロップメーカー
動画をアップロードするだけで、動画内の音声を認識して文字起こしを行い、自動で動画に字幕・テロップをつけるサービスです。こちらも話者の識別が可能になりました!
- Clubhouse Watch
Clubhouseの配信情報・人気ランキングを見たり、ルーム検索機能で話題のルームや興味のあるルームを探せるサービスです。
Discussion