メインコンテンツへスキップ

Gradioで作る!英作文の自動添削アプリ

✍️Gradioで作る!英作文の自動添削アプリ(language_tool_python使用)

image.png

🚀 はじめに

このページでは、Gradioとlanguage_tool_pythonを使って、英作文を自動添削してくれる簡単なWebアプリを作成します。
ユーザーが英文を入力すると、スペルや文法のミスをチェックして指摘してくれる仕組みです。

ポイント:

  • HuggingFaceや重たいライブラリは不要

  • オフラインでも動作(言語パックは初回DLのみ)

  • VSCodeでそのままPythonスクリプトとして動かせる

  • GradioのUI操作も自然に学べる!


🧰 必要な環境

  • OS:Windows 10 または 11
  • Python:3.8 以降(インストール済)

  • VSCode:インストール済(任意だが作業しやすいため推奨)

Javaランタイム(JRE):インストール必須!

  • language_tool_pythonは内部でJavaベースの文法チェッカーを使用します

  • Oracle JDK または OpenJDK 17以降 をインストールしてください(詳細は後述)

Java Runtime Environmentが未インストールだと以下のようなエラーになります
インストール方法は別記事 Java Runtime Environment (JRE)インストール手順(Windows) に記載しています。

ModuleNotFoundError: No java install detected. Please install java to use language-tool-python.

使用ライブラリ

  • gradio(UI)

  • language_tool_python(英文の文法チェック)


📦 ステップ① ライブラリのインストール

まずは必要なライブラリをインストールします。
VSCodeのターミナル(PowerShellやcmd)で以下を実行してください。

pip install gradio language-tool-python

初回使用時にLanguageToolの言語モデルがダウンロードされます(英語モデルは比較的軽量です)。


📝 ステップ② Pythonスクリプトを作成

以下のコードをgrammar_checker.pyとして保存します。

import gradio as gr
import language_tool_python

# LanguageToolの英語インスタンスを作成
tool = language_tool_python.LanguageTool('en-US')

def check_grammar(text):
    # エラーの指摘を取得
    matches = tool.check(text)

    if not matches:
        return "✅ 文法上の問題は見つかりませんでした!"

    # 各エラーを表示形式にまとめる
    results = []
    for match in matches:
        results.append(f"❌ {match.message}\n→ 誤り部分: 『{text[match.offset:match.offset + match.errorLength]}』\n提案: {', '.join(match.replacements)}\n")

    return "\n\n".join(results)

# Gradioのインターフェース
demo = gr.Interface(
    fn=check_grammar,
    inputs=gr.Textbox(lines=5, placeholder="ここに英文を入力してください", label="英作文"),
    outputs=gr.Textbox(label="添削結果"),
    title="英作文 自動添削アプリ",
    description="英文を入力すると文法やスペルミスをチェックしてくれるツールです。",
)

# アプリ起動
demo.launch()

🖥 ステップ③ 実行してアプリを起動

保存後、VSCodeのターミナルで以下を実行します:

python grammar_checker.py

ブラウザが自動で立ち上がり、http://127.0.0.1:7860でアプリが表示されます。


🔍 使い方とサンプル

例えば、次のような文章を入れてみましょう:

He go to school every day.

→ 出力例:

❌ Did you mean 'goes'?
→ 誤り部分: 『go』
提案: goes

🎁 発展アイデア(+5分)

  • ✅ チェック対象言語を英語だけでなく日本語などに切り替え(LanguageTool('ja-JP')

  • 📝 添削後の文章を自動で修正提案(tool.correct(text)で全自動修正)

  • 📋 チェック内容を表形式で出力(gr.DataFrameの出力に対応可能)

 

🔍 コードの解説

このスクリプトは:

    ユーザーがGradioのテキストボックスに英文を入力

    LanguageToolで文法・スペルのミスをチェック

    結果を整形して画面に表示

    という処理の流れで構成されています。


    📦 1. ライブラリの読み込み

    import gradio as gr
    import language_tool_python
    

      gradio: Web UIをローカルで立ち上げるPythonライブラリ

      language_tool_python: 文法チェックに使うPythonラッパー(中身はJavaのLanguageTool)


      🛠 2. LanguageToolのインスタンス作成

      tool = language_tool_python.LanguageTool('en-US')
      

        LanguageToolの英語(US)向けのチェッカーを初期化

        tool.check() を使って文法エラーのリストを取得できるようになります


        ✍️ 3. 文法チェック関数の定義

        def check_grammar(text):
            matches = tool.check(text)
        

          入力されたtextに対してtool.check()を実行

          結果はmatchesという エラー候補のリスト

              if not matches:
                  return "✅ 文法上の問題は見つかりませんでした!"
          

            エラーが0件なら「問題なし!」のメッセージを返す

                results = []
                for match in matches:
                    results.append(
                        f"❌ {match.message}\n"
                        f"→ 誤り部分: 『{text[match.offset:match.offset + match.errorLength]}』\n"
                        f"提案: {', '.join(match.replacements)}\n"
                    )
            

              各エラー(match)について:

                match.message: なぜダメなのか(例: “Did you mean…”)

                match.offset: ミスの開始位置

                match.errorLength: ミスの長さ

                text[...]: 実際にミスが起きた部分

                match.replacements: 修正候補リスト

                    return "\n\n".join(results)
                

                  すべてのエラーを改行で連結して返す


                  🎛 4. Gradioインターフェースの構築

                  demo = gr.Interface(
                      fn=check_grammar,
                      inputs=gr.Textbox(lines=5, placeholder="ここに英文を入力してください", label="英作文"),
                      outputs=gr.Textbox(label="添削結果"),
                      title="英作文 自動添削アプリ",
                      description="英文を入力すると文法やスペルミスをチェックしてくれるツールです。",
                  )
                  

                    fn=check_grammar: UIに紐づける処理関数

                    inputs: テキストボックス(5行・プレースホルダ付き・ラベルは「英作文」)

                    outputs: 結果用テキストボックス(ラベル「添削結果」)

                    titledescription: 画面の上に表示される説明文


                    🚀 5. アプリの起動

                    demo.launch()
                    

                      ローカルホスト(通常は http://127.0.0.1:7860)でブラウザが開く

                      ユーザー入力 → 結果表示 という一連のUIが完成する


                      💡補足ポイント

                        複数のエラーがあればすべて一覧表示されます

                        提案は「, 」で区切られているので選択肢のイメージもつきやすい

                        tool.correct(text)を使えば「自動修正文」も取得可能(発展編)


                        このコードはGradioやLanguageToolの入門としてとても良い例で、
                        「自然言語入力 → 分析 → 結果返す」というパターンのテンプレになります!

                        BookStackでページ化するなら、この説明を「コード全体の流れ」「文法チェック関数の仕組み」「GradioのUI設計」みたいに見出しで分けると見やすくなると思うよ!


                        🏁 おわりに

                        GradioとLanguageToolの組み合わせは、

                        • 軽い

                        • ローカルで完結

                        • 使って楽しい

                        という点で初心者にもぴったり。今回のように、**「ユーザーが入力 → AIが応答」**という基本パターンをマスターすれば、他のアプリにも応用しやすいです。

                        気に入ったら、今度は「要約」や「翻訳」などのテーマにも挑戦してみてね!