テキストクラスタリング

複数の文を受け取り、同じトピックについて記述されている可能性が高い文同士をまとめ上げるテキストクラスタリング機能を提供します。

リクエストURL

JSON
https://jlp.yahooapis.jp/jsonrpc
※GETリクエストには対応していません。
※Client ID(アプリケーションID)をリクエストに付与する必要があります。詳細はサンプルコードをご覧ください。

リクエストパラメータ(POST)

JSON-RPC 2.0 の仕様に準拠しています。

パラメータ 値 説明
id(必須) string,integer JSON-RPC 2.0 のid。値は任意で、指定した値がレスポンスのidにも返ります。
jsonrpc(必須) string 値は「2.0」としてください。
method(必須) string 値は「jlp.text_clusterer.cluster」としてください。
params(必須) object
params/q(必須) string 改行(LF)区切りの文リストを、UTF-8とBASE64でエンコードした文字列を指定します。
最大1,000行の文を含めることができ、一文あたり65,536byteが上限です。
それぞれ上限をオーバーした場合はエラーが返ります。ファイルの中身を分割するなどしてリクエストし直してください。
params/similarity_threshold(任意) number 同クラスタと判定する文同士のコサイン類似度の下限です。
指定しない場合のデフォルト値は0.3です。
クラスタの粒度をより細かくしたい場合にこの数値を上げてください。
0.0より大きく、1.0より小さな値のみを受け取ります(それ以外の場合はエラーが返ります)。
データの性質や目的に応じて最適なsimilarity_thresholdは変わりうるので、
固定値としては扱わず、クラスタリング結果に応じて調整することを推奨します。

サンプルリクエスト

{
  "id": "1234-1",
  "jsonrpc" : "2.0",
  "method" : "jlp.text_clusterer.cluster",
  "params" : {
    "q" : "5aSp5rCX5LqI5aCx44Gv5pm044KM44Gg44GR44Gp44CB5LuK5pel44Gv5YKY44KS5oyB44Gj44Gm44GE44GT44GG44CC44GN44Gj44Go6Zuo44CCCuOCq+ODrOODvOODqeOCpOOCueOBruOBlOmjr+OBq+WPpOWPpOexs+OCkuS9v+eUqOOBmeOCi+OAguODqeODvOODoeODs+OBruODqeOCpOOCueOBq+aWsOexs+OCkuS9v+eUqOOBmeOCi+OAggrlpKnmsJfjga/ltKnjgozjgabjgYTjgovjga7jgaflgpjjgYzlo7LjgozjgovjgYvjgoLjgZfjgozjgarjgYTjgILmmbTjgozjgovjga7jga/lvZPliIblhYjjgafku4rml6Xjga/pm6jjga7jga/jgZrjgIIK5Y+k5Y+k57Gz44Gu5L6h5qC844GM5aSn5bmF5LiL6JC944CC44K544O844OR44O844Oe44O844Kx44OD44OI44Gr5q665Yiw44GZ44KL44Kr44Os44O844Op44Kk44K55aW944GN44CCCkJCUeODkeODvOODhuOCo+OBruaKvemBuOOBq+OBr+OBmuOCjOOBn+OBruOBp+S7iuaXpeOBr+OBteOBpuWvneOBmeOCi+OAggrlpKnmsJfjga7oia/jgYTml6Xjgavjgqvjg6zjg7zjgYzpo5/jgbnjgZ/jgYTjgILlhYjpgLHjga/ml6flnovjg4/jg7zjg4njgpLosrfjgYbjgbnjgY3jgaDjgaPjgZ/jgIIK5aSp5rCX44Gu6Imv44GE5pel44GrQkJR44OR44O844OG44Kj44KS6ZaL44GN44Gf44GE44CC5Y675bm044Gv44Os44OI44Ot44K944OV44OI44KS6LK344GG44G544GN44Gg44Gj44Gf44CCCuWkqeawl+OBruaCquOBhOaXpeOBq+OCq+ODrOODvOOCkumjn+OBueOCi+OBquOAguadpeW5tOOBr+acgOaWsOapn+eoruOCkuiyt+OBhuOBueOBjeOAggrlpKnmsJfjga7mgqrjgYTml6Xjgavjgqvjg6zjg7zjg6njgqTjgrnjgYzpo5/jgbnjgZ/jgYTjgILku4rpgLHjga/jgqLjg4rjg63jgrDmqZ/nqK7jgpLosrfjgYbjgbnjgY3jgII="
  }
}

サンプルコード

解析対象の文リストをエンコードし、テキストクラスタリングを使用したサンプルコードです。

レスポンスフィールド

JSON-RPC 2.0 の仕様に準拠しています。

フィールド 値 説明
id string,integer リクエストのidの値が返ります。
jsonrpc string 固定で「"2.0"」が返ります。
result object テキストクラスタリングの結果です。
result/blocked_result array(object) 各クラスタごとの情報の配列です。
result/blocked_result/index array(integer) クラスタとしてまとめ上げられた文の行番号(先頭行は1)の配列です。
いずれのクラスタにも含まれなかった文の行番号は出力されません。
result/blocked_result/topic array(string) まとめ上げられた文クラスタごとに抽出されたそれぞれのトピックです(最大10件)。
クラスタ中の各文に含まれるキーフレーズがトピックとして抽出されます。

サンプルレスポンス

以下は、上で例示したリクエストに対するレスポンスです。

{
  "id": "1234-1",
  "jsonrpc": "2.0",
  "result": {
    "blocked_result": [
      {
        "index": [
          1,
          3
        ],
        "topic": [
          "天気"
        ]
      },
      {
        "index": [
          2,
          4
        ],
        "topic": [
          "カレー"
        ]
      },
      {
        "index": [
          5,
          7
        ],
        "topic": [
          "天気"
        ]
      },
      {
        "index": [
          6,
          8,
          9
        ],
        "topic": [
          "カレー",
          "天気"
        ]
      }
    ]
  }
}

エラー

テキストクラスタリングは、Yahoo! JAPAN Web API に共通のエラーメッセージおよびコードが返ります。
また、リクエストパラメータが本ドキュメント記載の仕様と異なる場合、ステータスコード200で JSON-RPC 2.0 の仕様に準拠したレスポンスが返ることがあります。

フィールド 値 説明
id string, integer リクエストのidの値が返ります。
jsonrpc string 固定で「"2.0"」が返ります。
error object
error/code integer JSON-RPC 2.0 の仕様に準拠したエラーコードです。
error/message string JSON-RPC 2.0 の仕様に準拠したエラーメッセージです。

例1:不正なJSONの場合

リクエスト

{
  "id": "1234-1",
  "jsonrpc" : "2.0",
  "method" : "jlp.text_clusterer.cluster",
  "params" : {
    "q" : "5aSp5rCX5LqI5aCx44Gv5pm044KM44Gg44GR44Gp44CB5LuK5pel44Gv5YKY44KS5oyB44Gj44Gm44GE44GT44GG44CC44GN44Gj44Go6Zuo44CCCuOCq+ODrOODvOODqeOCpOOCueOBruOBlOmjr+OBq+WPpOWPpOexs+OCkuS9v+eUqOOBmeOCi+OAguODqeODvOODoeODs+OBruODqeOCpOOCueOBq+aWsOexs+OCkuS9v+eUqOOBmeOCi+OAggrlpKnmsJfjga/ltKnjgozjgabjgYTjgovjga7jgaflgpjjgYzlo7LjgozjgovjgYvjgoLjgZfjgozjgarjgYTjgILmmbTjgozjgovjga7jga/lvZPliIblhYjjgafku4rml6Xjga/pm6jjga7jga/jgZrjgIIK5Y+k5Y+k57Gz44Gu5L6h5qC844GM5aSn5bmF5LiL6JC944CC44K544O844OR44O844Oe44O844Kx44OD44OI44Gr5q665Yiw44GZ44KL44Kr44Os44O844Op44Kk44K55aW944GN44CCCkJCUeODkeODvOODhuOCo+OBruaKvemBuOOBq+OBr+OBmuOCjOOBn+OBruOBp+S7iuaXpeOBr+OBteOBpuWvneOBmeOCi+OAggrlpKnmsJfjga7oia/jgYTml6Xjgavjgqvjg6zjg7zjgYzpo5/jgbnjgZ/jgYTjgILlhYjpgLHjga/ml6flnovjg4/jg7zjg4njgpLosrfjgYbjgbnjgY3jgaDjgaPjgZ/jgIIK5aSp5rCX44Gu6Imv44GE5pel44GrQkJR44OR44O844OG44Kj44KS6ZaL44GN44Gf44GE44CC5Y675bm044Gv44Os44OI44Ot44K944OV44OI44KS6LK344GG44G544GN44Gg44Gj44Gf44CCCuWkqeawl+OBruaCquOBhOaXpeOBq+OCq+ODrOODvOOCkumjn+OBueOCi+OBquOAguadpeW5tOOBr+acgOaWsOapn+eoruOCkuiyt+OBhuOBueOBjeOAggrlpKnmsJfjga7mgqrjgYTml6Xjgavjgqvjg6zjg7zjg6njgqTjgrnjgYzpo5/jgbnjgZ/jgYTjgILku4rpgLHjga/jgqLjg4rjg63jgrDmqZ/nqK7jgpLosrfjgYbjgbnjgY3jgII="
  }

レスポンス

{
  "id": null,
  "jsonrpc": "2.0",
  "error": {
    "code": -32700,
    "message": "Parse error"
  }
}

例2:必須のパラメータがない場合

リクエスト

{
  "id": "1234-1",
  "jsonrpc": "2.0",
  "params": {
    "q": "5aSp5rCX5LqI5aCx44Gv5pm044KM44Gg44GR44Gp44CB5LuK5pel44Gv5YKY44KS5oyB44Gj44Gm44GE44GT44GG44CC44GN44Gj44Go6Zuo44CCCuOCq+ODrOODvOODqeOCpOOCueOBruOBlOmjr+OBq+WPpOWPpOexs+OCkuS9v+eUqOOBmeOCi+OAguODqeODvOODoeODs+OBruODqeOCpOOCueOBq+aWsOexs+OCkuS9v+eUqOOBmeOCi+OAggrlpKnmsJfjga/ltKnjgozjgabjgYTjgovjga7jgaflgpjjgYzlo7LjgozjgovjgYvjgoLjgZfjgozjgarjgYTjgILmmbTjgozjgovjga7jga/lvZPliIblhYjjgafku4rml6Xjga/pm6jjga7jga/jgZrjgIIK5Y+k5Y+k57Gz44Gu5L6h5qC844GM5aSn5bmF5LiL6JC944CC44K544O844OR44O844Oe44O844Kx44OD44OI44Gr5q665Yiw44GZ44KL44Kr44Os44O844Op44Kk44K55aW944GN44CCCkJCUeODkeODvOODhuOCo+OBruaKvemBuOOBq+OBr+OBmuOCjOOBn+OBruOBp+S7iuaXpeOBr+OBteOBpuWvneOBmeOCi+OAggrlpKnmsJfjga7oia/jgYTml6Xjgavjgqvjg6zjg7zjgYzpo5/jgbnjgZ/jgYTjgILlhYjpgLHjga/ml6flnovjg4/jg7zjg4njgpLosrfjgYbjgbnjgY3jgaDjgaPjgZ/jgIIK5aSp5rCX44Gu6Imv44GE5pel44GrQkJR44OR44O844OG44Kj44KS6ZaL44GN44Gf44GE44CC5Y675bm044Gv44Os44OI44Ot44K944OV44OI44KS6LK344GG44G544GN44Gg44Gj44Gf44CCCuWkqeawl+OBruaCquOBhOaXpeOBq+OCq+ODrOODvOOCkumjn+OBueOCi+OBquOAguadpeW5tOOBr+acgOaWsOapn+eoruOCkuiyt+OBhuOBueOBjeOAggrlpKnmsJfjga7mgqrjgYTml6Xjgavjgqvjg6zjg7zjg6njgqTjgrnjgYzpo5/jgbnjgZ/jgYTjgILku4rpgLHjga/jgqLjg4rjg63jgrDmqZ/nqK7jgpLosrfjgYbjgbnjgY3jgII="
  }
}

レスポンス

{
  "id": "1234-1",
  "jsonrpc": "2.0",
  "error": {
    "code": -32600,
    "message": "Invalid request"
  }
}

例3:存在しないmethodを指定した場合

リクエスト

{
  "id": "1234-1",
  "method": "invalid.method.name",
  "jsonrpc" : "2.0",
  "params" : {
    "q" : "5aSp5rCX5LqI5aCx44Gv5pm044KM44Gg44GR44Gp44CB5LuK5pel44Gv5YKY44KS5oyB44Gj44Gm44GE44GT44GG44CC44GN44Gj44Go6Zuo44CCCuOCq+ODrOODvOODqeOCpOOCueOBruOBlOmjr+OBq+WPpOWPpOexs+OCkuS9v+eUqOOBmeOCi+OAguODqeODvOODoeODs+OBruODqeOCpOOCueOBq+aWsOexs+OCkuS9v+eUqOOBmeOCi+OAggrlpKnmsJfjga/ltKnjgozjgabjgYTjgovjga7jgaflgpjjgYzlo7LjgozjgovjgYvjgoLjgZfjgozjgarjgYTjgILmmbTjgozjgovjga7jga/lvZPliIblhYjjgafku4rml6Xjga/pm6jjga7jga/jgZrjgIIK5Y+k5Y+k57Gz44Gu5L6h5qC844GM5aSn5bmF5LiL6JC944CC44K544O844OR44O844Oe44O844Kx44OD44OI44Gr5q665Yiw44GZ44KL44Kr44Os44O844Op44Kk44K55aW944GN44CCCkJCUeODkeODvOODhuOCo+OBruaKvemBuOOBq+OBr+OBmuOCjOOBn+OBruOBp+S7iuaXpeOBr+OBteOBpuWvneOBmeOCi+OAggrlpKnmsJfjga7oia/jgYTml6Xjgavjgqvjg6zjg7zjgYzpo5/jgbnjgZ/jgYTjgILlhYjpgLHjga/ml6flnovjg4/jg7zjg4njgpLosrfjgYbjgbnjgY3jgaDjgaPjgZ/jgIIK5aSp5rCX44Gu6Imv44GE5pel44GrQkJR44OR44O844OG44Kj44KS6ZaL44GN44Gf44GE44CC5Y675bm044Gv44Os44OI44Ot44K944OV44OI44KS6LK344GG44G544GN44Gg44Gj44Gf44CCCuWkqeawl+OBruaCquOBhOaXpeOBq+OCq+ODrOODvOOCkumjn+OBueOCi+OBquOAguadpeW5tOOBr+acgOaWsOapn+eoruOCkuiyt+OBhuOBueOBjeOAggrlpKnmsJfjga7mgqrjgYTml6Xjgavjgqvjg6zjg7zjg6njgqTjgrnjgYzpo5/jgbnjgZ/jgYTjgILku4rpgLHjga/jgqLjg4rjg63jgrDmqZ/nqK7jgpLosrfjgYbjgbnjgY3jgII="
  }
}

レスポンス

{
  "id": "1234-1",
  "jsonrpc": "2.0",
  "error": {
    "code": -32601,
    "message": "Method not found"
  }
}

利用制限

テキストクラスタリングでは、1リクエストの最大サイズを 100KB に制限しています。また、利用回数の制限については利用回数の制限についてをご参照ください。

補足情報

技術詳細については以下をご参照ください。

Renga Block: Q-grams Blocking を用いた 高速名寄せ・高速テキストクラスタリングの実装

アプリケーションの管理

目次

利用のルール

開発のヒント

サービス一覧