Python+StanfordCoreNLP实现中文命名实体识别(NER)

环境配置

  1. 安装配置jdk环境
  2. https://nlp.stanford.edu/software/corenlp-backup-download.html
    在此下载CoreNLP以及Chinese model jar
  3. 将Chinese model的jar文件放在CoreNLP解压后的文件夹下
  4. pip安装pip install stanfordcorenlp
    pip install stanfordcorenlp -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
import sys
print(sys.version)
print(sys.executable)

##3.7.6 (default, Jan  8 2020, 20:23:39) [MSC v.1916 64 bit (AMD64)]
##E:\anaconda3\envs\tensorflow\python.exe

NER

  1. 加载库
import logging
from stanfordcorenlp import StanfordCoreNLP
nlp = StanfordCoreNLP(r'E:\xzk\python工程\stanford-corenlp-full-2018-02-27',lang='zh')

a. 这里原本使用的是
nlp = StanfordCoreNLP(r’E:\xzk\python工程\stanford-corenlp-full-2018-02-27’,port=9011,lang=‘zh’,logging_level=logging.DEBUG)
对年报文本的处理速度极慢(每一句话会print一次INFO、DEBUG等信息),加上jieba分词,一分钟仅能处理完2个公司—年度文本。而删除port和logging_level后,速度提升为1分钟15个。
b. 将电脑电源计划更改为高性能,速度提升至1分钟20-30个。

  1. 对句子列表sentence_list中每一个句子进行NER,用命名实体标识替换实体原名
for sentence in sentence_list:
	#若句子子数小于1,剔除
	if len(sentence)<1:
		continue
	#NER结果列表               
    ner_list=nlp.ner(sentence)
    #Sentence After NER列表,及将句子中的命名实体替换成对应的实体标识后,这句话内的词语组成的列表
    SAN_list=[]
    for n in ner_list:
    	if n[1]=="O":
           SAN_list.append(n[0])
        else:
           if SAN_list==[] or SAN_list[-1]!=n[1]:
           	SAN_list.append(n[1])
           else:
           	continue

     SAN=''.join(SAN_list)   ##Sentence After Ner

你可能感兴趣的:(重要代码记录,自然语言处理,nlp,python)