当前位置:   article > 正文

自然语言工具包使用和对比

自然语言工具包使用和对比

FOOLNLTK

安装方法

pip install foolnltk
  • 1

安装完成之后可以直接使用,是这几个里面最方便的。

安装和使用教程参考:
https://www.cnblogs.com/huiyichanmian/p/10844285.html

stanford codenlp

安装比较麻烦,但是顺着下面操作也没什么问题:
0.需要java环境,并且jdk要求64位,版本1.8以上。
1.先pip

pip install stanfordcorenlp
  • 1

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	
 ================================================================
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

stanford codenlp使用参考网址:

LTP

哈工大的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()  # 释放模型
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

NLTK

NLTK无法对中文进行操作,我测试花了很多时间,勿踩坑。

spacy

spacy还没有中文模型,坐等。想要分析中文文本的朋友就不用尝试了。

总结

在这几个自然语言工具包中,stanford codenlp更倾向于把实体切分的更加细化,(例如:(‘中国’, ‘MISC’), (‘大学’, ‘MISC’), (‘学术’, ‘MISC’), (‘演讲’, ‘MISC’) )同时也识别出更多实体。
foolnltk抽取出实体的数量居中,同时粒度相对于人工标注的差不多。(我自己看完感觉的)
Ltp是哈工大开发的一个自然语言处理工具包,抽取的实体相对较少,粒度和foolnltk差不多。 但是发现它抽出来的实体更加精确。(因为56个实体中就有46个与人为标注的一致)
很难给这三个自然语言处理工具包分个高低,不过可以根据在实际应用时选择恰当的工具包:
1.当要求粒度小或者尽可能获得实体时采用stanford codenlp;
2.当需要确定正确的实体时候采用Ltp
3.这两者折中时候使用foolnltks

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/614514
推荐阅读
相关标签
  

闽ICP备14008679号