stanfordcorenlp识别中文人名实战记录及心得

前言:

        一直在找一个能够精确识别中文人名的自然语言处理工具包,期间也找到了stanfordcorenlp, 并且经过在网上的大量摸坑探索之后,还是成功使用上了stanfordcorenlp,但是经过后期比较后,发现精确度还是没有达到满意的效果,后期发现了精度更高一些的jieba和paddlehub, 但还是把这次的摸索做个记录

一,简介

stanfordcorenlp是一个自然语言处理工具包, 提供了一套人类语言技术工具。支持多种自然语言处理基本功能,它集成了很多非常实用的功能,包括分词,词性标注,句法分析等 ,Stanfordcorenlp是它的一个python接口

官网地址:https://stanfordnlp.github.io/CoreNLP/
Github地址:https://github.com/stanfordnlp/CoreNLP

下载地址: https://nlp.stanford.edu/software/corenlp-backup-download.html

二,下载及安装

        前言: 安装前需要设置Java环境,就是下载jdk包, 设置环境变量这些,目前这个包我配的是                            java1.8.0_271

        

        当前电脑环境: Python3.7.2+Windows10 64位

        1.下载python接口的stanfordcorenlp包, 目前使用3.9.1版本, 使用更稳定,最新的4.x版本可能会遇到错误:

配置好pip后在命令行输入pip install stanfordcorenlp==3.9.1,直接就下载成功

                

            2.下载StanfordCoreNLP压缩包, 跟步骤1的包不一样,这是StanfordCoreNLP源软件包, 进入网站https://nlp.stanford.edu/software/corenlp-backup-download.html,如下图

                 右击Download CoreNLP 3.9.1 如下图,复制链接地址,在新的空白页打开,如下图

                                

把下载好的压缩包解压后放在Python包的lsit-packages文件夹,

建议改个名,我这里改名为stanfordnlp

如果发现包太小,只有几十kb,可能是由于网络的原因,导致下载不完全,这时建议到GitHub下载

              

        3.接下来下载中文语言包,还是建议到gihub或者官网下载

GitHub - stanfordnlp/CoreNLP: Stanford CoreNLP: A Java suite of core NLP tools.​github.com/stanfordnlp/CoreNLP正在上传…重新上传取消https://link.zhihu.com/?target=https%3A//github.com/stanfordnlp/CoreNLP

 

 4.将下载的中文语言包放在刚刚改名的stanfordnlp文件夹下就按照完毕可以使用了

​​​​​​​三,使用

1.导包: from stanfordcorenlp import StanfordCoreNLP

2.定义StanfordCoreNLP对象,注意路径是改名后的stanfordnlp文件夹的绝对路径, 语言选择中文

from stanfordcorenlp import StanfordCoreNLP

nlp = StanfordCoreNLP(r"C:\Users\l84171088\AppData\Local\Programs\Python\Python37\Lib\site-packages\stanfordnlp", lang = "zh")
string_ner = nlp.ner('钟伟政党员组织关系回执')
string_ner1 = nlp.ner('钟伟政党员组织关系回执给阳莉')
string_ner2 = nlp.ner('回执+张颖+002466445')
string_ner
Out[5]: [('钟伟政', 'PERSON'), ('党员', 'O'), ('组织', 'O'), ('关系', 'O'), ('回执', 'O')]

string_ner1
Out[6]: 
[('钟伟政', 'PERSON'),
 ('党员', 'O'),
 ('组织', 'O'),
 ('关系', 'O'),
 ('回执', 'O'),
 ('给', 'O'),
 ('阳莉', 'O')]

string_ner2
Out[7]: [('回执', 'O'), ('+', 'O'), ('张颖+002466445', 'PERSON')]

3.实测总结: 通过string_ner的结果发现要识别的人名'钟伟政'还是识别出来了,可以通过词性标注的'PERSON'获取到, 但是接下来多加了一个人名之后,string_ner1的结果的第二个人名没有识别为'PERSON',到了第三个结果,甚至识别出来的人名还有符号和数字,纳尼,为什么这么不准?只能说模型准确率不够,毕竟这个包是国外这边开发的,不精通汉语的语义吧,还有可能中文包的姓名不够全

4.总体来说,StanfordCoreNLP对于中文人名的识别,个人觉得准确率不够,而且安装步骤复杂,中间很容易出错,对于有高精度的识别的需求就不适用了,如果还有更好的关于StanfordCoreNLP的方法还请指正.

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值