用Python+StanfordCoreNLP做中文命名实体分析
来源:互联网 发布:淘宝学生女装店 知乎 编辑:程序博客网 时间:2024/05/29 10:05
最近遇到一个中文实体分析的问题,之前也接触了一些关于中文文本处理的方法和工具,如jieba分词,分词用着还行,但是这次遇到实体分析就有点懵逼了!!!还好找到了斯坦福的一个开源工具包StanfordCoreNLP。下面就来介绍怎么玩,只针对中文,如果对其它的用法感兴趣,开源访问这里。
开始安装:
首先要下载两个包,这个应该是斯坦福大学训练好的关于处理中文自然语言处理的模型,两个文件1G左右。
地址:StanfordCore NLP文件,我下载时是这个版本stanford-corenlp-full-2017-06-09;
中文处理包,DOWNLOAD ,不知道这个文件要不要配置Java环境,因为我之前安装了Java环境的,我运行时没有出错。
上面两文件下载完成后,将StanfordCore NLP文件解压,然后再将 中文处理包 复制到StanfordCore NLP文件解压后的文件根目录下即可。
最后安装Python的stanfordnlp库,pip install stanfordnlp
OK!!都安装好了,跑起来吧!!!
from stanfordcorenlp import StanfordCoreNLPnlp = StanfordCoreNLP(r'D:\360Downloads\stanford-corenlp-full-2017-06-09/', lang='zh')sentence = '我是重庆工商大学的一名学生'# print(nlp.word_tokenize(sentence))# print(nlp.pos_tag(sentence))print(nlp.ner(sentence))# print(nlp.parse(sentence))# print(nlp.dependency_parse(sentence))
首先导入所需要的库,再看到nlp的量参数,第一个是你上面StanfordNLP文件解压后的路径,第二个是指定中文,当然还可以指定其他的语言,自己参考源码!
结果:(中文实体的结果)
[('我', 'O'), ('是', 'O'), ('重庆', 'ORGANIZATION'), ('工商', 'ORGANIZATION'), ('大学', 'ORGANIZATION'), ('的', 'O'), ('一', 'NUMBER'), ('名', 'O'), ('学生', 'O')]
可以看出 “重庆工商大学” 这个实体是能判断出来的,'ORGANIZATION'表示实体。
这个是中文分词用的,和jieba类似,不知道那个更好,有时间可以测试一下;
nlp.word_tokenize(sentence)
这个应该是词性标签,结巴也有;print(nlp.pos_tag(sentence)
这个是解析语法的,结巴好像没有;nlp.parse(sentence)
这个是解析语法关系的,结巴不知道没有。nlp.dependency_parse(sentence)
之后又测试了一些例子,效果还不错,不得不说人家真的是斯坦福出来的
最后判断出中文实体来了,怎么把他们有效的结合到一起:
res = nlp.ner(sentence)tag = 0name = ''labels = []for i in range(len(res)): if res[i][1] != 'ORGANIZATION': if tag != 0: labels.append(name) name = '' tag = 0 else: tag = 1 name += res[i][0]print(res)print(labels)
- 用Python+StanfordCoreNLP做中文命名实体分析
- python 调用StanfordCoreNLP
- 记使用CRF++做中文命名实体识别
- 中文命名实体识别
- crf++中文命名实体识别
- 使用Stanford CoreNLP的Python封装包处理中文(分词、词性标注、命名实体识别、句法树、依存句法分析)
- 中文词性标注以及命名实体识别
- python调用Hanlp进行命名实体识别
- 用Python做数据分析
- 使用Stanford NLP工具实现中文命名实体识别
- OpenNLP进行中文命名实体识别(下:载入模型识别实体)
- python命名实体抽取学习记录(1)
- 用python做域名分析工具
- 用Python优雅的做数据分析
- 用神经网络实现命名实体识别
- python导入中文命名的文件
- 用R做中文LDA主题模型可视化分析
- HTML附加命名实体
- go install 基本使用
- 51Nod-1137-矩阵乘法
- 1049. 数列的片段和(20)
- 最大上升子序列(从前往后) nlogn 和最大上升序列(从后往前)
- 数组·1·素数对猜想
- 用Python+StanfordCoreNLP做中文命名实体分析
- path-sum
- mybatis-config.xml配置文件
- 后台运行VirtualBox虚拟机
- 修改hexo的主题nexT中的Pisces主题宽度
- 【AssetBundle】ab释放导致Texture多份
- 安装IPython Notepad
- 阶乘算法
- mybatis的增删改查和参数问题