MediaPipe テキスト分類タスクを使用すると、肯定的な感情や否定的な感情など、定義された一連のカテゴリにテキストを分類できます。カテゴリは使用するモデルと モデルのトレーニング方法によって決まりますここでは、ウェブアプリと JavaScript アプリでテキスト分類器を使用する方法について説明します。
このタスクの実際の動作は、デモで確認できます。このタスクの機能、モデル、構成オプションの詳細については、概要をご覧ください。
サンプルコード
テキスト分類器のサンプルコードでは、このタスクの完全な実装を JavaScript で説明しています。このコードは、このタスクをテストし、独自のテキスト分類アプリの作成を開始するのに役立ちます。ウェブブラウザだけで、テキスト分類器のサンプルコードを表示、実行、編集できます。
セットアップ
このセクションでは、テキスト分類器を使用するための開発環境とコード プロジェクトをセットアップする主な手順について説明します。プラットフォームのバージョン要件など、MediaPipe Tasks を使用するための開発環境の設定に関する一般的な情報については、ウェブの設定ガイドをご覧ください。
JavaScript パッケージ
テキスト分類器のコードは、@mediapipe/tasks-text
パッケージから利用できます。これらのライブラリは、プラットフォームの設定ガイドにあるリンクから検索してダウンロードできます。
次のコマンドを使用して、ローカル ステージングに必要な次のコードを含む必要なパッケージをインストールできます。
npm install @mediapipe/tasks-text
サーバーにデプロイする場合は、次のように、jsDelivr などのコンテンツ配信ネットワーク(CDN)サービスを使用してコードを直接 HTML ページに追加できます。
<head>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@0.1/text-bundle.js"
crossorigin="anonymous"></script>
</head>
モデル
MediaPipe テキスト分類タスクには、このタスクと互換性のあるトレーニング済みモデルが必要です。テキスト分類器で利用可能なトレーニング済みモデルの詳細については、タスクの概要のモデル セクションをご覧ください。
モデルを選択してダウンロードし、プロジェクト ディレクトリに保存します。
<dev-project-root>/assets/bert_text_classifier.tflite
次のように、baseOptions
オブジェクトの modelAssetPath
パラメータを使用してモデルのパスを指定します。
baseOptions: {
modelAssetPath: `/assets/bert_text_classifier.tflite`
}
タスクを作成する
テキスト分類器の TextClassifier.createFrom...()
関数のいずれかを使用して、推論を実行するタスクを準備します。createFromModelPath()
関数は、トレーニング済みモデルファイルへの相対パスまたは絶対パスを指定して使用できます。次のコードサンプルは TextClassifier.createFromOptions()
関数の使い方を示しています。使用可能な構成オプションの詳細については、構成オプションをご覧ください。
次のコードは、このタスクをビルドして構成する方法を示しています。
async function createClassifier() {
const textFiles = await FilesetResolver.forTextTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
textClassifier = await TextClassifier.createFromOptions(
textFiles,
{
baseOptions: {
modelAssetPath: `https://storage.googleapis.com/mediapipe-tasks/text_classifier/bert_text_classifier.tflite`
},
maxResults: 5
}
);
}
createClassifier();
構成オプション
このタスクには、ウェブ アプリケーションと JavaScript アプリケーション用の次の構成オプションがあります。
オプション名 | 説明 | 値の範囲 | デフォルト値 |
---|---|---|---|
displayNamesLocale |
タスクのモデルのメタデータで提供される表示名に使用するラベルの言語を設定します(利用可能な場合)。英語の場合、デフォルトは en です。TensorFlow Lite Metadata Writer API を使用して、カスタムモデルのメタデータにローカライズされたラベルを追加できます。 | 言語 / 地域コード | en |
maxResults |
返されるトップスコアの分類結果の最大数を設定します(省略可)。0 未満の場合、利用可能なすべての結果が返されます。 | 任意の正の数 | -1 |
scoreThreshold |
モデル メタデータ(存在する場合)で指定された値をオーバーライドする予測スコアのしきい値を設定します。この値を下回る結果は拒否されます。 | 任意の浮動小数点数 | 未設定 |
categoryAllowlist |
許可されるカテゴリ名のオプション リストを設定します。空でない場合、カテゴリ名がこのセットにない分類結果は除外されます。重複するカテゴリ名や不明なカテゴリ名は無視されます。
このオプションは categoryDenylist と相互に排他的であり、両方を使用するとエラーが発生します。 |
任意の文字列 | 未設定 |
categoryDenylist |
使用できないカテゴリ名のオプション リストを設定します。空でない場合、カテゴリ名がこのセットに含まれる分類結果は除外されます。重複するカテゴリ名や不明なカテゴリ名は無視されます。このオプションは categoryAllowlist と相互に排他的であり、両方を使用するとエラーになります。 |
任意の文字列 | 未設定 |
データの準備
テキスト分類器はテキスト(String
)データを処理します。このタスクは、トークン化やテンソルの前処理など、データ入力の前処理を処理します。
すべての前処理は classify()
関数内で処理されます。入力テキストを事前に追加で前処理する必要はありません。
const inputText = "The input text to be classified.";
タスクを実行する
テキスト分類器は、classify()
関数を使用して推論をトリガーします。テキスト分類の場合、これは入力テキストに該当するカテゴリを返します。
次のコードは、タスクモデルで処理を実行する方法を示しています。
// Wait to run the function until inner text is set
const result: TextClassifierResult = await textClassifier.classify(
inputText
);
結果を処理して表示する
テキスト分類器は、入力テキストで使用可能なカテゴリのリストを含む TextClassifierResult
を出力します。カテゴリは使用するモデルによって定義されるため、別のカテゴリが必要な場合は、別のモデルを選択するか、既存のモデルを再トレーニングします。
このタスクからの出力データの例を次に示します。
TextClassificationResult:
Classification #0 (single classification head):
ClassificationEntry #0:
Category #0:
category name: "positive"
score: 0.8904
index: 0
Category #1:
category name: "negative"
score: 0.1096
index: 1
この結果は、入力テキスト "an imperfect but overall entertaining mystery"
に対して BERT 分類器を実行して取得されています。