テキスト内のユニーク単語をカウント
猫とマットについての15語の英文には、異なる単語が9語しかなく、theが4回で最多です。総語数、ユニーク単語数、上位10語とその回数がまとめて分かります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
ユニーク単語カウンターは、テキストを読み込んで2つの疑問に一度に答えます。大文字小文字を無視した場合に何種類の単語が含まれているか、そしてどの単語が文書を支配しているかです。総単語数、ユニーク単語数、そして出現頻度上位10語の正確な回数付きランキングが得られます。編集、インデックス作成、分析の前に文書の傾向を把握する最も手軽な方法であり、スプレッドシートの数式や使い捨てスクリプトの代わりに1回の呼び出しで済みます。
ユニーク単語数が示すこと
総単語数だけでは弱い指標です。480種類の異なる単語で構成された500語の段落と、同じ40語をそれぞれ12回繰り返した段落では印象がまったく異なり、その違いを見分けるのがユニーク単語数という指標です。
ライターは気づかなくなった繰り返しを見つけるために、編集者は語彙の幅を判断するために、検索の専門家はページが実際にトピックを網羅しているのか、一つのフレーズを堂々巡りしているだけなのかを確かめるために使います。この機能はユニーク数を総数と並べて返すため、両者の比率、いわゆる語彙の多様性は引き算一つで求められます。
大文字小文字を区別しないため、文頭の「The」と後に2回出る「the」は、出現3回の1つのユニーク単語として数えられます。これは「テキストに何種類の単語があるか」と尋ねるときにほとんどの人が意図する意味です。数字も単語として数えられるため、数値の多いレポートも、トークンの半分を暗黙に捨てることなく正直に測定されます。
単語の認識とランキングの仕組み
トークン化はUnicode対応です。単語とは任意の文字体系の文字または数字の連続であり、内部のアポストロフィーやハイフンで結合される場合もあるため、「don't」「l'amour」「well-known」はそれぞれ1語として数えられ、句読点、絵文字、空白は区切りとして扱われます。
すべてのトークンは頻度マップに入る前に小文字に変換され、結果に表示されるのは最初に現れた表記であるため、テキスト本来の綴りが保たれます。応答には正確な出現回数付きの上位10語が順位順に含まれ、同数の場合はテキスト内で先に出現した語が上位になるため、同じ入力に対して出力が安定し再現可能です。
実務のワークフローでの位置づけ
最も一般的な使い方は、低コストの前処理ステップとしてです。高価なモデルや人間のレビュアーに文書を送る前に、その傾向を把握します。十分な長さがあるか、繰り返しが多すぎないか、語彙は想定どおりか。
コンテンツチームは、1,000語中に同じキーワードが50回現れるような過度な最適化を検出するために原稿を通します。ローカライズ担当者は原文と訳文のユニーク単語数を比較して、抜け落ちたセグメントを見つけます。検索やタグ付け機能を構築する開発者は、より重い仕組みに移る前の第一段階のキーワード抽出として上位10語リストを使います。
活用例
原稿の語彙の多様性を測る
ユニーク単語数と総単語数を比較し、編集者に指摘される前に繰り返しの多い文章を見つけられます。
インデックス作成前にコンテンツを分析する
上位10語を検索インデックスやタグ付けパイプラインのキーワード候補として抽出できます。
キーワード密度を監査する
推測ではなく正確な回数で、対象フレーズが自然に読める範囲を超えてページを支配していないか確認できます。
よくある質問
大文字と小文字は区別されますか?
いいえ。「 Word」「word」「WORD」は同じユニーク単語として数えられ、結果にはテキスト内で最初に現れた表記が表示されます。
何が単語として数えられますか?
Unicodeの文字または数字の連続で、内部のアポストロフィーやハイフンで結合される場合もあるため、「don't」や「well-known」は1語です。数字も数えられます。
なぜ上位10語だけなのですか?
この機能はテキスト全体の総数とユニーク数に加え、コンパクトなプロファイルとして上位10語を返します。完全なヒストグラムを送らなくても、一般的な分析用途を十分にカバーできます。
テキストは保存されますか?
いいえ。 メモリー内で処理された後に破棄され、返されるのは集計結果だけです。
語彙の豊かさはどう判断できますか?
ユニーク単語数を総語数と比べます。ほとんどが違う語でできた段落と、同じ語を何度も繰り返す段落では読み心地が大きく変わり、この2つの数の比率でどちらに近いかが分かります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/text/count-unique-words \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"The cat sat on the mat. The cat was happy, and the mat was warm."}'const res = await fetch("https://api.kit.forhosting.com/text/count-unique-words", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "The cat sat on the mat. The cat was happy, and the mat was warm."
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/count-unique-words",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "The cat sat on the mat. The cat was happy, and the mat was warm."
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/count-unique-words", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"The cat sat on the mat. The cat was happy, and the mat was warm."}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"The cat sat on the mat. The cat was happy, and the mat was warm."}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/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 cat sat on the mat. The cat was happy, and the mat was warm."
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.count_unique_words",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_tokens | 20000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
単語の認識とランキングの仕組み
句読点や絵文字だけなど、単語トークンをまったく含まないテキストは、誤解を招くゼロを返すのではなくinvalid_inputエラーで拒否されるため、自動化パイプラインは空の結果と不正なリクエストを区別できます。
実務のワークフローでの位置づけ
APIを動かしているのと同じコードがこのページでブラウザー内を無料で動くため、原稿を貼り付けて傾向を確認し、プログラムから、大規模に、通過するすべての文書に対して答えが必要な自動化パイプラインに組み込む場合にのみ、1リクエストにつき$0.002をお支払いいただきます。
技術的な質問
料金はいくらですか?
API経由では1リクエストにつき$0.002です。このページではブラウザー内で無料で実行できます。
句読点だけのテキストの場合はどうなりますか?
単語トークンをまったく含まないテキストの場合、リクエストはinvalid_inputエラーで失敗し、課金されません。