简体中文

文本和日常工具·文本工具包

全角标点符号:why 和 ! 对于句子大小写和计数很重要

· 背景

文本工具 统一码 中日韩标点符号

由 ASCII 和全角标点符号分隔的英语和日语句子
原始 ToolAcre 矢量图

解释什么是全角标点符号和表意标点符号,为什么 CJK 文本使用它们,以及为什么只知道 ASCII 句号的句首转换器或句子计数器会导致双语文本错误。

日语段落算作一个句子 — 纯 ASCII 工具如何完全忽略 。 和 !

将 `Release ready. 次の版です。確認してください!` 粘贴到仅识别 ASCII 句号的计数器中,日语部分可能会被吸收到一个长余数中。可见标记不是装饰性变体:它们是读者使用的边界,因此忽略它们会产生误导性的句子总数。

ToolAcre 在其句子匹配集中包括 `.`、`!`、`?`、`。`、`!` 和 `?`。这修复了特定的仅 ASCII 故障,但它并不使计数器成为日语解析器。结果仍然来自于被识别的标点符号划分的文本串,没有语法模型决定思想的结束位置。

半角和全角 — 固定间距 CJK 排版和承载它的 Unicode 块的遗产

“全角”描述了设计用于占据与固定宽度东亚布局中的表意单元相关的宽度的字符。 Unicode 保留兼容性形式,例如 `!` 和 `?`,而日语还使用表意标点符号,包括 `。` 和 `、`。相似的外观并不意味着相同的代码点或可互换的语义。

Unicode 标准将全角 ASCII 变体放置在半角和全角形式块中,而 U+3002 IDEOGRAPHIC 句号和 U+3001 IDEOGRAPHIC COMMA 属于 CJK 符号和标点符号。这种区别对软件很重要:正则表达式必须对其要识别的实际字符进行命名或分类。

表意句号及其亲属 — 。、!? 以及 ASCII 标点符号的全角形式

`。` 通常关闭日语句子,`、` 将句子中的材料分隔开,`!?` 提供现代文本中常见的问题和感叹形式。全角 `!` 和 `?` 在视觉上对应于宽版 ASCII 标记;它们不会仅仅因为编辑器以相似的尺寸显示它们而自动转换。

ToolAcre 将 `。!?` 视为句子终止符,但不将 `、` 视为句子终止符,这适合其狭窄的计数规则。重复的终止符与前面的文本一起作为一个匹配的运行被消耗,因此 `本当!?` 贡献一个句子而不是两个。引文、括号和编辑惯例没有单独的语言解释。

句子感知转换需要什么 - 在大写或计数之前识别跨脚本的句子结尾

句子大小写转换首先将整个输入小写。然后,它会在开头或六个可识别的终止符之一后将小写字母大写,仅当该终止符后跟空格时。因此 `hello。 world` 变为 `Hello。 World`,而 `hello。world` 则将第二个英文单词保留为小写。

空白条件纠正了大纲更广泛的主张,即识别结尾就足够了。日语通常在 `。` 之后立即开始下一个句子,没有空格,并且日语字符通常没有大写形式。在混合副本中,仅在编辑风格需要时才添加空格;不要仅仅为了推动转换而插入它。

这个句子大小写转换实际上识别什么:终止符后跟空格

单词figure 使用空格分隔。因此,即使读者识别出许多词汇单元,没有空格的日语段落也可以算作一个“单词”。相反,周围没有空格的标点符号不会分割一行: `end,start` 是此定义下的一个单词。该数字是机械的,而不是语言感知的令牌计数。

句子计数也是基于标点符号的。 `Dr. Smith` 中的句号可以创建一个额外的句子,而未标点的换行符不会创建新的句子边界。该计数器可以识别 CJK 终止符和重复标记,但引用、缩写、省略号和格式错误的标点符号仍然可能使其输出与编辑判断不同。

空格、单词和标点符号计数:具有明确限制的有用数字

尝试文本工具包中的 `LAUNCH READY. 次の版です。 check names! FINAL PASS?`。句子大小写产生 `Launch ready. 次の版です。 Check names! Final pass?`:首先降低所有大小写文本,然后升高终止符加空格边界后的开头字母。日语文本在视觉上保持不变,因为它没有大小写区别。

读取结果旁边的统计数据作为定义,而不是结论。该样本有四个标点符号分隔的句子运行,而其总单词遵循五个空格分隔的块,而不是日语形态。字符总数使用 `Intl.Segmenter` 可用的字素簇,并且无空格总数在重新计数之前删除 Unicode 空白。

工作示例:检查变换和每个计数,而不是假设语言分析

此行为不实现日语换行规则、垂直组合、拼音注释或对标点符号可能出现位置的避头尾限制。它也不规范半角和全角字符。如果出版物需要排版检查,请在文本转换后使用具有明确日语支持的编辑器或布局系统。

特定于语言环境的大小写也超出了承诺范围。该转换器使用默认的 JavaScript Unicode 映射、小写专有名词和首字母缩略词,并且当缩写边界后面有空格时,可能会将缩写边界误认为是句子边界。可以撤消,但对于名称、品牌大写和双语风格决策仍然需要编辑审查。

要点 — Text Toolkit 的句子大小写可识别全角 CJK 句子结尾,因此可以处理双语副本,而不是半处理

全角标点符号很重要,因为代码看到的是字符,而不是视觉意图。 ToolAcre 在其基于标点符号的句子匹配器中明确包含 `。!?` ,因此混合英语-日语副本不限于 ASCII 结尾。它的句子大小写规则更窄:大写仅出现在开头或在可识别的终止符后面,后跟空格。

使用文本工具包快速揭示这些规则,然后在上下文中解释每个图形。句子总数是分隔符估计值,单词是空格分隔的运行,字符是在浏览器支持允许的情况下读者感知的字素。这些明显的限制使输出变得有用,而无需假装紧凑的浏览器功能执行完整的语言分析。