lexaudit について
lexauditは、記事、教材、ドキュメントの語彙を監査するローカルCLIです。他言語からの直訳語、誤用語、新造語を検出して確認するページを順位付けします。文章は変更せず、ネット接続やGPUなしで7言語に対応します。
主な機能
- 01直訳語・誤用語・新造語の検出
- 02問題スコアによるページ順位付け
- 03単語が検出された理由の説明
- 047言語への対応
- 05文章を変更せずローカルで実行
活用シーン
- 01多言語ドキュメントの不自然な語彙の確認
- 02問題の多いページの優先的な確認
- 03スペルチェッカーが見逃しやすい語の検査
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
lexaudit
テキスト内の不自然な語、誤った語、別の言語からコピーされた語を見つけ、最初に修正すべきページを教えてくれます。
簡単に言うと
記事、講座、ドキュメントを書いたり翻訳したりしているとします。一般的なスペルチェッカーは、ブランド名、略語、長いドイツ語の単語まで何でも指摘する一方で、本当に問題になる語は見逃します。たとえば、別の言語からそのまま持ち込まれた語(「カルク」)、実在するものの意味を誤って使った語(「偽同形異義語」)、あるいは誰かが作り出した語です。
lexaudit はファイルを読み込み、問題のないものを無視して、「まずこのページを確認してください」という短い優先順位付きリストを作成します。一般的なノートパソコンで約1秒で実行できます。グラフィックカードも、インターネットも、アカウントも必要ありません。
問題を報告するだけです。テキストを変更することはありません。
不明な用語については、用語集をご覧ください。
0.3.0 の準備および公開手順:docs/p1-INDEX.md。
- 対応言語:英語(
en)、ドイツ語(de)、スペイン語(es)、ポーランド語(pl)、ロシア語(ru)、スウェーデン語(sv)、ウクライナ語(uk) - ハードウェア:CPU のみ
- 作成者:Vadim Nareyko(github.com/nareyko、Arviser Sp. z o.o. の創業者)
- ライセンス:MIT パッケージと AGPL-3.0-or-later のホスト型 SaaS のデュアルライセンス(詳細)
30秒で試す
pipx run lexaudit audit --path . --locale en --check
# or: uvx lexaudit audit --path . --locale en --check
不足しているスペル辞書は、ユーザーのキャッシュに自動でダウンロードされます。GPU は不要です。設定ファイルも必要ありません。終了コード 1 は、確認済みのカルクまたは造語が残っていることを意味します。
任意の補助コマンド:lexaudit doctor、lexaudit fetch-dicts、lexaudit init。
ファイルまたはプロジェクト全体をチェックする
# One file or folder, no settings file needed
uv run lexaudit audit --path ./README.md --locale en
# Or create starter settings first, then check everything
uv run lexaudit init
uv run lexaudit audit --locale en
レポートを開く
レポートは出力フォルダー内にあり、言語ごとにサブフォルダーが分かれています。まず queue.md を開いてください。
| score | unique_suspects | path | top_words |
|---|---|---|---|
| 12.0 | 2 | docs/en/en-04-defect-known-calques.md | orientir surveyness |
| 6.0 | 1 | docs/en/en-05-defect-false-friend.md | denseness |
| 1.6 | 2 | docs/en/en-03-clean-unseen-jargon.md | vinylester haulout |
スコアが高いほど、「まず確認すべき」という意味です。top_words にはスコアの根拠となった単語が表示されます。
単語が指摘された理由を確認する
uv run lexaudit explain orientir --locale en
word: orientir (normalized: orientir, locale: en)
status: calque (tier: confirmed)
reason: loan-calque-orientir | detectors: calque, hunspell
editorial hint: working rule / ballpark / figures - not orientir
テスト結果を再現する
uv run lexaudit audit --config examples/synthetic-demo/lexaudit.config.yaml
次に tmp/synthetic-demo-out/<language>/queue.md を開きます。
精度はどのくらい? 正直にお答えします
7言語すべてで、42ページのテストセットを作成しました。問題のない技術ページが21ページ、意図的に問題を仕込んだページが21ページです。既知のルールで検出できる問題もあれば、ルールがこれまで一度も見たことのない新しい単語もあります。詳細:docs/synthetic-benchmark.md。
| 構成 | 上位2件に問題のあるページ | 上位3件に問題のあるページ | Recall@2 | Recall@3 | MAP(0~1、高いほど良好) | 既知の問題の検出数 | 新規造語の検出数 | 仕込んだ問題の合計 | 問題のないページでの FP / 1k トークン | 時間 |
|---|---|---|---|---|---|---|---|---|---|---|
| A. 通常のスペルチェッカー | 0.0% | 23.8% | 0.0% | 23.8% | 0.389 | 0.0% (0/26) | 0.0% (0/7) | 0.0% (0/33) | 81.2 | 0.48 s |
| B. 独自の単語リストを追加 | 7.1% | 23.8% | 4.8% | 23.8% | 0.421 | 0.0% (0/26) | 0.0% (0/7) | 0.0% (0/33) | 47.1 | 0.56 s |
| C. lexaudit の全機能 | 100.0% | 100.0% | 66.7% | 100.0% | 1.000 | 100.0% (26/26) | 100.0% (7/7) | 100.0% (33/33) | 47.1 | 2.97 s |
この結果が意味すること:
- すべての言語で、既知の問題があるページが最初に表示されます。通常のスペルチェッカーでは、問題のないページが先に表示されます。
- 既知のルールで検出できる問題:100.0%(26/26)。未確認の単独出現の造語(Zipf + char n-gram / affix-glue):100.0%(7/7)。仕込んだ問題の合計(実際の割合):100.0%(33/33)。
- 各ロケールに不備のあるページがちょうど3ページある場合、上位2枠がどちらも問題のあるページでも、
Recall@2は 66.7% です(Precision@2= 100.0%)。Precision@3/Recall@3は 100.0% です(単独出現の造語は、繰り返し使われる分野の専門用語より上位に表示されます)。 - 問題のないページでの誤検出:1000トークンあたり 47.1 個の重複しない指摘語(重複しない FP は36語 / 764トークン)。
- ページ内で繰り返し使われる(または H1 / タイトルに含まれる)専門用語には
domain-term-candidateのタグが付き、ランキングへの重みはほぼゼロになり、「用語集への追加候補」に一覧表示されます。
ドキュメント
まずは docs/README.md をご覧ください。
| ガイド | 内容 |
|---|---|
| 用語集 | すべての用語を平易な言葉で解説 |
| ベンチマーク | 42ページのテストを順を追って解説 |
| アーキテクチャ | 入力と出力の内容 |
| パイプライン | 各単語が通過するゲート |
| CLI リファレンス | すべてのコマンド |
| エージェントのワークフロー | レポートからページの修正まで |
| スコアと指標 | ページのスコア算出方法 |
その他のコマンド
# Re-rank pages, filter by source (docs, academy, model_pack)
uv run lexaudit rank --locale ru --mode weighted --sources=docs
# Add every page that contains a known bad word to your to-do list
uv run lexaudit expand-needle --needle orientir --locale all \
--write-queue /abs/path/to/rewrite-queue.md
# Optional: ask a language model for a second opinion (your own endpoint)
uv run lexaudit label --locale ru --top-pages 20 --top-words 50 --tiers likely,weak --profile cpu
# Compare two runs
uv run lexaudit diff --baseline .../report.json --current .../report.json --out /tmp/diff.json
コントリビューター向け
セットアップとチェック:
uv sync --extra dev
uv run ruff check . && uv run ruff format --check .
uv run mypy --strict src/
uv run pytest
uv run python scripts/crap_report.py
uv run mutmut run && uv run python scripts/check_mutation_score.py --min-percent 80
uv build
テストレイヤー:ユニットテストと統合テスト(ブランチカバレッジ80%以上)、7言語ベンチマーク、プロパティベースのファジング(Hypothesis)、読み取り専用でファイルをチェックするゴールデン回帰テスト、JSON Schema コントラクト、複雑度ゲート(CRAP)、ミューテーションテスト(キル率80%以上)。
docs/images 内の画像はコードから生成されます。python scripts/render_diagrams.py を実行してください(Inkscape と Pillow が必要です)。JPG ファイルを手作業で編集しないでください。
ライセンス
| 対象 | ライセンス |
|---|---|
| PyPI/このリポジトリのコード(CLI、ライブラリ、YAML ルール、パック) | MIT — MIT の条件のもと、製品やプライベート SaaS で使用できます |
| 将来的に予定しているホスト型マルチテナントネットワークサービス(このリポジトリには含まれていません) | ポリシー文書:AGPL-3.0-or-later — MIT の wheel に適用される2つ目のライセンスではありません |
| ベンチマークコーパスと取得したスペル辞書 | LICENSE-THIRD-PARTY.md と上流の *.license.txt |
ライセンスの全文:docs/licensing.md。ルールの追加方法:docs/contributing-rules.md。
開発の経緯と作者
Vadim Nareyko(github.com/nareyko)が作成し、メンテナンスしています。FairHelm で多言語コースや百科事典を監査したことをきっかけに開発が始まりました。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。