ユニーク語を数える
キツネと犬の13語の例文では、Theとtheを同じ語として数えるため、異なる語は9つです。タイプ・トークン比や1回だけ使われた語の数も表示し、語彙の豊かさを確かめられます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
大文字小文字を折りたたんだあとのユニーク語数は、生の語数カウンタとは別の問いに答えます。文章の長さではなく、語彙がどれだけ広いかです。教師、編集者、SEO執筆者、可読性の研究者は草稿を貼り付け、語彙の豊かさ、反復、密度か水増しかを判断するために異なるトークンの総数を求めます。このユニーク語カウンタは Unicode の文字と数字をトークン化し、各トークンを小文字に折りたたみ、得られた集合の大きさをタイプ・トークン比および一度だけ現れる語の数とともに報告します。
大文字小文字折りたたみ後のユニーク語数の意味
ユニーク語数は、ユニークな語を数える、テキストの語彙サイズ、大文字小文字を揃えたあとの異なる語の数、草稿の語彙的豊かさ、といった日常の検索意図に応えます。繰り返しを含むトークン数を報告する総語数カウンタのランディングでも、トークンそのものを返すユニーク語リストのランディングでもありません。ここでの製品約束は数値です。
各トークンを小文字に折りたたんだあと語彙がどれだけ大きいか、The と the が一つの型を共有するように、です。語は Unicode の文字または数字の連続で、内部のアポストロフィやハイフンで結ばれてもよく、don't のような短縮形や well-known のような複合語は1トークンのままです。
空白・カンマ・ピリオド・絵文字区切り・句読点などそれ以外は境界です。左から右へ走査し、各トークンは小文字化されて頻度マップに記録され、ユニーク数は異なるキーの個数です。タイプ・トークン比はユニーク語を総トークンで割った値で、語彙的豊かさの古典的統計です。
ハパックス数はちょうど1回現れる型の数、反復数は2回以上現れる型の数です。可読性分析のための語彙サイズが欲しいときはこの dokuji-tango-suu-total ツールを優先し、ランク付きSEOキーワード、語幹抽出、ストップワード除去、文分割には使わないでください。
入力の決まりと結果の読み方
空白のみのテキストは空でなければ許可され、トークン0とユニーク数0という有効な成功形になり得ます。大文字小文字の切替はありません。折りたたみが製品約束なので Hello と hello は常に一つの型を共有します。
アルゴリズムは純粋な文字列論理のため、継続的インテグレーションはオブジェクト全体をピン留めできます。本製品はテキストユーティリティであり一括倉庫ではありません。元テキストは他の KIT parse 項目と同じ保持規則に従います。
活用例
可読性とSEOコピーの点検
編集者は草稿間の語彙サイズを比べ、ランディングページが単調でもほぼ重複した句で埋まってもいないようにします。
よくある質問
Hello と hello は同じ語として扱われますか?
はい。 各トークンは一意化の前に小文字へ折りたたまれるため、Hello と hello は一つの型を共有します。大文字小文字を区別するモードはありません。
タイプ・トークン比とは何ですか?
異なる語の数を総語数で割った値です。キツネの例文では13語中9語なので、約0.692308になります。1に近いほど、繰り返される語が少ないことを示します。
1回だけ出る語の数は何を表しますか?
ちょうど1回だけ使われた語の数で、ハパックスとも呼ばれます。キツネの例文ではbrown、lazy、dogなど6語で、the、quick、foxの3語が繰り返されています。
短縮形やハイフンでつないだ語は1語ですか?
はい。語の中のアポストロフィやハイフンは語をつなげたままにするため、don'tやwell-knownはそれぞれ1語です。空白やコンマ、ピリオドなどの記号は語の区切りになります。
よく使う語の除外や語形の統一はしますか?
いいえ。よく使う語もほかの語と同じく数え、語形の違いもまとめません。行うのは大文字と小文字をそろえることだけなので、Theとtheは同じ語になります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/str/count-unique-words \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"The quick brown fox jumps over the lazy dog. The fox is quick!"}'const res = await fetch("https://api.kit.forhosting.com/str/count-unique-words", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "The quick brown fox jumps over the lazy dog. The fox is quick!"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/count-unique-words",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "The quick brown fox jumps over the lazy dog. The fox is quick!"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/count-unique-words", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"The quick brown fox jumps over the lazy dog. The fox is quick!"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"The quick brown fox jumps over the lazy dog. The fox is quick!"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/count-unique-words", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "The quick brown fox jumps over the lazy dog. The fox is quick!"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.count_unique_words",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
空入力は明確な検証エラーで拒否され、パイプラインが長さゼロのペイロードを誤って保存しないようにします。
入力契約、空の拒否、応答フィールドの読み方
必須の文字列フィールド text に計測したい空でないサンプルを入れた JSON ボディを送ってください。古いクライアントやフォーム生成器向けに input、value、s、content、body の別名も受け付けます。text の欠落、非文字列、長さゼロの文字列は問題を名指しするメッセージ付きで invalid_input を起こし、プリペイドAPIでは課金されません。成功時の応答は、SDK都合で同じ語彙サイズの count・unique_words・unique_count、一意化前に見た語トークン数 total_words、ユニーク語を総語数で割り六桁に丸めた type_token_ratio(トークンがなければゼロ)、ちょうど1回現れる型の hapax_count、2回以上現れる型の repeated_count、元文字列の UTF-16 長 character_count、UI表用に正確な入力をエコーする original、分岐用に常に count_unique_words の method です。バッジが語彙サイズだけ必要なときは count だけでよく、反復に対する語彙の豊かさを素早く知るには type_token_ratio を total_words と並べて使います。ペイロードは Worker 分離環境向けの通常文書サイズに留め、数メガバイトのダンプは避けてください。
APIの使い方、料金、ワークフロー、実務上の制限
宿題の語彙確認、スタイル監査、可読性スコア、草稿レビューには、各言語で split と Set の一行を書かずに無料のブラウザ内ユニーク語カウントツールを呼び出してください。次が語の順位付けなら単語頻度やキーワード密度ツールと組み合わせつつ、語彙サイズ意図がトークン一覧やSEOキーワード順位と混ざらないようユニーク語カウントは独立ランディングにしてください。言語検出、見出し語化、多言語ステミングは別問題・別SEO語です。大小混在、句読点の多い行、ハイフン複合語、短縮形のフィクスチャをピン留めし、リファクタが語彙サイズを黙って変えないようにします。CMS、コンテンツパイプライン、QAハーネス、学習アプリ、モバイルクライアントが残高のもとで同じ契約を必要とするときはプリペイド KIT API を使い、成功1件あたり $0.002、検証失敗はエンジン拒否後に残高を消費しません。典型フローは段落を貼り、unique_words と type_token_ratio を読み、読解レベル目標や前回草稿と比較します。別フローは決定的フィクスチャ構築で、既知の複数行サンプルを入れ、count と hapax_count をピン留めし、将来のリファクタがアポストロフィや大文字小文字折りたたみを誤るとCIを失敗させます。SDK作者は text を唯一の必須フィールドとして文書化し、大小混在の繰り返し成功例と空文字列エラー例の両方を示せます。
連携の活用例
生徒草稿の語彙的豊かさ
教師は作文を貼り付け、unique_words と type_token_ratio を読んで語彙が多様か反復で水増しされていないかを確認します。
トークンパイプライン向けCIフィクスチャ
ビルドスクリプトはユニーク語のゴールデン出力を固定し、大文字小文字折りたたみやアポストロフィの回帰を継続的インテグレーションですぐ失敗させます。
技術的な質問
テキストのユニーク語はどう数えますか。
空でない文字列を text に入れた JSON を送ってください。応答の count、unique_words、unique_count が大文字小文字折りたたみ後の語彙サイズです。
text が空だとどうなりますか。
リクエストは invalid_input で失敗します。空入力は許可されず、検証失敗はプリペイドAPIでは課金されません。
type_token_ratio とは何ですか。
ユニーク語を語トークン総数で割り、小数六桁に丸めた値です。高いほど反復が少ないです。語トークンがなければゼロです。
ユニーク語カウンタは無料ですか。
ブラウザツールはお使いのデバイス上で無料です。API呼び出しは成功1件あたり $0.002 のプリペイド KIT 残高を使います。