NLTK/spaCy 自然语言处理NLP程序包使用总结( 二 )


形容词簇对于形容词,WordNet将它们的词义分为中心 (Head, a) 同义词集与卫星 (Satellite, s) 同义词集 。一个中心通常围绕一个或多个卫星同义词集,从而形成一个簇 。而中心同义词集则表示这个整个簇的基本概念 。可以通过similar_tos()获取一个中心同义词集的所有卫星 。
a = wordnet.synset("glorious.a.01")a.similar_tos()【NLTK/spaCy 自然语言处理NLP程序包使用总结】

NLTK/spaCy 自然语言处理NLP程序包使用总结

文章插图
结构图如下:
NLTK/spaCy 自然语言处理NLP程序包使用总结

文章插图
句子词性标注NLTK用了一些当前推荐的方法来对词性进行标注,内部应该是用了一些人为定义的规则加上神经网络 。
s = "A man struck my video camera with a hammer."text = nltk.word_tokenize(s) # 将句子划分为词列表 , 英语很简单类似于.split(' '),但其他语言如中文就不一定了tag1 = nltk.pos_tag(text)tag2 = nltk.pos_tag(text, tagset='universal')print("Tag1: ", tag1, end='\n\n')print("Tag2: ", tag2)
NLTK/spaCy 自然语言处理NLP程序包使用总结

文章插图
加上universal参数是直接分析单个词的基本词性 , 不加则默认进行更细粒度的Penn Treebank POS Tags划分 。
SpaCySpaCy提供了分词(Tokenization)、词性标注(Part-Of-Speech Tagging)、依赖关系分析(Dependency Parsing)、命名实体识别(Named Entity Recognization)、停用词识别(Stop Words)、名词短语提?。∟oun Chunks)等方法,以及展示句子依赖关系的可视化工具 。
获取神经网络模型SpaCy的NLP方法主要通过神经网络实现,因此在使用前需要下载安装相应的神经网络模型 。SpaCy内部并没有提供模型的下载接口,需要我们通过python调用命令下载安装 。各类语言模型的介绍可以通过以下网址查看:
https://github.com/explosion/spacy-models/releases
在SpaCy安装好后(pip直接安装),通过如下命令安装所需的神经网络模型:
python -m spacy download en_core_web_lg其中en_core_web_lg为模型的名称:en表示英语,如zh表示中文;web表示该模型利用网页数据进行预训练,另外还有news等;lg表示下载大模型,如sm为小模型,trf则为基于transformer的模型 。
基本功能下载好语言模型后导入 。然后将需要进行处理的文本输入模型中:
import spacymodel = spacy.load("zh_core_web_lg")text = '无法改变想法的人,什么事情也改变不了 。——萧伯纳'output = model(text)分词、词性标注、依赖关系分析、命名实体识别、停用词识别:
print('分词:    ', end='\t')for i in output:  print(i.text, end='\t')print('\n粗粒度词性:  ', end='\t')for i in output:  print(i.pos_, end='\t')print('\n细粒度词性:  ', end='\t')for i in output:  print(i.tag_, end='\t')print('\n依赖关系:', end='\t')for i in output:  print(i.dep_, end='\t')print('\n命名实体识别:', end='\t')for i in output:  print(i.ent_type_, end='\t')print('\n停用词识别:', end='\t')for i in output:  print(i.is_stop, end='\t')
NLTK/spaCy 自然语言处理NLP程序包使用总结

文章插图
名词短语提取在中文模型中没有,英文模型中用output.noun_chunks获取 。
另外,可视化方法如下:
from spacy import displacyhtml = displacy.render(output, style="ent", jupyter=False) #命名实体可视化f = open('html1.html', 'w')f.write(html)html = displacy.render(output, style="dep", jupyter=False) #依赖关系可视化f = open('html2.html', 'w')f.write(html)输出html矢量图
NLTK/spaCy 自然语言处理NLP程序包使用总结

文章插图

NLTK/spaCy 自然语言处理NLP程序包使用总结

文章插图
StanfordNLP另外还有斯坦福的库,以后要用再记录 。。特性:支持中文等53种语言、内置许多NLP神经网络模型、包含大量语义分析工具 。

推荐阅读