nlp入门之spaCy工具的使用

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时计算 Flink 版,5000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 本文作为nlp开山篇的第四篇,简要介绍了spaCy工具的用法

源码请到:自然语言处理练习: 学习自然语言处理时候写的一些代码 (gitee.com)

四、spacy工具包的使用

4.1 spacy工具包安装

spacy工具包宣称可以做到nltk做到的所有事情,并且速度更快,还更好的适配深度学习,最关键的是提供了中文语言模型!!

由于某些不可说的原因,使用官网的安装方式很难成功推荐直接使用conda内部的整合包

运行

condainstallspacycondainstall-cconda-forgespacy-model-en_core_web_sm


就可以安装成功了

如果不成功可以网上寻找spacy的离线安装包,可以参考这篇文章

安装spaCy(最简单的教程)_spacy安装_御用厨师的博客-CSDN博客

4.2 加载模型

可以自行选择安装需要的模型,然后使用命令加载,我这里使用英文模型做示范

示例:

# 加载模型nlp=spacy.load("en_core_web_sm")


4.3 分词

spacy同样可以做到分词

示例:

# 加载语料doc=nlp('Weather is good, very windy and sunny. We have no classes in the afternoon')
# 分词fortokenindoc:
print(token)


4.4 分句

spacy还提供了分句功能

示例:

# 分句forsentindoc.sents:
print(sent)


4.5 词性

spacy和nltk一样提供了分析词性的功能

示例:

# 词性fortokenindoc:
print('{}-{}'.format(token, token.pos_))


词性对照表可以参考

SpaCy词性对照表 - 知乎 (zhihu.com)

4.6 命名体识别

spacy也提供了命名体识别功能

示例:

# 命名体识别doc_2=nlp("I went to Paris where I met my old friend Jack from uni")
forentindoc_2.ents:
print('{}-{}'.format(ent, ent.label_))


还可以将结果进行可视化展示

# 展示doc=nlp("I went to Paris where I met my old friend Jack from uni")
svg=displacy.render(doc, style='ent')
output_path=Path(os.path.join("./", "sentence.html"))
output_path.open('w', encoding="utf-8").write(svg)


4.7 找出书中所有人物的名字

以傲慢与偏见为语料,做一个找出所有人物名字的实战示例

示例:

# 找到书中所有人物名字defread_file(file_name):
withopen(file_name, 'r') asf:
returnf.read()
text=read_file(os.path.join('./', 'data/Pride and Prejudice.txt'))
processed_text=nlp(text)
sentences= [sforsinprocessed_text.sents]
print(len(sentences))
print(sentences[:5])
deffind_person(doc):
c=Counter()
forentindoc.ents:
ifent.label_=='PERSON':
c[ent.lemma_] +=1returnc.most_common(10)
print(find_person(processed_text))


4.8 恐怖袭击分析

根据世界反恐怖组织官网上下载的恐怖袭击事件,来分析特定的组织在特定的地点作案的次数

示例:

# 恐怖袭击分析defread_file_to_list(file_name):
withopen(file_name, 'r') asf:
returnf.readlines()
terrorist_articles=read_file_to_list(os.path.join('./', 'data/rand-terrorism-dataset.txt'))
print(terrorist_articles[:5])
terrorist_articles_nlp= [nlp(art.lower()) forartinterrorist_articles]
common_terrorist_groups= [
'taliban',
'al-qaeda',
'hamas',
'fatah',
'plo',
'bilad al-rafidayn']
commmon_locations= [
'iraq',
'baghdad',
'kirkuk',
'mosul',
'afghanistan',
'kabul',
'basra',
'palestine',
'gaza',
'israel',
'istanbul',
'beirut',
'pakistan']
location_entity_dict=defaultdict(Counter)
forarticleinterrorist_articles_nlp:
article_terrorist_groups= [ent.lemma_forentinarticle.entsifent.label_=='PERSON'orent.label_=="ORG"]
article_locations= [ent.lemma_forentinarticle.entsifent.label_=='GPE']
terrorist_common= [entforentinarticle_terrorist_groupsifentincommon_terrorist_groups]
location_common= [entforentinarticle_locationsifentincommmon_locations]
forfound_entityinterrorist_common:
forfound_locationinlocation_common:
location_entity_dict[found_entity][found_location] +=1print(location_entity_dict)
location_entity_df=pd.DataFrame.from_dict(dict(location_entity_dict), dtype=int)
location_entity_df=location_entity_df.fillna(value=0).astype(int)
print(location_entity_df)
plt.figure(figsize=(12, 10))
hmap=sns.heatmap(location_entity_df, annot=True, fmt='d', cmap='YlGnBu', cbar=False)
plt.title("Global Incidents by Terrorist group")
plt.xticks(rotation=30)
plt.show()


 

 

 


相关文章
|
存储 自然语言处理 数据可视化
自然语言入门:NLP数据读取与数据分析
本章主要内容为数据读取和数据分析,具体使用`Pandas`库完成数据读取操作,并对赛题数据进行分析构成。
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(NLP自然语言处理概念介绍)
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(NLP自然语言处理概念介绍)
144 0
|
2月前
|
自然语言处理 算法 数据挖掘
探讨如何利用Python中的NLP工具,从被动收集到主动分析文本数据的过程
【10月更文挑战第11天】本文介绍了自然语言处理(NLP)在文本分析中的应用,从被动收集到主动分析的过程。通过Python代码示例,详细展示了文本预处理、特征提取、情感分析和主题建模等关键技术,帮助读者理解如何有效利用NLP工具进行文本数据分析。
60 2
|
4月前
|
自然语言处理 算法 数据可视化
NLP-基于bertopic工具的新闻文本分析与挖掘
这篇文章介绍了如何使用Bertopic工具进行新闻文本分析与挖掘,包括安装Bertopic库、加载和预处理数据集、建立并训练主题模型、评估模型性能、分类新闻标题、调优聚类结果的详细步骤和方法。
NLP-基于bertopic工具的新闻文本分析与挖掘
|
5月前
|
SQL 人工智能 自然语言处理
一款利用人工智能将自然语言查询转换为 SQL 代码的互译工具 - SQL Translator
一款利用人工智能将自然语言查询转换为 SQL 代码的互译工具 - SQL Translator
145 0
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
自然语言处理(NLP)技术入门指南
【5月更文挑战第3天】本文是自然语言处理(NLP)技术的入门指南,介绍了NLP的基本概念、关键技术和学习建议。NLP旨在实现人机自然语言交互,应用于机器翻译、文本分类等领域。核心技术包括词法分析、句法分析、语义分析及深度学习模型。入门学习需掌握基础知识,动手实践,关注前沿技术并持续学习。通过学习NLP,可为人工智能发展贡献力量。
|
7月前
|
缓存 自然语言处理 数据处理
Python自然语言处理面试:NLTK、SpaCy与Hugging Face库详解
【4月更文挑战第16天】本文介绍了Python NLP面试中NLTK、SpaCy和Hugging Face库的常见问题和易错点。通过示例代码展示了如何进行分词、词性标注、命名实体识别、相似度计算、依存关系分析、文本分类及预训练模型调用等任务。重点强调了理解库功能、预处理、模型选择、性能优化和模型解释性的重要性,帮助面试者提升NLP技术展示。
126 5
|
数据采集 机器学习/深度学习 自然语言处理
nlp入门之基于贝叶斯算法的拼写错误检测器
基于贝叶斯思想简单的实现了一个拼写错误检测器
|
7月前
|
机器学习/深度学习 自然语言处理 Java
中文自然语言处理相关资料 | Chinese NLP Toolkits 中文NLP工具
中文自然语言处理相关资料 | Chinese NLP Toolkits 中文NLP工具
|
机器学习/深度学习 自然语言处理 资源调度
入门自然语言处理(二):GRU
入门自然语言处理(二):GRU
123 0