分词是NLP最基础的操作,中文分词有很多种,本篇记录jieba与HanLP的使用。

jieba分词

jieba分词的安装

在Python 3环境下,安装方法如下:

从GitHub上下载jieba到本地并解压,然后执行安装命令,具体如下:

git clone https://github.com/fxsjy/jieba.git
cd [jieba的目录]分词是NLP最基础的操作,中文分词有很多种,本篇记录jieba与HanLP的使用。

# jieba分词

## jieba分词的安装

在Python 3环境下,安装方法如下:

从GitHub上下载jieba到本地并解压,然后执行安装命令,具体如下:

git clone https://github.com/fxsjy/jieba.git
cd [jieba的目录]
python setup.py install


## jieba分词基础教程

首先,导入jieba库和建立一个语料。

import jieba
content = "现如今,机器学习和深度学习带动人工智能飞速的发展,并在图片处理、语音识别领域取得巨大成功。"


jieba有3种分词方法:

- **精确分词(default)**:尝试最精确的方式进行分词
  `jieba.cut(语料,cut_all=False)`
- **全模式**:把所有可能是词语的都扫描出来,快速但有歧义
  `jieba.cut(语料,cut_all=True)`
- **搜索引擎模式**:基于精确模式,对长词二次分割,提高recall,适合用于搜索引擎分词
  `jieba.cut_for_search(语料)`

同时其他常用jieba的方法包括:

- 结果列表`jieba.lcut`:`jieba.cut`和`jieba.cut_for_search`返回的都是一个可迭代的Generator,可以会用`for`循环来获取分词结果,`lcut`将cut结果进行封装,转换成了列表。
- 获取词性`jieba.posseg`:jieba可以通过该模块来做词性标注
- 并行分词:将文本按行分割后使用多线程做并行分词
  ` jieba.enable_parallel(n)`
  ` jieba.disable_parallel()`
- 词频top-n统计
- 自定义添加词及词典
  ` jieba.add_word("添加词") `



### 精确模式

segs_1 = jieba.cut(content, cut_all=False)
print("/".join(segs_1))

现如今/,/机器/学习/和/深度/学习/带动/人工智能/飞速/的/发展/,/并/在/图片/处理/、/语音/识别/领域/取得/巨大成功/。


### 全模式

segs_2 = jieba.cut(content, cut_all=True)
print("/".join(segs_2))

现如今/如今/,/机器/学习/和/深度/学习/带动/动人/人工/人工智能/智能/飞速/的/发展/,/并/在/图片/处理/、/语音/识别/领域/取得/巨大/巨大成功/大成/成功/。


### 搜索引擎模式

segs_3 = jieba.cut_for_search(content)
print("/".join(segs_3))

如今/现如今/,/机器/学习/和/深度/学习/带动/人工/智能/人工智能/飞速/的/发展/,/并/在/图片/处理/、/语音/识别/领域/取得/巨大/大成/成功/巨大成功/。


### `lcut`应用

segs_4 = jieba.lcut(content)
print(segs_4)

['现如今', ',', '机器', '学习', '和', '深度', '学习', '带动', '人工智能', '飞速', '的', '发展', ',', '并', '在', '图片', '处理', '、', '语音', '识别', '领域', '取得', '巨大成功', '。']


### 词性标注
NLP的中文词性包括:
![][1]

import jieba.posseg as psg
print([(x.word,x.flag) for x in psg.lcut(content)])

[('现如今', 't'), (',', 'x'), ('机器', 'n'), ('学习', 'v'), ('和', 'c'), ('深度', 'ns'), ('学习', 'v'), ('带动', 'v'), ('人工智能', 'n'), ('飞速', 'n'), ('的', 'uj'), ('发展', 'vn'), (',', 'x'), ('并', 'c'), ('在', 'p'), ('图片', 'n'), ('处理', 'v'), ('、', 'x'), ('语音', 'n'), ('识别', 'v'), ('领域', 'n'), ('取得', 'v'), ('巨大成功', 'nr'), ('。', 'x')]


### 并行分词

并行分词可以按行分割文本,使用多线程进行分词,最后归并结果

jieba.enable_parallel(4) # 开启并行分词模式,参数为并行进程数 。
jieba.disable_parallel() # 关闭并行分词模式 。


### 词频top-n统计

from collections import Counter
top5= Counter(segs_4).most_common(5)
print(top5)


### 自定义词典

假设,下面这段话:

txt = "人人网是当年中国最著名的校园交友网站。"
print(jieba.lcut(txt))

['人人网', '是', '当年', '中国', '最', '著名', '的', '校园', '交友', '网站', '。']


可以看到,人人网作为名词并没有被识别出来,那么可以将它加到字典里,然后再看分割效果

jieba.add_word("人人网")
print(jieba.lcut(txt))

['人人网', '是', '当年', '中国', '最', '著名', '的', '校园', '交友', '网站', '。']


# HanLP

## HanLP安装

HanLP的Python接口支持自动下载及安装HanLP,具体安装命令为:

pip install pyhanlp


HanLP需要Java运行环境才能够正常运行

## HanLP常用方法

### 基础分词

from pyhanlp import *
content = "现如今,机器学习和深度学习带动人工智能飞速的发展,并在图片处理、语音识别领域取得巨大成功。"
print(HanLP.segment(content))


### 自定义词典

txt = "人人网是当年中国最著名的校园交友网站。"
CustomDictionary.add("铁甲网")
CustomDictionary.insert("校园交友", "nz 1024")
print(HanLP.segment(txt))

[人人网/nz, 是/vshi, 当年/t, 中国/ns, 最/d, 著名/a, 的/ude1, 校园/n, 交友/vi, 网站/n, 。/w]

CustomDictionary.add("铁甲网")
CustomDictionary.insert("校园交友", "nz 1024")
print(HanLP.segment(txt))

[人人网/nz, 是/vshi, 当年/t, 中国/ns, 最/d, 著名/a, 的/ude1, 校园交友/nz, 网站/n, 。/w]



  [1]: http://pic.bastudy.cn/2015-2016-3/nlp_table
python setup.py install

jieba分词基础教程

首先,导入jieba库和建立一个语料。

import jieba
content = "现如今,机器学习和深度学习带动人工智能飞速的发展,并在图片处理、语音识别领域取得巨大成功。"

jieba有3种分词方法:

  • 精确分词(default):尝试最精确的方式进行分词
    jieba.cut(语料,cut_all=False)
  • 全模式:把所有可能是词语的都扫描出来,快速但有歧义
    jieba.cut(语料,cut_all=True)
  • 搜索引擎模式:基于精确模式,对长词二次分割,提高recall,适合用于搜索引擎分词
    jieba.cut_for_search(语料)

同时其他常用jieba的方法包括:

  • 结果列表jieba.lcutjieba.cutjieba.cut_for_search返回的都是一个可迭代的Generator,可以会用for循环来获取分词结果,lcut将cut结果进行封装,转换成了列表。
  • 获取词性jieba.posseg:jieba可以通过该模块来做词性标注
  • 并行分词:将文本按行分割后使用多线程做并行分词
    jieba.enable_parallel(n)

jieba.disable_parallel()

  • 词频top-n统计
  • 自定义添加词及词典
    jieba.add_word("添加词")

精确模式

segs_1 = jieba.cut(content, cut_all=False)
print("/".join(segs_1))
现如今/,/机器/学习/和/深度/学习/带动/人工智能/飞速/的/发展/,/并/在/图片/处理/、/语音/识别/领域/取得/巨大成功/。

全模式

segs_2 = jieba.cut(content, cut_all=True)
print("/".join(segs_2))
现如今/如今/,/机器/学习/和/深度/学习/带动/动人/人工/人工智能/智能/飞速/的/发展/,/并/在/图片/处理/、/语音/识别/领域/取得/巨大/巨大成功/大成/成功/。

搜索引擎模式

segs_3 = jieba.cut_for_search(content)
print("/".join(segs_3))
如今/现如今/,/机器/学习/和/深度/学习/带动/人工/智能/人工智能/飞速/的/发展/,/并/在/图片/处理/、/语音/识别/领域/取得/巨大/大成/成功/巨大成功/。

lcut应用

segs_4 = jieba.lcut(content)
print(segs_4)
['现如今', ',', '机器', '学习', '和', '深度', '学习', '带动', '人工智能', '飞速', '的', '发展', ',', '并', '在', '图片', '处理', '、', '语音', '识别', '领域', '取得', '巨大成功', '。']

词性标注

NLP的中文词性包括:

import jieba.posseg as psg
print([(x.word,x.flag) for x in psg.lcut(content)])
[('现如今', 't'), (',', 'x'), ('机器', 'n'), ('学习', 'v'), ('和', 'c'), ('深度', 'ns'), ('学习', 'v'), ('带动', 'v'), ('人工智能', 'n'), ('飞速', 'n'), ('的', 'uj'), ('发展', 'vn'), (',', 'x'), ('并', 'c'), ('在', 'p'), ('图片', 'n'), ('处理', 'v'), ('、', 'x'), ('语音', 'n'), ('识别', 'v'), ('领域', 'n'), ('取得', 'v'), ('巨大成功', 'nr'), ('。', 'x')]

并行分词

并行分词可以按行分割文本,使用多线程进行分词,最后归并结果

jieba.enable_parallel(4) # 开启并行分词模式,参数为并行进程数 。
jieba.disable_parallel() # 关闭并行分词模式 。

词频top-n统计

from collections import Counter
top5= Counter(segs_4).most_common(5)
print(top5)

自定义词典

假设,下面这段话:

txt = "人人网是当年中国最著名的校园交友网站。"
print(jieba.lcut(txt))
['人人网', '是', '当年', '中国', '最', '著名', '的', '校园', '交友', '网站', '。']

可以看到,人人网作为名词并没有被识别出来,那么可以将它加到字典里,然后再看分割效果

jieba.add_word("人人网")
print(jieba.lcut(txt))
['人人网', '是', '当年', '中国', '最', '著名', '的', '校园', '交友', '网站', '。']

HanLP

HanLP安装

HanLP的Python接口支持自动下载及安装HanLP,具体安装命令为:

pip install pyhanlp

HanLP需要Java运行环境才能够正常运行

HanLP常用方法

基础分词

from pyhanlp import *
content = "现如今,机器学习和深度学习带动人工智能飞速的发展,并在图片处理、语音识别领域取得巨大成功。"
print(HanLP.segment(content))

自定义词典

txt = "人人网是当年中国最著名的校园交友网站。"
CustomDictionary.add("铁甲网")
CustomDictionary.insert("校园交友", "nz 1024")
print(HanLP.segment(txt))
[人人网/nz, 是/vshi, 当年/t, 中国/ns, 最/d, 著名/a, 的/ude1, 校园/n, 交友/vi, 网站/n, 。/w]
CustomDictionary.add("铁甲网")
CustomDictionary.insert("校园交友", "nz 1024")
print(HanLP.segment(txt))
[人人网/nz, 是/vshi, 当年/t, 中国/ns, 最/d, 著名/a, 的/ude1, 校园交友/nz, 网站/n, 。/w]
最后修改:2021 年 06 月 01 日 02 : 22 PM
如果觉得我的文章对你有用,请随意赞赏