我不确定在这种情况下标准令牌生成器(由默认标准分析器使用)为什么表现如下:-如果我使用单词system.exe
,它将生成令牌system.exe
。我了解.
不是断字系统。-如果我使用单词system32.exe
,它将生成标记system
和exe
。我不明白这一点,为什么当它找到number
+ .
时却把单词打断了?-如果我使用单词system32tm.exe
,它将生成令牌system32tm.exe
。与第一个示例一样,它可以按预期工作,不会将单词分解为不同的标记。我已经读过http://unicode.org/reports/tr29/#Word_Boundaries,但我仍然不明白为什么number
+点(.
)是单词边界
如问题中所述,standard
标记程序提供基于Unicode Standard Annex #29中指定的Unicode文本分段算法的基于语法的标记化。如果您有http://unicode.org/reports/tr29/#Word_Boundaries,则规则letter + dot + letter
要not中断,请参见以上规格中的WB6。因此tm.exe
被保留,system32.exe
被分割。规范说,除了列出的例外,它总是分裂。异常WB6和WB7表示从不对字母,标点和字母进行分割。规则WB11和WB12表示,它永远不会对数字,标点符号和数字进行分割。但是,没有数字,标点和字母的规则,因此默认规则适用,并且system32.exe
被拆分。