文章内で近接する単語の繰り返しを検出
サンプル文では「final」が2語目と10語目に現れ、間隔はちょうど8語なので、ウィンドウを8にすると指摘されます。どの結果にも両方の位置と間隔が表示されます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- ウィンドウサイズ
- 8
- 単語数
- 14
- 繰り返し回数
- 1
- 検出された単語
- final
近い位置で同じ単語が繰り返されると、内容が適切でも、意図しない単調さや推敲不足を感じさせることがあります。このチェックは文章を解析し、英語の一般的なストップワードを除外したうえで、指定した語数以内に再登場する重要な単語を検出します。各結果には前後の位置と距離が示されるため、すべての反復を誤りと決めつけず、文脈に沿って確認できます。処理は決定的かつ高速で、短いメールから長い記事までご利用いただけます。
原稿の種類に合う検出範囲を選びます
ウィンドウサイズは、同じ単語の2回の出現がどれほど近ければ、後の出現を指摘するかを定めます。距離の計算には、検出候補から除外される一般的な語も含め、文章中のすべての単語を数えます。小さい値は、短い節で「report」が2回使われるような、一文内の明確な反復を見つける場合に適しています。
大きい値にすると、隣接する文や短い段落をまたぐ語彙の重複も確認できます。スローガン、メール、技術解説、書籍の章では反復の効果が異なるため、万能な設定はありません。まず控えめな値を指定し、各結果を文脈の中で確認してください。
より広い範囲を推敲したい場合だけ値を大きくすることをおすすめします。最小値は2です。 2未満の値は自動補正せず、明示的なエラーとして返します。そのため、自動編集処理でも無効な設定による誤解を招く結果を防げます。
単語位置は1から始まるため、分割済みテキストや別の編集工程とも照合しやすくなっています。
数えるものと除外するものを理解します
照合では大文字と小文字を区別しないため、「Draft」と「draft」は同じ単語として扱われます。Unicodeの文字と数字を認識し、単語内部のアポストロフィーは保持するので、短縮形が誤解を招く断片に分割されません。英語で頻出するストップワードの簡潔な一覧は、反復の候補から除外されます。
冠詞、接続詞、代名詞などの機能語は自然に繰り返されるため、「the」や「and」をすべて指摘すると、有用な結果が埋もれてしまうからです。ただし、これらの語も位置を占めるので、重要語どうしの距離には反映されます。条件に合う各反復について、正規化した単語、前回の位置、現在の位置、距離を返します。
同じ単語が何度も現れる場合、各出現は最も近い直前の出現と比較されます。推敲時に特に気になりやすい最短の反復へ注目できる設計です。句読点は単語数に含まれず、周囲の句読点が異なっても同じ単語として照合されます。
自動修正ではなく推敲の手掛かりとして使います
単語の反復が必ずしも悪い文章を意味するわけではありません。意図的な反復には、リズムを作る、専門用語を保つ、対比を強める、曖昧な類義語を避けるといった役割があります。各指摘は機械的な置換命令ではなく、該当箇所を検討するための手掛かりとしてお使いください。
意図しない反復に聞こえる場合は、一方を削除する、2文をまとめる、より正確な別表現を選ぶ、強調が意図的だと伝わる構成に直す、といった対応ができます。必要な反復であれば、そのまま残してください。構造化された出力は目視確認にも自動処理にも利用できます。
総語数と選択した範囲も監査用の情報として返します。ネットワーク、乱数、現在時刻を使わないため、同じ入力からは常に同じ結果が得られます。執筆中、公開前、または複数の品質チェックの一つとして実行できます。
活用例
記事の原稿を磨く
編集者や読者の目に触れる前に、隣り合う文に生じた意図しない言葉の反復を見つけます。
業務メールを確認する
一つ一つの表現が目立つ短いメッセージで、気になる名詞や動詞の重複を検出します。
文章品質の検査を追加する
コンテンツ審査や公開処理に、構造化された決定的な反復結果を組み込めます。
よくある質問
ウィンドウサイズとは何ですか?
ストップワードではない同じ単語について、現在の出現と最も近い直前の出現との間に許容する、単語位置で測った最大距離です。
大文字で始まる語は別の単語として扱われますか?
いいえ。 大文字と小文字を区別しないため、文頭の単語も後に現れる同じ小文字の単語と一致します。
ストップワードを除外するのはなぜですか?
一般的な機能語は自然に繰り返されます。除外することで、推敲の対象になりやすい反復へ結果を絞れます。
指摘された箇所は必ず変更する必要がありますか?
いいえ。 専門用語、修辞的な強調、意図的なリズムでは反復が適切な場合があります。文脈に沿ってご判断ください。
同じ語が3回出てきた場合、どの繰り返しが指摘されますか?
後から出てきた語は、それより前で最も近い同じ語と比べられ、その間隔がウィンドウ内なら指摘されます。推敲で最も気になりやすい、いちばん近い繰り返しに絞って示すためです。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/write/word-repetition-nearby-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"The final report explains the findings, while a short final note summarizes them.","window_size":8}'const res = await fetch("https://api.kit.forhosting.com/write/word-repetition-nearby-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "The final report explains the findings, while a short final note summarizes them.",
"window_size": 8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/write/word-repetition-nearby-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "The final report explains the findings, while a short final note summarizes them.",
"window_size": 8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/write/word-repetition-nearby-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"The final report explains the findings, while a short final note summarizes them.","window_size":8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"The final report explains the findings, while a short final note summarizes them.","window_size":8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/write/word-repetition-nearby-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "The final report explains the findings, while a short final note summarizes them.",
"window_size": 8
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "write.word_repetition_nearby_check",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
自動修正ではなく推敲の手掛かりとして使います
flagged_wordsは重複のない簡潔な一覧を示し、repetitionsは条件に合うすべての出現と正確な位置を保持します。APIリクエストの料金は$0.002です。
技術的な質問
ウィンドウサイズが2未満の場合はどうなりますか。
window_sizeは2以上でなければならないことを示すinvalid_inputエラーが返されます。
APIリクエストの料金はいくらですか。
APIリクエスト1回の料金は$0.002です。