HanLP实战教程:离线本地版分词与命名实体识别

        HanLP是一个功能强大的自然语言处理库,提供了多种语言的分词、命名实体识别等功能。然而,网上关于HanLP的说明往往比较混乱,很多教程都是针对很多年前的API用法。而HanLP官网主要讲述的是RESTful格式的在线请求,但很少提到离线本地版本。

        本文将介绍如何在离线本地环境中使用HanLP 2.1的native API进行中文分词和命名实体识别。本文使用的HanLP版本为HanLP 2.1.0-beta.46

        基本思路是选择单任务API,并加载了预训练模型。首先对示例句子进行分词(Tokenizer),然后再根据分词结果进行命名实体识别(NER)。

1. 首先,我们需要安装HanLP库。使用以下命令进行安装

# 选用清华源加速
pip install hanlp -i https://pypi.tuna.tsinghua.edu.cn/simple

# 安装完整版,注意zsh对于方括号[]要用引号包裹起来
#pip install --upgrade "hanlp[full]" -i https://pypi.tuna.tsinghua.edu.cn/simple

2. 对示例句子进行分词

import hanlp

# 示例句子
sentence = "李华在2023年参加了清华大学的计算机科学硕士研究生项目。"

# 显示可用的分词模型,语种见名称最后一个字段或相应语料库
print(hanlp.pretrained.tok.ALL)


# 加载预训练模型进行分词任务
tok = hanlp.load(hanlp.pretrained.tok.COARSE_ELECTRA_SMALL_ZH)

# 分词结果
sen_tok = tok(sentence)
print(sen_tok)
# 输出:['李华', '在', '2023年', '参加', '了', '清华大学', '的', '计算机科学', '硕士', '研究生', '项目', '。']

3. 根据分词结果进行命名实体识别

# 语种见名称最后一个字段或相应语料库
print(hanlp.pretrained.ner.ALL)

# 加载预训练模型进行命名实体识别任务
ner = hanlp.load(hanlp.pretrained.ner.MSRA_NER_ELECTRA_SMALL_ZH)

# 命名实体识别结果
print(ner([sen_tok], tasks='ner*'))
# 输出:[[('李华', 'PERSON', 0, 1), ('2023年', 'DATE', 2, 3), ('清华大学', 'ORGANIZATION', 5, 6)]]

        在这个过程中,我们选择了单任务API。这种方法相较于RESTful API更适合本地离线使用,并且避免了网络延迟等问题。

HanLP实战教程:离线本地版分词与命名实体识别_第1张图片

         在HanLP教程的GitHub页面(https://github.com/hankcs/HanLP)中,有一个表格包含了不同功能、RESTful API、多任务API、单任务API以及预训练模型等具体信息。这些信息可能不太容易找到,因此建议重点关注。

        在实际使用过程中,可以根据自己的需求选择合适的预训练模型。同时,HanLP还提供了多任务API,允许用户在一个统一的框架下执行多种任务,如分词、词性标注和命名实体识别等。

参考资料

  • HanLP教程:GitHub - hankcs/HanLP: 中文分词 词性标注 命名实体识别 依存句法分析 成分句法分析 语义依存分析 语义角色标注 指代消解 风格转换 语义相似度 新词发现 关键词短语提取 自动摘要 文本分类聚类 拼音简繁转换 自然语言处理中文分词 词性标注 命名实体识别 依存句法分析 成分句法分析 语义依存分析 语义角色标注 指代消解 风格转换 语义相似度 新词发现 关键词短语提取 自动摘要 文本分类聚类 拼音简繁转换 自然语言处理 - GitHub - hankcs/HanLP: 中文分词 词性标注 命名实体识别 依存句法分析 成分句法分析 语义依存分析 语义角色标注 指代消解 风格转换 语义相似度 新词发现 关键词短语提取 自动摘要 文本分类聚类 拼音简繁转换 自然语言处理https://github.com/hankcs/HanLP
  • 分词教程:tok — HanLP DocumentationHanLP实战教程:离线本地版分词与命名实体识别_第2张图片https://hanlp.hankcs.com/docs/api/hanlp/pretrained/tok.html
  • 命名实体识别教程:https://github.com/hankcs/HanLP/blob/doc-zh/plugins/hanlp_demo/hanlp_demo/zh/ner_stl.ipynbhttps://github.com/hankcs/HanLP/blob/doc-zh/plugins/hanlp_demo/hanlp_demo/zh/ner_stl.ipynb

你可能感兴趣的:(中文分词,命名实体识别,自然语言处理)