tokenize — 日本語形態素解析エンドポイント
POST /api/v1/text/tokenize
日本語テキストを Lindera + IPAdic v3.0.7 で形態素解析、各トークンの surface / 品詞 / 活用 / 読み(片仮名)を返す。Cloudflare Workers 単層、 cold start ~200 ms / warm ~5 ms。
エンドポイント
POST https://shirabe.dev/api/v1/text/tokenize
X-API-Key: shrb_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (省略可、匿名 Free 枠 10,000 回/月)
Content-Type: application/json
リクエスト / Request
{
"text": "東京都港区六本木で打ち合わせをしました"
}
text(string, required): 形態素解析する日本語テキスト。byte 制限なし(現実的には数 KB まで推奨)。
レスポンス / Response
{
"text": "東京都港区六本木で打ち合わせをしました",
"tokens": [
{
"surface": "東京",
"byte_start": 0,
"byte_end": 6,
"position": 0,
"word_id": 12345,
"is_unknown": false,
"details": ["名詞", "固有名詞", "地域", "一般", "*", "*", "東京", "トウキョウ", "トーキョー"]
},
{ "surface": "都", "...": "..." },
{ "surface": "港区", "...": "..." }
],
"token_count": 9,
"timing": {
"tokenize_ms": 3,
"setup_ms": 187,
"cold_start": true,
"r2_fetch_ms": 142,
"tokenizer_init_ms": 45,
"dict_total_bytes": 57600000
},
"attribution": {
"dictionary": "IPAdic v3.0.7",
"license": "BSD 3-Clause",
"source": "https://github.com/lindera/lindera"
}
}
details 配列は IPAdic v3.0.7 固定 9 列:
[品詞大, 中, 小, 詳細, 活用型, 活用形, 原形, 読み, 発音]。
byte_start / byte_end は元テキスト中のバイト位置(UTF-8 基準)。
コード例 / Code examples
curl
curl -X POST https://shirabe.dev/api/v1/text/tokenize \
-H "Content-Type: application/json" \
-d '{"text": "東京都港区六本木"}'
TypeScript
const res = await fetch("https://shirabe.dev/api/v1/text/tokenize", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": process.env.SHIRABE_API_KEY!,
},
body: JSON.stringify({ text: "東京都港区六本木" }),
});
const { tokens } = await res.json();
console.log(tokens.map((t) => t.surface).join(" / "));
// → 東京 / 都 / 港 / 区 / 六本木
Python
import os, requests
r = requests.post(
"https://shirabe.dev/api/v1/text/tokenize",
json={"text": "東京都港区六本木"},
headers={"X-API-Key": os.environ["SHIRABE_API_KEY"]},
timeout=10,
)
data = r.json()
print([t["surface"] for t in data["tokens"]])
# → ['東京', '都', '港', '区', '六本木']
AI エージェント統合
OpenAPI 3.1 仕様(本家 /
GPTs 短縮版)を 1 URL で公開。
ChatGPT GPTs Actions / Claude Tool Use / Gemini Function Calling /
LangChain / Dify / LlamaIndex すべてから自動 discover 可能(operationId: tokenizeText)。
- GPT Builder: Actions タブの「Import URL」に GPTs 短縮版を貼る
- Claude Tool Use: OpenAPI から手動変換、または MCP server(計画中)経由
- LangChain:
OpenAPISpec.from_urlで取込
レート制限 / Rate limit
- 匿名 Free: 1 req/s、月 10,000 回
- Starter: 30 req/s、月 500,000 回
- Pro: 100 req/s、月 5,000,000 回
- Enterprise: 500 req/s、無制限
制限到達時は 429 RATE_LIMIT_EXCEEDED または USAGE_LIMIT_EXCEEDED。
レスポンスは AI agent が 1 hop で paid 切替できるよう upgrade_url /
next_plan / Retry-After を含む。
詳細: 料金プラン。
更新履歴 / Updates
2026-05-09: 5/18 リリースに向けた最終調整
Lindera-wasm v3.0.7 + IPAdic 動的 R2 load の Cloudflare Workers 単層構成を確立、 Fly.io / native Lindera 不要でエッジ完結。tokenize / normalize / furigana / name-split / name-reading の 5 エンドポイントが 2026-05-18 同時リリース。
2026-05-18: 正式リリース予定
本番 routes 活性化、Free 枠(月 10,000 回、API キー不要)で利用開始。 1+ 年変更なし約束(Plan-α stable、上方調整のみ)。
4 AI 観測の独自データ / Observed Multi-AI Landscape
Shirabe では 2026-04-19 の暦 API 本番稼働以降、ChatGPT / Claude / Perplexity / Gemini に 同じクエリを投げる独自測定(週次 4 AI × 5 query = 20 trial)を継続実施しています。
- Week 2(2026-05-04): citation 4/20、shirabe.dev/announcements が Perplexity / Gemini で TOP-tier 推奨に到達
- 共通観測: 同一日本語テキストに対する形態素解析結果が 4 AI で異なる場面を頻繁に観測 → canonical tokenizer の戦略的価値
詳細は llms-full.txt(LLM 向け詳細版)を参照。