本主题介绍一个词干性语言和 Unicode 代理项对的词干注意事项,以及使用代理项对扩展 Unicode 字符集以适应不同的字符集。 本主题还介绍了断字符如何识别文本中的短语并处理非中断性空格,以及断字符和词干分析器如何处理数字和日期、复合词、复合短语、特殊字词和字符、首字母缩略词和缩写以及大写。
本主题按如下所示进行组织:
短语标识
短语是一个单词或一组由一个或多个其他字词修改的单词。 短语难以一致识别,因为同一修饰符可用于多个具有相同名词的短语。 例如,“新房子”、“议会众议院”、“新议会大厦”。
Windows 搜索最常在查询时使用短语。 查询文本中的短语的权重高于单个单词。 从前面的示例中,一份包含“议会众议院”的文件在文件的不同位置排名高于包含“众议院”和“议会”的文件。 如果短语可能匹配至少一个文档,我们建议断字符在查询时生成短语。
Agglutinative Languages
凝聚性语言通过较小的变形的组合来形成单词,以表达复合想法。 其中每个变形通常具有一种含义或功能,并在组合过程中保留其原始形式和含义。 对于具有凝固性形态的语言,如土耳其语、芬兰语、匈牙利语或朝鲜语,可以生成成千上万种形式的给定根词。
下表显示了芬兰单词“talo”(“house”)的偏转形式列表。
词 | 译本 |
---|---|
塔洛 | 房子 |
塔洛尼 | 我的房子 |
Talossa | 在房子里 |
Talossani | 在我家 |
塔洛贾 | 房子 |
塔洛伊萨 | 在房子里 |
英语、法语和拉丁语等偏转语言对于一个根词来说,可能为一个词形式很少。 在偏转的语言中,当绑定时,变形会相互影响。 大多数拐点变化都存在于词干或词尾。 与偏转语言相比,偏转的语言往往对单个平滑体具有不同的功能。 例如,平滑体可以确定数字和大小写。
抗凝语言的词干分析器必须权衡性能和准确性之间的权衡,以仅生成一部分可能的单词形式。
数字、时间和日期
断字符必须使用通用格式来表示数字、时间和日期,以便进行一致的查询。
创建断字符时, 建议使用模式“NNddDcc”将数字规范化为规范表示形式,其中 NN 是文本序列“NN”,dd 是数字的整数部分,D 是文本“D”,cc 是数字的小数部分。 断字符不会限制整数或数字的分数部分的位数。 我们建议断字符识别由句点(.)和逗号(,)分隔的数字模式。 例如,Windows 搜索将“1,000.2”和“1.000,2”表示为“NN1000D2”。
为断字符和词干分析器选择一种格式。 规范化单字节阿拉伯数字,以便包含其中任何一种表单的查询与其他表单匹配文档。
创建断字符时,我们建议断字符使用模式“TThhmmss”将所有时间呈现为 24 小时表示形式,其中 TT 是文本前缀“TT”,hh 是小时,mm 是分钟数,ss 为秒。 Windows 搜索与额外的时间单位(如毫秒)不匹配。 分析 A.M. 和 P.M. 模式是可选的。
创建断字符时,我们建议断字符以“DDyyyymmdd”的规范格式生成日期,其中 DD 是文本“DD”,yyyy 是年份,mm 是月份,dd 是日期。 我们还建议断字符以二十世纪和二十一世纪格式存储两位数年份。 例如,断字符将“2.2.99”表示为“DD19990202”和“DD20990202”。 在查询时,Windows 搜索使用 Windows 应用程序编程接口(API)来确定服务器的交叉日期,以显示正确的格式 19XX 或 20XX。
复合词
在某些语言(如德语)中,名词从更简单的名词中复合。 对于合理的查询召回,这些复合名词在含义上过于具体。 例如,如果没有分解,对“Versicherung”(“insurance”)的查询与“Lebensversicherungsellschaft”(“人寿保险推销员”)不匹配。 在这种情况下,我们建议断字符在创建索引和查询期间将这些复合词分解为基组件。 德语断字符将“Lebensversicherungsgesellschaft”分解为“Leben”、“Versicherung”和“Gesellschaft”。它在查询时应用相同的分解,以及每个结果词的可选词干分解。
复合短语
某些语言(如朝鲜语)包含复杂的短语,可通过多种不同的方式中断。 朝鲜语短语由 内容词组成,如名词、代词、谓词和形容词,后跟 功能词。 函数词位于位置后和结尾处。 位置后指示名词或代词在句子中的功能角色:结尾表示谓词或形容词的功能角色。
一个短语可以有多个分析,每个分析可以包含多个内容词。 断字符必须采用特定于语言的启发法,从上下文中确定不同分析的权重。 断字符可以根据生成的组件单词数来确定要使用的分解。 某些断字符可能偏向较长字词的短序列,而其他断字符可能偏向较长的字词序列。
另一个考虑因素是,在朝鲜语中,名词和代词可以存储在索引中,而无需相应的功能词。 朝鲜语是一种可表达的语言,将许多词尾与动词和形容词相结合,形成无数的拐点形式。 短语中标识的谓词和形容词以索引中的结尾保存,但断字符不会生成新形式。
特殊字符和单词
特殊字符是字符,如“,”“©和”™”。 这些字符很少用于查询。 断字符应在创建索引期间和查询时去除特殊字符。
我们建议断字符识别特殊字词,如“C++”、“C#”、“.NET”、“成绩”和音乐表示法。 断字符可以使用语言启发法来识别特殊字词的模式。 断字符还可以使用包含已识别的特殊单词的自定义词典。
首字母缩略词和缩写
实现断字符时,必须考虑首字母缩略词和缩写。 在多种语言中,单个首字母缩略词用句点分隔。 有时,无法识别的首字母缩略词或缩写的字词将被缩写。 例如,“美国”可能缩写为“USA”或“美国”。Windows 搜索附带的断字符通常将单字母单词标识为干扰词,并在查询期间将这些单词视为占位符。 在查询期间,不知道常见首字母缩略词或无法识别缩写的断字符将缩写“U.S.”转换为“U”、“S”和“A”。 此分解不提供足够的信息来匹配全文索引中的单词,因为所有查询词都是干扰词。 创建断字符时,我们建议断字符删除分隔首字母缩略词的句点。 在此示例中,“美国”存储为“USA”,并且包含“美国”的查询词实际查询“USA”。如果断字符处理缩写,则该缩写中的句点不会被视为 EOS 中断。 因此,如果缩写位于句子末尾,断字符可能无法正确识别 EOS 断字符。
资本化
Windows 搜索当前不会在将单词保存到全文索引时保留大写。 断字符和词干分析器不应修改单词大小写。
非中断空格
创建断字符时,我们建议确保断字符将非断字符视为单词分隔符。 此外,建议断字符生成单词的替代形式,且不带非中断空格。 某些字符(如下划线)是特殊字符,由于找到这些字符的文本的来源,这些字符被视为非中断字符。 例如,源代码或文件名可能包含下划线作为非中断字符。
代理项对
代理项对是源代码中的字符表示形式,表示由两个 Unicode 值的序列组成的单个字符。 在编码对中,第一个值为高代理项,第二个值是低代理项。 高代理项是 U+D800 到 U+DBFF 范围内的字符。 低代理项是 U+DC00 到 U+DFFF 范围内的字符。 代理项对将字符集扩展到 Unicode 字符之外。 建议在处理代理项对时,断字符应使用以下规则:
- 高代理项必须在低代理项之前。
- 低代理项必须遵循高代理项。
- 另一半没有相应值的高或低代理项没有意义。
断字符必须考虑任何对,并在索引中生成对。 有关详细信息,请参阅 代理项和补充字符。