テキストの先頭語を抽出
「Hello, world — this is a preview.」からはHelloと、その長さの5文字、残りの部分が別々に返ります。引用符付きの「Autumn notes」ならAutumn、...first-word!ならfirst-wordです。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- Hello, world — this is a preview.
- 最初の単語
- Hello
- 長さ
- 5
- 元の値
- Hello, world — this is a preview.
- 開始インデックス
- 0
乱れた文字列から先頭の語を取り出すのは、タイトル用スラッグ、通知プレビュー、ログ解析、コマンド行の最初のトークンなど、あちこちに現れる小さな仕事です。この能力はテキストを読み、見出しや引用句を包みがちな空白と句読点を無視し、本当の先頭語をその長さと残りの余りとともに返します。先頭の空白、タブ、三点リーダー、引用符、末尾の読点は答えに入らないので、Hello, world は埋め草や句読点付きではなく Hello になります。
先頭語抽出の仕組みと、語として数えるもの
テキストから先頭の語を得る検索意図は、完全なトークナイザやユニーク語一覧よりも狭いものです。人々が欲しいのは、見出し、通知、ログ行、コマンドの開きトークンであり、まわりに付きがちな飾りを除いたものです。
この能力は語を Unicode の文字・結合記号・数字の最大連続として定義し、内部のアポストロフィやハイフンで任意に結ぶため、don't のような縮約や well-known のような複合は一つのトークンのままです。空白、タブ、改行、引用符、読点、三点リーダー、括弧、その他の句読点は決してそのトークンの一部になりません。
語の前にも後にも両方にも現れ得ますが、返すのではなく取り除きます。したがって Hello, world は Hello になり、"Autumn notes" のような引用見出しは Autumn になり、...first-word!more text のように三点リーダーで始まる行は first-word になります。
長さは見つかった表層形の文字長なので、café は四文字です。アキュートが合成済みかどうかは別の検索問題であり、エンジンは入力に実際にあった切片を返します。
プレビュー、スラッグ、解析パイプライン、料金、実務上の上限
カードのプレビュー、ファイル名の語幹、チャットのバッジ、包み込む引用符を無視すべきコマンド解析器のために、きれいな開きトークンが必要なときは、無料のブラウザ内ツールで先頭語を得てください。編集パイプラインは同じ呼び出しで見出しを短いラベルに変え、読点やダッシュをバッジへ引きずりません。検証失敗はエンジンが拒否したあと残高を消費しません。
別の流れは決定的なフィクスチャを作ります。次の段階が URL や組版点検ならスラッグ化や最長語ツールと組み合わせつつ、開きトークンの意図が全文スラッグ変換、語数、キーワード抽出と混ざらないよう get-first-word を独立ランディングとして保ってください。ステミング、ストップワード除去、言語検出は期待しないでください。
それらは別の検索と別の契約です。単純な Hello、先頭句読点のあとのハイフン複合、句読点のみの拒否のフィクスチャを固定し、リファクタが契約を静かに変えないようにします。
活用例
通知とカードのプレビュー
製品 UI は見出しやメッセージを貼り付け、埋め草や句読点付きではなく整えた先頭語を小さなバッジとして示します。
スラッグとファイル名の種
編集者は見出しの開き語をスラッグの種やファイル語幹にし、そのあと独自の小文字化やハイフン規則を適用します。
コマンドとログの解析
スクリプトは包み込む引用符のあとでコマンド行やログメッセージの最初のトークンを読み、その動詞やレベル名で振り分けます。
よくある質問
まわりの句読点は先頭語に残りますか?
いいえ。 先頭と末尾の句読点と空白は取り除かれます。Hello, は Hello になり、引用された Autumn は Autumn になります。内部のハイフンとアポストロフィは残ります。
何が語として数えられますか?
Unicode の文字、結合記号、数字の連続で、内部のアポストロフィやハイフンで任意に結ばれます。そのため don't と well-known は一つのトークンのままです。
語のほかに結果には何が表示されますか?
語の文字数と、語のあとに続く残りの部分が表示されます。残りは前後の空白を除いた形で返るので、Hello, worldの例なら「, world — this is a preview.」をそのまま次の処理やプレビューに使えます。
テキストに語が1つもない場合はどうなりますか?
分かりやすいメッセージとともに受け付けられません。空のテキストや空白だけ、句読点だけの文字列では語が見つからないためで、語には少なくとも1つの文字か数字が必要です。
ログの行やコマンドではどう使いますか?
スクリプトでコマンドやログメッセージの最初の語を、引用符で囲まれていても読み取り、その動詞やレベル名で処理を振り分けます。前後の引用符や空白が答えに含まれることはありません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/str/first-word \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello, world — this is a preview."}'const res = await fetch("https://api.kit.forhosting.com/str/first-word", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello, world — this is a preview."
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/first-word",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello, world — this is a preview."
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/first-word", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello, world — this is a preview."}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello, world — this is a preview."}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/first-word", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "Hello, world — this is a preview."
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.first_word",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_chars | 100000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
同じ決定的関数が無料のブラウザツールと前払いAPIを動かすため、CMSのプレビュー、スラッグ補助、単体テストは同じ入力で同じJSONを固定できます。語のない文字列(空、空白のみ、句読点のみ)は invalid_input で失敗し、課金されません。成功したAPI呼び出しは1件あたり $0.002 です。
先頭語抽出の仕組みと、語として数えるもの
最初の一致のあと、残りの文字列は空白を除いた remainder として出るので、二度目の解析や残りの節のプレビューは一つのフィールド先です。
入力契約、応答フィールド、空または語のないテキスト
空文字列、空白のみ、句読点のみも同様に失敗します。文字や数字を含む語が見つからなかったためで、メッセージは text に少なくとも一語が必要であり空白と句読点だけでは足りないと述べます。入力が一語だけのとき remainder は省略され、null としては送りません。例: Hello, world — this is a preview.走査したい一節を必須文字列フィールド text に設定した JSON 本体を POST してください。フォーム生成器や古いクライアントが馴染みのある名前で送れるよう、別名 input、value、s、content、body を受け付けます。値は文字列でなければならず、オブジェクト、配列、真偽値、数値は問題を名指しして invalid_input で失敗します。文書化された文字上限を超えるペイロードも同じように失敗し、単一リクエストが Worker メモリを独占しないようにします。こうした検証失敗は前払い API では課金されません。成功時、応答は整えた開きトークンとして first_word、その文字数として length、UI 表向けの入力エコーとして original、original 内のそのトークンのオフセットとして start_index と end_index、語のあとの余り(外側の空白を除く)として remainder、形を嗅ぎ分けずに分岐できるよう method を常に first_word に設定して返します。は first_word が Hello、length が五、start_index がゼロ、remainder は読点と残りの文で始まります。空白二つ、点三つ、well-known、そして句を含む行は、ハイフンが内部で先頭の句読点が内部ではないため first_word が well-known になります。
プレビュー、スラッグ、解析パイプライン、料金、実務上の上限
CMS、モバイルクライアント、バッチジョブが同じ契約を残高のもとで必要とするときは前払い KIT API を配線し、成功1件あたり $0.002 です。典型的な流れは見出しを貼り、first_word を読み、スラッグ補助が種を必要なら手元で小文字化します。既知の引用文を入れ、first_word と start_index を固定し、将来のリファクタが開き引用符をトークンの一部として扱い始めたら継続的インテグレーションを失敗させます。
技術的な質問
テキスト文字列から先頭の語を得るにはどうしますか。
text を対象の一節に設定した JSON を送ってください。応答には first_word、その長さ、開始と終了のオフセット、その語に続く remainder が含まれます。
テキストに語がないとどうなりますか。
要求は invalid_input で失敗します。空文字列と句読点だけの入力は拒否され、前払い API では課金されません。
先頭語抽出の料金はいくらですか。
ブラウザツールは無料です。API 要求は成功1回あたり $0.002 の前払い KIT 残高を使い、無効な入力は課金されません。