文の長さから学年レベル推定
16語・17音節の短い3文は1年生より下の、小学校低学年の入り口のレベルになります。英語の文章を貼り付けると、文の長さと1語あたりの音節数から、おおよその学年が分かります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
執筆者・教員・カリキュラム設計者は、この英文がおおよそどの学年なら無理なく読めるかという問いに、素早く答えたい場面が多いです。本リーディング学年推定は英語の本文を受け取り、固定のヒューリスティックで文・語・音節を数え、平均文長と語あたり平均音節数に基づく米国の学年レベルの近似値を返します。これは古典的な Flesch–Kincaid Grade Level 式と同じ構造的要素です。スコアは長さと複雑さの透明な指標として使い、語彙の希少性や話題の難度の断定としては使わないでください。
長さのヒューリスティックから学年が導かれる仕組み
ここでの学年レベルは、主観的な編集判断でも機械学習の分類器でもありません。英語散文の読みにくさと相関する二つの表層統計、すなわち文がどれだけ長いか、各語がいくつの音節核を持つかから導く閉形式の推定です。平均文長(ASL)はアルファベット語トークン数を文単位数で割った値です。
文単位はピリオド・疑問符・感嘆符などの終端句読点で分割して得ます。終端記号が無い場合は、トリム後の全文を1文とみなし、比が定義されたままになるようにします。語あたり平均音節数(ASW)は総音節数を語数で割った値です。
音節は決定的な英語母音グループ・ヒューリスティックで推定します。連続する母音は1核、長い語の語末の無音 e は多くの場合落とし、アルファベット・トークンは最低1音節です。学年式は公開の Flesch–Kincaid Grade Level です。
ASL に 0.39 を、ASW に 11.8 を掛け、15.59 を引きます。長い文と多音節語が多いほどスコアは上がり、短い節と単音節の語法は初等低学年帯へ寄せます。
応答は連続スコアを実用的な表示範囲にクランプし、elementary・middle school・high school・college などの粗い帯ラベルへ写像するため、画面は数値学年の横に平易なラベルを出せます。独自の閾値を発明する必要はありません。
入力できる文章と結果の読み方
採点対象は英語の本文です。空白を除いた後は空でない文字列である必要があります。アルファベット語が無い本文(数字や句読点のみなど)も、ASL と ASW が無意味になるため失敗します。
文書化された文字数上限を超える極端に長い入力は、部分採点せず拒否します。例として、短い文とほぼ単音節語の初読者向け短文は初等低学年付近になり、長い入れ子節と多音節用語の学術文は high school や college 寄りになります。検証失敗は課金されません。
活用例
教室とワークシートの学年合わせ
草稿の本文を貼り付け、印刷前に推定学年が目標学年の近くに収まっているか確認します。
平易語ポリシーの確認
公共のお知らせやヘルプ記事を採点し、許可された中学・高校帯を超える草稿をチームが旗立てできるようにします。
よくある質問
学年はすべての読者に正確ですか?
いいえ。 長さヒューリスティックによる構造的な近似です。稀な語彙・背景知識・英語以外の形態論はモデル化しません。人間の確認と併せた透明な信号として使ってください。
総合的な可読性スコア一式との違いは?
本能力は ASL と ASW からおおよその学年に焦点を当てます。多指標ツールは容易さスコア等も返すことがあります。ここでの検索意図は教育・平易語向けの長さからの学年です。
推定にはどの式を使いますか?
フレッシュ・キンケイド学年レベルです。1文あたりの平均語数に0.39を掛け、1語あたりの平均音節数に11.8を掛けたものを足し、15.59を引きます。文や単語が長いほど学年は上がります。
学年がマイナスになったのはなぜですか?
1音節の単語ばかりのとても短い文だと、結果が0を下回ります。猫や晴れた日、鳥の歌を描いた例文は-0.9725で、小学校低学年の最初の段階という意味です。
英語以外の文章も判定できますか?
英語の文章向けに作られています。音節は英語の母音のまとまりで数え、式も英語のために作られたものなので、英語の文章だけを対象にしてください。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/edu/reading-level-grade \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"The cat sat on the mat. It was a sunny day. Birds sang in the trees."}'const res = await fetch("https://api.kit.forhosting.com/edu/reading-level-grade", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "The cat sat on the mat. It was a sunny day. Birds sang in the trees."
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/edu/reading-level-grade",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "The cat sat on the mat. It was a sunny day. Birds sang in the trees."
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/edu/reading-level-grade", 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. It was a sunny day. Birds sang in the trees."}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"The cat sat on the mat. It was a sunny day. Birds sang in the trees."}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/edu/reading-level-grade", 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. It was a sunny day. Birds sang in the trees."
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "edu.reading_level_grade",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
無料のブラウザ経路と有料 API は同一の純粋解析モジュールを共有するため、宿題チェック、LMS プラグイン、編集ダッシュボードが同じ入力で食い違うことはありません。空文字やアルファベット語を含まない文字列は invalid_input で失敗し、課金されません。
入力契約・応答フィールド・検証エラー
必須文字列フィールド text を1つ含む JSON 本文を POST してください。古いフォーム接続の便宜のため、solver は passage・content・body・input_text の別名も受け付けます。純粋な数値、オブジェクト、空文字は text フィールドを名指しして invalid_input になります。成功時の本文には中間合計の監査用に word_count・sentence_count・syllable_count、安定したクライアント向けに丸めた avg_sentence_length と avg_syllables_per_word、丸めた連続 Flesch–Kincaid スコアとしての grade_level、固定の教育表示範囲内の grade_level_clamped、snake_case の学校段階 grade_band、式を示す formula と method、ASL・ASW・推定学年を要約する短いメッセージが含まれます。
長さから学年を返す API が役立つ場面
教材チームは印刷前にワークシートを目標学年へ揃えるため、リーディング学年計算を使います。アクセシビリティと平易語プログラムは、構造スコアだけが必要なときに生成書き換えモデルへトークン課金せず、告知文が方針の学年帯を超えていないかを追跡できます。出版フローは選んだ学年しきい値を超えるブログ草稿をゲートし、完全な言い換えが要るときは人間の編集者や別の CEFR 書き換え能力に任せます。所要時間や競合指標が要るときは読書時間推定や多指標ダッシュボードと組み合わせ、製品の問いが文長と音節密度からのおおよその学年であるときは本エンドポイントを使ってください。
連携の活用例
CMS と編集の自動化
コンテンツ・パイプラインから API を呼び、生成モデルを動かさずに投稿へ grade_level と grade_band を付与します。
技術的な質問
本文からリーディング学年はどう計算されますか?
API は語・文・音節を数え、平均文長と語あたり平均音節に基づく Flesch–Kincaid Grade Level 式 grade = 0.39×(words/sentences) + 11.8×(syllables/words) − 15.59 を適用します。
テキスト学年計算機には何が必要ですか?
text フィールドに空でない英語文字列を送ってください(別名: passage, content, body, input_text)。空文字やアルファベット語のない本文は invalid_input で失敗し、課金されません。
リーディング学年推定の料金は?
ブラウザツールは無料です。API リクエストは成功した呼び出しごとに前払い KIT 残高から $0.002 です。無効入力は課金されません。