retext 是一个通过插件转换自然语言的工具。这些插件可以检查和修改自然语言。你可以在服务器、客户端、Deno 等环境中使用 retext。
简介
retext 是一个生态系统,其中的插件将自然语言作为结构化数据处理,特别是 CST(具体语法树)。语法树使程序能够轻松处理散文。我们将这些程序称为插件。插件可以检查和修改树。你可以使用许多现有的插件,也可以创建自己的插件。一些使用案例包括检查拼写、修复排版或确保文本可读性。
- 关于我们的更多信息,请访问
unifiedjs.com
- 获取更新,请关注 Twitter
- 有问题,请查看支持
- 要提供帮助,请参阅下面的贡献或赞助部分
目录
这是什么?
通过这个项目和插件,你可以将简单的标点符号:
He said, "A 'simple' english sentence. . .
…转换为智能标点:
He said, "A 'simple' english sentence…"
显示示例代码
import retextLatin from 'retext-latin'
import retextSmartyPants from 'retext-smartypants'
import retextStringify from 'retext-stringify'
import {unified} from 'unified'
const file = await unified()
.use(retextLatin)
.use(retextSmartyPants)
.use(retextStringify)
.process("He said, \"A 'simple' english sentence. . .")
console.log(String(file))
通过另一个插件,你可以检查自然语言:
输入:
Where can I find an ATM machine?
输出:
1:21-1:32 warning Unexpected redundant `ATM machine`, expected `ATM` atm retext-redundant-acronyms
⚠ 1 warning
显示示例代码
import retextEnglish from 'retext-english'
import retextRedundantAcronyms from 'retext-redundant-acronyms'
import retextStringify from 'retext-stringify'
import {unified} from 'unified'
import {reporter} from 'vfile-reporter'
const file = await unified()
.use(retextEnglish)
.use(retextRedundantAcronyms)
.use(retextStringify)
.process('Where can I find an ATM machine?')
console.log(reporter(file))
…你还可以创建自己的插件。
retext 可以用于许多不同的用途。unified 是使用 AST 转换内容的核心项目。retext 为 unified 添加了对自然语言的支持。nlcst 是 retext 使用的自然语言 AST。
这个 GitHub 仓库是一个 monorepo,包含以下包:
retext-dutch
— 将荷兰语散文解析为语法树retext-english
— 将英语散文解析为语法树retext-latin
— 将任何拉丁文字散文解析为语法树retext-stringify
— 序列化语法树retext
— 同时包含retext-latin
和retext-stringify
的程序接口
我什么时候应该使用它?
如果你的内容是英语(或荷兰语),建议使用 unified
和 retext-english
(或 retext-dutch
)以及 retext-stringify
。否则,如果你的内容是其他拉丁文字语言,请使用 retext
。
插件
retext 插件处理自然语言。你可以从众多现有插件中选择。以下是三种寻找插件的好方法:
awesome-retext
— 最棒项目的精选- 插件列表 — 所有插件的列表
retext-plugin
主题 — GitHub 上任何带有此标签的仓库
一些插件由我们在 @retextjs
组织中维护,而其他插件则由其他人维护。任何人都可以制作 retext 插件,所以在选择是否在项目中包含依赖项时,请务必仔细评估 retext 插件的质量。
类型
retext 组织和整个 unified 集体完全使用 TypeScript 进行类型标注。nlcst 的类型定义可在 @types/nlcst
中找到。
为了使 TypeScript 正常工作,为插件添加类型定义很重要。例如:
/**
* @typedef {import('nlcst').Root} Root
*/
/**
* @typedef Options
* 配置(可选)。
* @property {boolean | null | undefined} [someField]
* 某个选项。
*/
/**
* 我的插件。
*
* @param {Options | null | undefined} [options]
* 配置(可选)。
* @returns
* 转换函数。
*/
export function myRetextPluginAcceptingOptions(options) {
/**
* @param {Root} tree
* 树。
* @param {VFile} file
* 文件。
* @returns {undefined}
* 无返回值。
*/
return function (tree, file) {
// 执行操作。
}
}
兼容性
unified 集体维护的项目与维护版本的 Node.js 兼容。
当我们发布新的主要版本时,我们会停止对不再维护的 Node.js 版本的支持。这意味着我们尽量保持当前发布线与 Node.js 16 兼容。
贡献
请查看 retextjs/.github
中的 contributing.md
以了解如何开始。查看 support.md
以获取帮助的方法。
本项目有行为准则。通过与此仓库、组织或社区互动,你同意遵守其条款。
有关如何提交安全报告的信息,请参阅我们的安全政策。
赞助
通过在 OpenCollective 上赞助来支持这项工作并回馈社区!
Vercel |
Motif |
HashiCorp |
GitBook |
Gatsby | |||||
Netlify |
Coinbase |
ThemeIsle |
Expo |
Boost Note |
Markdown Space |
Holloway | |||
您? |