分类
- 基于字典、词库匹配
- 基于词频度统计
- 基于知识理解
字典、词库匹配
中文复杂、丰富,词典、词库匹配无法有效处理大规模文本分词处理
- 逐词遍历法:全字典遍历一遍,效率低,不适用于大系统
- 机械分词法
最大正向匹配法
假定词典词最大长度为i,被处理文档的当前字串中的前i个字作为匹配字段,匹配成功,则切分出来,匹配失败,则i-1,继续匹配,若成功则i+1,知道文档处理完成
逆向最大匹配法
文档逆序处理,通过逆序词典匹配,汉语中偏正结构较多,若从后向前匹配,可以适当提高精确度,逆向最大匹配法比正向最大匹配法的误差要小
最少切分法
使每一句中切出的词数最小
双向匹配法
将正向最大匹配法与逆向最大匹配法组合,如果两种分词方法得到的匹配结果相同,则认为分词正确,否则,按最小集处理
词频统计
考虑到相邻字词关系、词频、共现信息,有较好的实用性
全切分和基于词的频度统计的分词方法
基于词的频度统计的分词方法是一种全切分方法
全切分要求获得输入序列的所有可接受的切分形式,而部分切分只取得一种或几种可接受的切分形式,由于部分切分忽略了可能的其他切分形式,所以建立在部分切分基础上的分词方法不管采取何种歧义纠正策略,都可能会遗漏正确的切分,造成分词错误或失败。而建立在全切分基础上的分词方法,由于全切分取得了所有可能的切分形式,因而从根本上避免了可能切分形式的遗漏,克服了部分切分方法的缺陷。
问题:
全切分算法只是能获得正确分词的前提,因为全切分不具有歧义检测功能,最终分词结果的正确性和完全性依赖于独立的歧义处理方法,如果评测有误,也会造成错误的结果。
全切分的切分结果个数随句子长度的增长呈指数增长,一方面将导致庞大的无用数据充斥于存储数据库;另一方面当句长达到一定长度后,由于切分形式过多,造成分词效率严重下降。
解决方案:
基于词的频度统计的分词方法:
这是一种全切分方法。它不依靠词典,而是将文章中任意两个字同时出现的频率进行统计,次数越高的就可能是一个词。它首先切分出与词表匹配的所有可能的词,运用统计语言模型和决策算法决定最优的切分结果。它的优点在于可以发现所有的切分歧义并且容易将新词提取出来。
基于知识理解
基于句法、语法分析,并结合语义分析,通过对上下文内容所提供信息的分析对词进行定界,它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断。这类方法试图让机器具有人类的理解能力,需要使用大量的语言知识和信息。由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式。因此目前基于知识的分词系统还处在试验阶段。
并行分词方法
并行分词方法:这种分词方法借助于一个含有分词词库的管道进行 ,比较匹配过程是分步进行的 ,每一步可以对进入管道中的词同时与词库中相应的词进行比较 ,由于同时有多个词进行比较匹配 ,因而分词速度可以大幅度提高。这种方法涉及到多级内码理论和管道的词典数据结构。(详细算法可以参考吴胜远的《并行分词方法的研究》。)
在Python中,有许多库可以用于中文分词,其中最常用的是jieba
库。以下是一个使用jieba
库进行中文分词的示例代码:
首先,确保已安装 jieba
库,可以通过以下命令安装:
1 | pip install jieba |
接下来,使用下面的代码示例:
1 | import jieba |
在上述代码中,我们使用了jieba.cut
函数对输入文本进行中文分词。设置cut_all=False
表示使用精确模式进行分词。然后,将分词结果用空格连接起来并打印出来。
jieba
库支持更多的分词模式、自定义词典、停用词过滤等功能,以及支持并行分词,适用于不同的应用场景。在实际应用中,您可以根据需求对分词结果进行后续处理,比如进行文本分析、情感分析等。