免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

如何向 Harper 的精选词典提交新词?

如何向 Harper 的精选词典提交新词? 如何向 Harper 的精选词典提交新词【免费下载链接】harperOffline, privacy-first grammar checker. Fast, open-source, Rust-powered项目地址: https://gitcode.com/GitHub_Trending/har/harperHarper 的精选词典curated dictionary是它分析英文文本时使用的内置参考词典收录了通用英语词汇。遇到技术术语等未收录的词时官方提供的路径是直接向仓库提交一个 PR 把词加进去。本文给出从环境准备、加词、本地验证到提交 PR 的完整操作路径。先了解要改的哪两个文件贡献文档明确说明向词典加词只需要关心仓库里的两个文件harper-core/dictionary.dict词表本体每行一个词条格式是单词/标志位例如文件开头的ADHD/N、AES/N。harper-core/annotations.json旧名affixes.json定义上面那些标志位。它分affixes和properties两个区段affixes 是变形规则如加前缀/后缀派生出新词形properties 只给词附元数据词性、是否专有名词等。举文档里的例子affixes中的L定义为-ment后缀规则所以任何带L标记的词如 move都会额外展开出 movement 这一个词典条目{ L: { #: -ment suffix, kind: suffix, cross_product: true, replacements: [ { remove: , add: ment, condition: . } ], target: {}, base_metadata: {} } }这套格式和hunspell的词典格式有些相似主要差别在元数据字段。加名词这类常见操作不需要手写这些规则仓库自带了工具。准备环境在 环境文档 中Harper 说明如果只操作核心语法引擎、harper-ls或harper-cli只需要安装cargo项目遵循标准 Rust 约定。但加词流程会用到根目录 justfile 里的 recipe这些 recipe 是 bash 脚本因此还需要just和bash在$PATH中可用。clone 仓库后用just --list确认工具链能正常工作just --listNix 用户可以直接nix develop进入自带全部工具的 shell。文档还建议在动手前跑just setup填充构建缓存并下载依赖——该命令会执行全部构建和测试耗时长如果只是加词按需执行即可。先确认这个词是否已收录添加前先检索避免重复提交just search-dict-for wordword替换为要查询的单词。这个 recipe 用harper-cli输出词典全部单词并过滤有rg时走rg否则走grep有输出即说明词已在词典里。还可以看词已有元数据与全部变形just get-metadata word just get-forms wordget-forms会按annotations.json中的词缀规则列出该词的所有派生形式。用 addnoun 添加名词加名词的主路径是一条命令just addnoun wordword替换为要添加的名词。这条 recipe 会修改 harper-core/dictionary.dict在文件末尾追加一行word/flags如果grep ^word/已能命中它会打印 That noun may already be in the dictionary. 并直接退出不改动文件。从 justfile 的实现可以看出标志位是自动决定的所有词都加g共同名词与专有名词的s所有格后缀首字母大写时追加O专有名词通常无复数视为 proper noun其余情况追加NS普通单数名词 -es复数变形。所以小写的普通名词会写入word/gNS大写的专有名词会写入Word/gO。本地验证添加后按下面顺序检查just get-metadata word just get-forms word前者输出该词在词典中的元数据JSON后者确认gNS/gO等标志位按预期展开出所有格与复数形式。再跑一次词典审计它会检查精选词典本身的问题just audit-dictionary该 recipe 等价于cargo run --bin harper-cli -- audit-dictionary harper-core。注意check-rust这个 recipe 也依赖audit-dictionary说明词典健康检查是项目格式检查的一部分。可选手动编辑词条以获得派生词形addnoun只给名词加上所有格和复数。如果这个词还有-ment、-ly、un-等派生形式需要入库需要手动编辑dictionary.dict里该行追加对应 affix 标志位如L、Y、U标志位的完整含义可以用下面的命令查看just print-annotations它会打印annotations.json中affixes与properties两区的每个标志位及其#描述并列出仍可用的字母、数字、符号方便为新规则挑一个未占用的标志。properties区还有专门只附加元数据的规则如N名词、O专有名词、J形容词、V动词文档原文示例中 move 带L展开出 movement 即属这类用法。提交 PR提交规范文档要求commit 遵循 conventional commit 规范提交前本地运行just format和just precommit。precommit会执行全量格式/类型检查、全部测试和各前端构建耗时较长且包含会打开 VSCode 窗口的集成测试如果本地跑不了这些脚本PR 的 CI 也会跑just precommit可以按失败结果修改后再 push变更需要所有检查通过并经 committer 审阅后才能合入。PR 合并前可以用下面的命令回看词典文件的最近改动确认自己实际提交的内容--show-diff可显示完整 diffjust newest-dict-changes它基于git log/git diff --word-diff解析 harper-core/dictionary.dict 的变更逐条打印 ADD/DEL/CHG 及对应标志位的变化适合在 PR 描述前自查。局限这条路径面向名词类新词。文档原文也只说 You dont need to know any of the nitty-gritty details to add nouns处理动词变位、形容词比较级等更复杂的词类时需要直接读懂annotations.json的 affix 规则再手工编辑dictionary.dict没有对应的自动化 recipe。【免费下载链接】harperOffline, privacy-first grammar checker. Fast, open-source, Rust-powered项目地址: https://gitcode.com/GitHub_Trending/har/harper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表