初心者向け

n8n Text Classifierの使い方

AIに文章を読ませて、決めた分類ごとに出口を分ける Text Classifier を、問い合わせ6件で動かして確かめました。既定ではどの分類にも当てはまらない文が黙って消えること、複数の分類を許すと同じデータが2つの出口に出ること、用件が分かりにくい文は1つにしか分けないことを実測しています。

動作確認: — n8n 2.36.8 / Text Classifier v1.1 / Claude Haiku 4.5

Text Classifier は、AIに文章を読ませて、あらかじめ決めた分類(「在庫の質問」「来店の相談」など)のどれに当たるかを判断させ、分類ごとに別の出口へ流すノードです。 問い合わせを用件ごとに振り分けるときに使います。

実際に動かして分かったことは、次の3つです。

  • 既定のままだと、どの分類にも当てはまらない文は、エラーも出さずに消える
  • 複数の分類を許す設定にすると、同じデータが2つの出口の両方から出る
  • それでも、用件が分かりにくい文は1つの分類にしか入らない

まず1回動かす

問い合わせの文を6件用意し、Text Classifier に流しました。

  1. Manual Trigger の後ろに Code ノードを置き、次のようなアイテムを6件返す

    return [
      { json: { id: 'stock', text: 'グレーのリネン2人掛けソファの在庫はありますか?' } },
      { json: { id: 'visit', text: '今週土曜の午後に見に行きたいです' } },
      { json: { id: 'both',  text: '3人掛けソファを見に、日曜にお店に行きたいです' } },
      { json: { id: 'claim', text: '先月買ったチェアの脚がぐらつきます' } },
      { json: { id: 'greet', text: 'こんにちは' } },
      { json: { id: 'english', text: 'Do you have oak dining tables in stock?' } },
    ];
  2. その後ろに Text Classifier を置き、Text to Classify に {{ $json.text }} を入れる

  3. Categories に2つ追加する

    • 在庫の問い合わせ(説明:商品の在庫、価格、サイズ、取り扱いの有無についての質問)
    • 来店予約(説明:店舗に来店する日時の相談や予約)
  4. 下の Model に、AIのモデル(ここでは Claude Haiku 4.5)をつなぐ

  5. Execute workflow を押す

結果はこうでした。

文 出た出口
グレーのソファの在庫は? 在庫の問い合わせ
Do you have oak dining tables in stock? 在庫の問い合わせ
今週土曜の午後に見に行きたい 来店予約
3人掛けソファを見に、日曜に行きたい 来店予約
チェアの脚がぐらつく どこにも出ない
こんにちは どこにも出ない

英語の文も、日本語で書いた分類に正しく振り分けられました。 出口から出てくるデータは、入ってきたものがそのままです(id と text)。分類の名前などは足されません。

当てはまらない文は、黙って消える

上の表で、チェアの不具合と「こんにちは」は、どの出口からも出てきませんでした。エラーも出ず、実行は「成功」です。

これは When No Clear Match(どの分類にも当てはまらないとき)という設定の既定値が「捨てる」だからです。 しかもこの設定は、Options の Add Option から追加しないと画面に出てきません。置いたままでは、捨てる設定になっていることが見えません。

Text Classifierノードの設定画面。Text to Classify に {{ $json.text }}、Categories に Categories 1 と Categories 2。Options に Allow Multiple Classes To Be True のスイッチ(オン)と、When No Clear Match(Output on Extra, 'Other' Branch)がある。Add Option を押して開いた一覧に System Prompt Template、Enable Auto-Fixing、Batch Processing が並んでいる
When No Clear Match と Allow Multiple Classes To Be True は、どちらも Options に追加して初めて現れる

When No Clear Match を Output on Extra, ‘Other’ Branch にすると、出口が1つ増え、当てはまらない2件はそこから出てきました。 問い合わせの振り分けに使うなら、必ずこの設定にして、Other の出口を人に回す処理につないでください。 黙って消えた問い合わせには、誰も返事をしません。

消えても、ほかのデータは止まらない

6件まとめて流したときは、消えたのは当てはまらない2件だけで、残りの4件はそのまま先に進みました。

ただし、Loop Over Items で1件ずつ回している中で使うと話が変わります。 捨てられた1件はループの「次へ」に戻る線を通らないので、ループがそこで止まり、後ろに並んでいたデータが全部処理されません。 メール対応を自動化したときに、実際にこれで5通が放置されました(記録)。

用件が2つある文は、1つの出口にしか出ない

「3人掛けソファを見に、日曜にお店に行きたい」は、ソファの在庫と来店の2つの用件を含みますが、来店予約にしか入りませんでした。 既定では、1つの文は1つの分類にしか入りません。

複数の分類を許すと、同じデータが2つの出口に出る

Options に Allow Multiple Classes To Be True を追加してオンにし、用件がはっきり2つある文で試しました。

文 既定 複数の分類を許す
グレーのソファの在庫があるか教えてください。あと、今週土曜の午後に来店の予約をしたいです。 在庫の問い合わせ 在庫の問い合わせ と 来店予約 の両方
ダイニングテーブルの在庫と価格を知りたいです。実物を見たいので、来週の水曜に伺えますか? 在庫の問い合わせ 両方
3人掛けソファを見に、日曜にお店に行きたいです 来店予約 来店予約だけ

用件をはっきり2つ書いた文は、同じデータが2つの出口の両方から出てきました。 一方、「ソファを見に、日曜に行きたい」は、複数を許しても来店予約だけでした。AIには「見に行く」用件の一部と読めたのだと思います(ここは推測です)。

両方の出口から出るということは、後ろの処理も2回動くということです。 問い合わせに返事の下書きを作る仕組みなら、1通のメールに下書きが2通できることになります。使うときは、後ろでどう合わせるかまで決めておく必要があります(2通できるところまでは試していません)。

費用と回数

AIを呼ぶのは、1件につき1回でした。6件を流すと、AIの呼び出しは6回です。 1回あたりの量は、入力が約550〜620、出力が約40トークンでした(Claude Haiku 4.5、分類2つ、短い文の場合)。

分類の説明を長く書くほど、入力は増えます。

ほかの設定

Add Option から追加できる、残りの設定です。どれも試していません。

設定 定義に書かれている内容
System Prompt Template AIへの指示の文。既定は「次の分類のどれかに分けて、説明せずに JSON だけを出す」という内容
Enable Auto-Fixing AIの出力が壊れていたときに、もう一度AIを呼んで直す(既定はオン)
Batch Processing 何件ずつ同時に処理するか(既定は5件)と、間の待ち時間

確認していないこと

  • 使ったモデルは Claude Haiku 4.5 だけです。ほかのモデルで分類の結果が変わるかは見ていません
  • 分類は2つ(在庫・来店)だけで試しました。分類を増やしたときの正確さは見ていません
  • 同じ文を何度も流したときに、毎回同じ分類になるかは、ここでは1回ずつしか見ていません(メール対応のときは、「ソファを見に日曜に」を5回流して5回とも来店予約でした)
  • System Prompt Template、Enable Auto-Fixing、Batch Processing は試していません

次に読む

次に読む