赞
踩
安装方法
pip install foolnltk
安装完成之后可以直接使用,是这几个里面最方便的。
安装和使用教程参考:
https://www.cnblogs.com/huiyichanmian/p/10844285.html
安装比较麻烦,但是顺着下面操作也没什么问题:
0.需要java环境,并且jdk要求64位,版本1.8以上。
1.先pip
pip install stanfordcorenlp
2.再下载模型
stanford-corenlp-full-2018-10-05
下载链接:https://pan.baidu.com/s/1BWXs3gqLU6bAxSoE0K3_-g
3.然后下载中文模型stanford-chinese-corenlp-2018-10-05-models.jar
因为stanford-corenlp-full-2018-10-05默认为英文,下载完之后放在stanford-corenlp-full-2018-10-05目录里面。注意:上面给的链接已经放进去了,这一步可以不用做。
最后,使用
============================================================== ##################stanford codenlp############################################ sfn_list = [] sfn_count1 = 0 sfn_count2 = 0 from stanfordcorenlp import StanfordCoreNLP nlp = StanfordCoreNLP(r'C:\Users\Administrator\Desktop\python工程\nlt\stanford-corenlp-full-2018-10-05',lang='zh') sfn_result = nlp.ner(data_150) for line in sfn_result: a = line[0] sfn_list.append(a) b = line[1] if b!='O': sfn_count1 += 1 list2.append(a) else: sfn_count2 += 1 nlp.close ================================================================
stanford codenlp使用参考网址:
哈工大的LTP使用在python3.7下好像还没法使用,如果是3.7可以构建虚拟环境来使用。
构建虚拟环境参考:
https://blog.csdn.net/anshidashen/article/details/101150218
pyltp-0.2.1-cp36-cp36m-win_amd64下载:https://pan.baidu.com/s/1v4_pIBg5ZWfeUHwldUiHCg
LTP模型下载:
https://pan.baidu.com/s/1jfFTWWKvQO631mtvJHUzEw
安装和使用LTP可以参考如下网站,很详细
https://www.cnblogs.com/huiyichanmian/p/10844285.html
实体命名使用例子:
import os from pyltp import NamedEntityRecognizer#实体命名 from pyltp import Segmentor #分词 from pyltp import Postagger#词性标注 #加载模型 LTP_DATA_DIR = r'C:\Users\Administrator\Desktop\ltp_data_v3.4.0' # LTP模型目录路径 ner_model_path = os.path.join(LTP_DATA_DIR, 'ner.model') # 实体命名模型路径 模型名称为'ner.model' cws_model_path = os.path.join(LTP_DATA_DIR, 'cws.model') # 分词模型路径, 模型名称为'cws.model' pos_model_path = os.path.join(LTP_DATA_DIR, 'pos.model') # 词性标注模型路径, 模型名称为'pos.model' #分词 和 词性标注 segmentor = Segmentor() # 初始化实例 postagger = Postagger() # 初始化实例 recognizer = NamedEntityRecognizer() # 初始化实例 segmentor.load(cws_model_path) # 加载模型 postagger.load(pos_model_path) # 加载模型 recognizer.load(ner_model_path) # 加载模型 words = segmentor.segment(data_150) # 分词 postags = postagger.postag(words) # 词性标注 ''' 命名实体识别,需要传入已经分词的words,和他们对应的词性标注 两个list,例如: #words = ['元芳', '你', '怎么', '看'] # 分词模块的返回值 #postags = ['nh', 'r', 'r', 'v'] # 词性标注的返回值 ''' netags = recognizer.recognize(words, postags) print(netags) print(list(netags)) #不释放模型 CPU达到了85%使用 recognizer.release() # 释放模型 postagger.release() # 释放模型 segmentor.release() # 释放模型
NLTK无法对中文进行操作,我测试花了很多时间,勿踩坑。
spacy还没有中文模型,坐等。想要分析中文文本的朋友就不用尝试了。
在这几个自然语言工具包中,stanford codenlp更倾向于把实体切分的更加细化,(例如:(‘中国’, ‘MISC’), (‘大学’, ‘MISC’), (‘学术’, ‘MISC’), (‘演讲’, ‘MISC’) )同时也识别出更多实体。
foolnltk抽取出实体的数量居中,同时粒度相对于人工标注的差不多。(我自己看完感觉的)
Ltp是哈工大开发的一个自然语言处理工具包,抽取的实体相对较少,粒度和foolnltk差不多。 但是发现它抽出来的实体更加精确。(因为56个实体中就有46个与人为标注的一致)
很难给这三个自然语言处理工具包分个高低,不过可以根据在实际应用时选择恰当的工具包:
1.当要求粒度小或者尽可能获得实体时采用stanford codenlp;
2.当需要确定正确的实体时候采用Ltp
3.这两者折中时候使用foolnltks
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。