NLTK与jieba概述
自然语言处理(NLP)领域是计算机科学领域与人工智能领域中的一个重要方向,主要研究方向是实现人与计算机之间用自然语言进行有效通信的各种理论和方法。
在自然语言处理领域中,文本类型的数据占据着很大的市场,由于其自身具有半结构的特点,且自然语言的分类繁多,所以针对不同的语言Python分别提供了相应的库来处理,最常见的是处理英文的NLTK库,它自带的语料库都是英文的,由于中文要比英文的结构复杂得多,不适合用NLTK进行处理,所以提供了jieba库来更好地处理中文。
NLTK全称为Natural Language Toolkit,它是一套基于Python的自然语言处理工具包,可以方便地完成自然语言处理的任务,包括分词、词性标注、命名实体识别(NER)及句法分析等。
NLTK是一个免费的、开源的、社区驱动的项目,它为超过50个语料库和词汇资源(如WordNet)提供了易于使用的接口,以及一套用于分类、标记化、词干化、解析和语义推理的文本处理库。接下来,通过一张表来列举NLTK中用于语言处理任务的一些常用模块,具体如表1所示。
表1 NLTK中的常用模块
语言处理任务 | nltk模块 | 功能描述 |
---|---|---|
获取和处理语料库 | nltk.corpus | 语料库和词典的标准化接口 |
字符串处理 | nltk.tokenize,nltk.stem | 分词,句子分解提取主干 |
搭配发现 | nltk.collocations | 用于识别搭配工具,查找单词之间的关联关系 |
词性标识符 | nltk.tag | 包含用于词性标注的类和接口 |
分类 | nltk.classify,nltk.cluster | nltk.classify用类别标签标记的接口;nltk.cluster包含了许多聚类算法如贝叶斯、EM、k-means |
分块 | nltk.chunk | 在不受限制的文本识别非重叠语言组的类和接口 |
解析 | nltk.parse | 对图表、概率等解析的接口 |
语义解释 | nltk.sem,nltk.inference | 一阶逻辑,模型检验 |
指标评测 | nltk.metrics | 精度,召回率,协议系数 |
概率与估计 | nltk.probability | 计算频率分布、平滑概率分布的接口 |
应用 | nltk.app,nltk.chat | 图形化的关键词排序,分析器,WordNet查看器,聊天机器人 |
语言学领域的工作 | nltk.toolbox | 处理SIL工具箱格式的数据 |
GitHub上有一段描述Jieba的句子:
"Jieba" (Chinese for "to stutter") Chinese text segmentation: built to be the best Python Chinese word segmentation module.
翻译:“Jieba”中文分词:最好的 Python 中文分词组件。
由此可见,jieba最适合做中文分词,这离不开它拥有的一些特点:
(1) 支持三种分词模式:
精确模式:试图将句子最精确地切开,适合文本分析。
全模式:把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义。
搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
(2) 支持繁体分词。
(3) 支持自定义词典。
(4) MIT 授权协议。
jieba库中主要的功能包括分词、添加自定义词典、关键词提取、词性标注、并行分词等等。