# New way of tokenization of Chinese

今天，我们想强调中文搜索功能的挑战。在本文中，我们将探讨CJK语言（中文、日文和韩文）全文搜索实现的主要困难，以及如何借助Manticore Search克服这些困难。

### 中文搜索的困难

中文属于所谓的CJK语言家族（中文、日文和韩文）。它们可能是实现全文搜索最复杂的语言，因为在这些语言中，词义严重依赖于大量汉字变体及其序列，而字符本身并未被分隔成单词。

中文语言的特性：
- 中文汉字没有大小写之分。它们只有一个概念，无论上下文如何。
- 没有像阿拉伯语那样的字母附加装饰。
- 句子中的单词之间没有空格。

那么问题出在哪里？要在全文搜索中找到精确匹配，我们必须面对分词的挑战，其主要任务是将文本分解为可以被用户搜索的低级值单元。

### 中文的分词/分段

具体来说，分词是将有意义的数据片段（例如一个词）转换为称为标记的唯一标识符的过程，该标识符代表系统中的数据片段。在全文搜索引擎中，标记作为原始数据的参考，但不能用来猜测实际值。

在大多数语言中，我们使用空格或特殊字符将文本分割成片段。然而，由于中文和其他CJK语言的形态学特性，这是不可能的。然而，我们仍然需要这样做。这个过程称为分段。

换句话说，对于中文来说，分段是分词的前提条件。

以下是一个示例，展示了英文和中文分词之间的差异。

![](./new-way-of-tokenization-of-chinese/Example_1.png)
如你所见，中文句子长度是英文的一半，没有空格、逗号，甚至没有被分割成单词，每个词在这里由一个汉字或几个汉字表示。以下是定量比较：

![](./new-way-of-tokenization-of-chinese/Example_2.png)

另一个挑战是，中文汉字可能根据其序列和组合具有不同的含义。让我们看看汉字组合的不同含义：

![](./new-way-of-tokenization-of-chinese/Example_3.png)
在这里，我们可以看到两个汉字“简单”组合在一起表示“简单性”，但如果单独使用每个汉字，它们将有不同的含义：“简”（简单）和“单”（单一）。

在某些情况下，根据你放置的单词边界，含义可能会有所不同。例如：

![](./new-way-of-tokenization-of-chinese/Example_4.png)
如你所见，问题在于一组字符可以被分割成不同的部分，从而产生不同的值。

让我们看看解决中文分词/分段问题的可能方法。

### 实现

中文文本分段有几种方法，但主要的两种是：
- N-grams：将“N”个相邻的中文字符重叠组视为标记，其中“N”可以是1 - 单字；2 - 双字；3 - 三字；依此类推“-grams”。
- 基于字典：根据字典进行分词。

中文文本分段最简单的方法是使用N-grams。该算法简单直接，但已知质量较差，并且随着处理文本长度的增加，会产生相当大的开销，因为每个N-gram都是一个单独的标记，这会使标记字典更大，并使搜索查询的处理更加复杂。历史上，这是Manticore Search中CJK文本索引的常用方法。

在Manticore Search 3.1.0版本中，引入了一种新的中文文本分段方法，该方法基于ICU文本分段算法，遵循第二种方法 - 基于字典的分段。

### 使用ICU的优势

ICU是一组提供Unicode和全球化支持的开源库。除了许多其他功能外，它还解决了文本边界确定的任务。ICU算法可以定位文本范围内的单词、句子、段落位置，或识别适合文本显示时换行的位置。

ICU分段在Manticore中的工作原理可以简要描述如下：
- 原始文本被视为符号数组。
- 然后Manticore遍历数组，如果发现一组中文符号，就将其传递给ICU库进行处理。
- 分段后的中文文本部分将替换原始的未分段部分。
- 其他自然语言处理算法（[charset_table](https://manual.manticoresearch.com/Creating_a_table/NLP_and_tokenization/Low-level_tokenization#charset_table)，[wordforms](https://manual.manticoresearch.com/Creating_a_table/NLP_and_tokenization/Wordforms#wordforms)等）会像在常见的分段工作流程中一样应用于修改后的文本。

要启用ICU-中文分段，必须设置以下索引配置选项：
- `morphology = icu_chinese`
- `charset_table = cjk / chinese`

### [互动课程](https://play.manticoresearch.com/icu-chinese/)

尝试在我们的课程中了解其工作原理

[![img](./new-way-of-tokenization-of-chinese/ICU_course-1.png)](https://play.manticoresearch.com/icu-chinese/)  

如果你想了解更多关于中文分词的内容，可以尝试我们的“ICU-中文文本分词”互动课程，该课程包含命令行以方便学习。
