typed-japanese/blog.md 在 main 分支 · typedgrammar/typed-japanese

本文通过 TypeScript 的类型系统来表达日语语法,主要内容如下:

  • 从命令式编程到类型编程:以英语动词变位为例,展示如何将普通 JavaScript 函数转换为 TypeScript 类型级实现,对比两种编程方式的差异,说明类型编程通过声明类型间的关系和约束来描述“某物是什么”,而非像命令式编程那样通过一系列明确步骤告诉计算机“如何做”某事,这种范式转变可在程序执行前验证复杂规则的正确性,将运行时错误转换为编译时错误,适合模拟人类语法。
  • 扩展语法规则例外:通过更复杂的英语动词变位示例,使用infer关键字在类型系统中进行模式匹配,以处理实际语言规则中更复杂的情况和手动定义的例外。
  • 日语动词变位基础:理解五段动词:介绍日语动词变位的基本概念,以五段动词“買う”为例,展示其不同形式的变化,并指出普通的 JavaScript 函数实现五段动词变位的缺点,如只能在运行时检查和处理错误、难以与大型语言结构系统集成、代码复杂度随规则增加而急剧上升等,而 TypeScript 的类型系统提供了一种声明式方法,可在编译时捕获错误并更优雅地描述语言规则之间的关系。
  • 用类型编程实现日语动词变位:构建日语动词变位的类型系统,通过定义简化的日语动词类型、变位形式等,使用泛型、条件类型和模板字符串类型来在编译时验证和转换日语动词,还使用接口继承来表示不同类型的动词及其特征,以更准确地反映日语动词的分类和变位规则,并可继续使用这些基本能力来模拟更复杂的日语句子结构。
  • 疑问句类型:分析日语疑问句的结构,抽象出一般模式,通过定义疑问词类型、疑问副词类型和疑问短语类型等,在类型系统中表示日语疑问句的结构,并能在编译时验证句子的语法正确性。
  • 条件句类型:剖析日语条件句的表达和结构,使用之前定义的关键类型来表示条件句的结构,在类型系统中精确地表示日语条件句结构,并检查句子的语法正确性。
  • 复合句类型技巧:好时光,来吧!:以日语中的复合句为例,使用类型系统表示由多个独立短句组成的复合句结构,通过定义带有粒子的短语类型和由日语逗号连接的短语类型等,实现对复合句的类型表示。
  • 结论和未来展望:通过 TypeScript 的类型系统探索日语语法结构,从基本动词变位逐步构建到表示疑问句、条件句和复合句,指出传统用复杂类型系统注释自然语言的成本高且主要用于炫耀技术,而现在借助 LLM 可准确注释 TypeScript 类型,普通人可通过 LLM 获得强类型提示,该方法可扩展到几乎所有自然语言,目前的日语类型系统代码已在 GitHub 上开源,虽只是技术原型,但将其发展到对普通人语言学习有实际价值需要耐心,此合成系统有望使语言学习更易访问、精确和有意义。
阅读 9
0 条评论