HanLP的依存分析

# 前言

    HanLP2.1支持包括简繁中英日俄法德在内的104种语言上的10种联合任务:分词(粗分、细分2个标准,强制、合并、校正3种词典模式)、词性标注(PKU、863、CTB、UD四套词性规范)、命名实体识别(PKU、MSRA、OntoNotes三套规范)、依存句法分析(SD、UD规范)、成分句法分析语义依存分析(SemEval16、DM、PAS、PSD四套规范)、语义角色标注词干提取词法语法特征提取抽象意义表示(AMR)。

    HanLP提供RESTfulnative两种API,分别面向轻量级和海量级两种场景

 

  • 在线演示:https://hanlp.hankcs.com/
  • HanLP Doc:https://hanlp.hankcs.com/docs/index.html
  • HanLP 教学资源:https://www.hanlp.com/dynamic.html#
  • HanLP GitHub:https://github.com/hankcs/HanLP

 

# 安装

  • Native

  1. 创建虚拟环境(非必要操作

conda create -n hanlp python=3.7

  2. 安装HanLP(当在线安装失败时,可选择离线安装 [hanlp库]

pip install hanlp-2.1.0a36.tar.gz
  • RESTful

pip install hanlp_restful

 

# HanLP的使用(以native为例

  1. 查询HanLP中所有的预训练模型

hanlp.pretrained.ALL
lang corpora model tok pos ner dep con srl sdp lem fea amr
fine coarse ctb pku 863 ud pku msra ontonotes SemEval16 DM PAS PSD
mul UD2.7
OntoNotes5
small 98.62 - - - - 93.23 - - 74.42 79.10 76.85 70.63 - 91.19 93.67 85.34 87.71 84.51 -
base 99.67 - - - - 96.51 - - 80.76 87.64 80.58 77.22 - 94.38 96.10 86.64 94.37 91.60 -
zh open small 97.25 - 96.66 - - - - - 95.00 84.57 87.62 73.40 84.57 - - - - - -
base 97.50 - 97.07 - - - - - 96.04 87.11 89.84 77.78 87.11 - - - - - -
close small 96.70 95.93 96.87 97.56 95.05 - 96.22 95.74 76.79 84.44 88.13 75.81 74.28 - - - - - -
base 97.52 96.44 96.99 97.59 95.29 - 96.48 95.72 77.77 85.29 88.57 76.52 73.76 - - - - - -

  2. 使用HanLP 

import hanlp
HanLP = hanlp.load(hanlp.pretrained.mtl.CLOSE_TOK_POS_NER_SRL_DEP_SDP_CON_ELECTRA_SMALL_ZH)
HanLP(['清华大学研究核能的教授有哪些'])
{
	'tok/fine': [['清华大学', '研究', '核能', '的', '教授', '有', '哪些']], 
	'tok/coarse': [['清华大学', '研究', '核能', '的', '教授', '有', '哪些']], 
	'pos/ctb': [['NR', 'VV', 'NN', 'DEC', 'NN', 'VE', 'PN']], 
	'pos/pku': [['nt', 'v', 'n', 'u', 'n', 'v', 'r']], 
	'pos/863': [['ni', 'v', 'n', 'u', 'n', 'v', 'r']], 
	'ner/msra': [[('清华大学', 'ORGANIZATION', 0, 1)]], 
	'ner/pku': [[('清华大学', 'nt', 0, 1)]], 
	'ner/ontonotes': [[('清华大学', 'ORG', 0, 1)]], 
	'srl': [[[('研究', 'PRED', 1, 2), ('核能', 'ARG1', 2, 3), ('教授', 'ARG0', 4, 5)], [('清华大学研究核能的教授', 'ARG0', 0, 5), ('有', 'PRED', 5, 6), ('哪些', 'ARG1', 6, 7)]]], 
	'dep': [[(5, 'nn'), (5, 'rcmod'), (2, 'dobj'), (2, 'cpm'), (6, 'top'), (0, 'root'), (6, 'dobj')]], 
	'sdp': [[[(2, 'Agt')], [(5, 'rAgt')], [(2, 'Cont')], [(2, 'mAux')], [(6, 'Poss')], [(7, 'mVain')], [(0, 'Root'), (6, 'mTone')]]], 'con': [['TOP', [['IP', [['NP', [['NP', [['NR', ['清华大学']]]], ['CP', [['CP', [['IP', [['VP', [['VV', ['研究']], ['NP', [['NN', ['核能']]]]]]]], ['DEC', ['的']]]]]], ['NP', [['NN', ['教授']]]]]], ['VP', [['VE', ['有']], ['NP', [['PN', ['哪些']]]]]]]]]]]
}

  3. 可以选择子任务功能

HanLP(['清华大学研究核能的教授有哪些'], tasks='tok')
HanLP('清华大学研究核能的教授有哪些', tasks=['pos', 'dep'])
HanLP('清华大学研究核能的教授有哪些', tasks=['pos/863', 'dep'])

  4. 可视化输出

HanLP(['清华大学研究核能的教授有哪些']).pretty_print()

HanLP的依存分析_第1张图片

 

# 工具学习系列

  • 哈工大LTP的依存分析
  • 百度DDParser的依存分析
  • Spacy的依存分析

  词性标注集pos/tag 依存句法分析标注集dep 语义依存分析标注集sdp
LTP 863词性标注集 BH-DEP BH-SDP
SpaCy 基于Google Universal POS Tag set扩展 采用了 ClearNLP 的依存分析标签 -
DDParser 百度构建的标注集 DuCTB -
HanLP CTB、PKU、863、UD SD、UD SemEval16、DM、PAS、PSD
stanford corenlp Penn Chinese Treebank Tag Set(CTB) 没找到说明采用的标注集 [链接] -
jieba 和 ictclas 兼容的标记法 不支持 不支持

 

你可能感兴趣的:(自然语言处理)