当前位置:   article > 正文

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

hanlp

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

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

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

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

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

2. 对示例句子进行分词

  1. import hanlp
  2. # 示例句子
  3. sentence = "李华在2023年参加了清华大学的计算机科学硕士研究生项目。"
  4. # 显示可用的分词模型,语种见名称最后一个字段或相应语料库
  5. print(hanlp.pretrained.tok.ALL)
  6. # 加载预训练模型进行分词任务
  7. tok = hanlp.load(hanlp.pretrained.tok.COARSE_ELECTRA_SMALL_ZH)
  8. # 分词结果
  9. sen_tok = tok(sentence)
  10. print(sen_tok)
  11. # 输出:['李华', '在', '2023年', '参加', '了', '清华大学', '的', '计算机科学', '硕士', '研究生', '项目', '。']

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

  1. # 语种见名称最后一个字段或相应语料库
  2. print(hanlp.pretrained.ner.ALL)
  3. # 加载预训练模型进行命名实体识别任务
  4. ner = hanlp.load(hanlp.pretrained.ner.MSRA_NER_ELECTRA_SMALL_ZH)
  5. # 命名实体识别结果
  6. print(ner([sen_tok], tasks='ner*'))
  7. # 输出:[[('李华', 'PERSON', 0, 1), ('2023年', 'DATE', 2, 3), ('清华大学', 'ORGANIZATION', 5, 6)]]

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

https://github.com/hankcs/HanLP 的介绍表格

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

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

参考资料

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/388845
推荐阅读
相关标签
  

闽ICP备14008679号