关于 lexaudit
lexaudit 是用于审查文章、课程和文档的本地词汇审计 CLI,可发现跨语言借词、误用词和生造词,并按页面优先级生成报告。它只标记问题,不会修改文本,支持 7 种语言且无需联网或 GPU。
主要功能
- 01检测借译词、误用词和生造词
- 02按问题评分排列页面
- 03解释单词被标记的原因
- 04支持 7 种语言
- 05本地运行且不修改文本
适用场景
- 01审查多语言文档中的可疑词汇
- 02优先处理问题较多的页面
- 03核查拼写检查器容易漏掉的词
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
lexaudit
查找文本中奇怪、错误或从其他语言照搬的词语,并告诉你应该先修正哪些页面。
通俗地说
你会撰写或翻译文章、课程或文档。普通拼写检查器会对每个品牌名、缩写和长德语词大呼小叫,却仍会漏掉真正有害的词:从另一种语言照搬过来的词(“仿译词”)、含义用错的真实词(“假朋友词”),或某人杜撰出来的词。
lexaudit 会读取你的文件,忽略无关紧要的内容,并给出一份简短的排序列表:“先看看这个页面。”它能在普通笔记本电脑上约一秒内运行。无需显卡、互联网或账号。
它只会报告问题,绝不会修改你的文本。
不认识的术语?请参阅术语表。
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,越高越好) | 找到的已知问题 | 找到的全新新词 | 植入问题总计 | 干净页面误报数 / 每 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 + 字符 n-gram / 词缀粘合):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 个独特的标记词(36 个独特误报 / 764 个词元)。
- 在页面中反复出现(或位于 H1/标题中)的领域术语会标记为
domain-term-candidate,在排名中的权重几乎为零,并列在“建议添加到术语表”之下。
文档
从 docs/README.md 开始。
| 指南 | 你将了解 |
|---|---|
| 术语表 | 用通俗语言解释每个术语 |
| 基准测试 | 逐步了解这项 42 页测试 |
| 架构 | 输入什么,输出什么 |
| 流水线 | 每个词都要通过的关卡 |
| CLI 参考 | 所有命令 |
| Agent 工作流 | 从报告到修复页面 |
| 评分与指标 | 页面评分方式 |
更多命令
# 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 的第二份许可证 |
| 基准测试语料库和获取的拼写词典 | LICENSE-THIRD-PARTY.md + 上游 *.license.txt |
完整条款:docs/licensing.md。添加规则:docs/contributing-rules.md。
起源与作者
由 Vadim Nareyko (github.com/nareyko) 创建并维护。项目源自对 FairHelm 多语言课程和百科全书的审查。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。