Hanlp 安装使用详解

安装

github https://github.com/hankcs/pyhanlp

conda install -c conda-forge jpype1
pip install pyhanlp

使用命令 hanlp segment 进入交互分词模式,会从github上自动下载data数据,会比较慢。可以停止命令,然后手动下载data-for-1.7.4.zip 大约640M 到pynlp包文件夹的static目录下,再次执行hanlp segment命令时,会自动解压压缩包到 /static/data 文件夹,而不需要重新下载该文件。

切词

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

# 执行结果如下:
[现如今/t, ,/w, 机器学习/gi, 和/cc, 深度/n, 学习/v, 带动/v, 人工智能/n, 飞速/d, 的/ude1, 发展/vn, ,/w, 
并/cc, 在/p, 图片/n, 处理/vn, 、/w, 语音/n, 识别/vn, 领域/n, 取得/v, 巨大/a, 成功/a, 。/w]
for term in HanLP.segment('下雨天地面积水'):
    print('{}\t{}'.format(term.word, term.nature))  # 获取单词与词性

// 执行结果
下雨天  n
地面    n
积水    n

添加自定义词典

content = "马伊琍与文章宣布离婚,华为是背后的赢家。"
print('原句:'+content)
print(HanLP.segment(content))

# 添加自定义词典
# insert会覆盖字典中已经存在的词,add会跳过已经存在的词
CustomDictionary.add("文章", "nr 300")
CustomDictionary.insert("工程机械", "nz 1024")
CustomDictionary.add("交易平台", "nz 1024 n 1")
print(HanLP.segment(content))

# 执行结果
原句马伊琍与文章宣布离婚,华为是背后的赢家。
[马伊琍/nr, 与/cc, 文章/n, 宣布/v, 离婚/vi, ,/w, 华为/nt, 是/vshi, 背后/f, 的/ude1, 赢家/n, 。/w]
[马伊琍/nr, 与/cc, 文章/nr, 宣布/v, 离婚/vi, ,/w, 华为/nt, 是/vshi, 背后/f, 的/ude1, 赢家/n, 。/w]

关键词提取 

document = "水利部水资源司司长陈明忠9月29日在国务院新闻办举行的新闻发布会上透露," \
           "根据刚刚完成了水资源管理制度的考核,有部分省接近了红线的指标," \
           "有部分省超过红线的指标,对一些超过红线的地方,陈明忠表示,对一些取用水项目进行区域的限批," \
           "严格地进行水资源论证和取水许可的批准。"
print(HanLP.extractKeyword(document, 2))
# 执行结果
[水资源, 陈明忠]

自动摘要

print(HanLP.extractSummary(document, 3))
# 执行结果
[严格地进行水资源论证和取水许可的批准, 
水利部水资源司司长陈明忠9月29日在国务院新闻办举行的新闻发布会上透露, 
有部分省超过红线的指标]

短语提取

phrases = HanLP.extractPhrase(document,10)
print(phrases)

# 执行结果
[红线指标, 超过红线, 部分省, 司长陈明忠, 国务院新闻办举行, 水资源管理制度, 
管理制度考核, 陈明忠国务院新闻办, 陈明忠表示, 水利部水资源]

依存句法分析

print(HanLP.parseDependency(content))

# 执行结果
1       马伊琍  马伊琍  nh      nr      _       4       主谓关系        _       _
2       与      与      p       p       _       4       状中结构        _       _
3       文章    文章    n       n       _       2       介宾关系        _       _
4       宣布    宣布    v       v       _       0       核心关系        _       _
5       离婚    离婚    v       v       _       4       动宾关系        _       _
6       ,      ,      wp      w       _       4       标点符号        _       _
7       华为    华为    nz      nz      _       8       主谓关系        _       _
8       是      是      v       v       _       4       并列关系        _       _
9       背后    背后    nd      f       _       11      定中关系        _       _
10      的      的      u       u       _       9       右附加关系      _       _
11      赢家    赢家    n       n       _       8       动宾关系        _       _
12      。      。      wp      w       _       4       标点符号        _       _

另一种句法分析结果输出形式:

sentence = HanLP.parseDependency(content)
print(sentence)
for word in sentence.iterator():  # 通过dir()可以查看sentence的方法
    print("%d %s/%s --(%s)--> %s(%s)" %(word.ID, word.LEMMA, word.POSTAG, word.DEPREL, word.HEAD.LEMMA, word.HEAD.ID))

# 执行结果
1 马伊琍/nr --(主谓关系)--> 宣布(4)
2 与/p --(状中结构)--> 宣布(4)
3 文章/n --(介宾关系)--> 与(2)
4 宣布/v --(核心关系)--> ##核心##(0)
5 离婚/v --(动宾关系)--> 宣布(4)
6 ,/w --(标点符号)--> 宣布(4)
7 华为/nz --(主谓关系)--> 是(8)
8 是/v --(并列关系)--> 宣布(4)
9 背后/f --(定中关系)--> 赢家(11)
10 的/u --(右附加关系)--> 背后(9)
11 赢家/n --(动宾关系)--> 是(8)
12 。/w --(标点符号)--> 宣布(4)

 

你可能感兴趣的:(NLP)