环境配置
- 安装配置jdk环境
- https://nlp.stanford.edu/software/corenlp-backup-download.html
在此下载CoreNLP以及Chinese model jar - 将Chinese model的jar文件放在CoreNLP解压后的文件夹下
- 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
- 加载库
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个。
- 对句子列表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