当前位置: 首页 > news >正文

Python自然语言处理之spacy模块介绍、安装与常见操作案例

文章目录

    • spacy模块介绍
    • 安装spacy
    • 常见操作案例及代码
      • 1. 加载模型并处理文本
      • 2. 词性标注
      • 3. 命名实体识别
      • 4. 依存句法分析
      • 5. 可视化(在Jupyter Notebook中)

spacy模块介绍

spacy是一个强大的Python库,用于自然语言处理(NLP)。它提供了丰富的功能,包括分词、词性标注、依存句法分析、命名实体识别等,并且支持多种语言。spacy以其高性能、易用性和可扩展性而受到广泛欢迎。

安装spacy

在Python中安装spacy及其英语模型可以通过pip完成。以下是一个基本的安装命令,包括安装spaCy库和下载英语小模型en_core_web_sm

pip install spacy
python -m spacy download en_core_web_sm

常见操作案例及代码

1. 加载模型并处理文本

import spacy# 加载预训练的英语模型
nlp = spacy.load("en_core_web_sm")# 处理文本
text = "Apple is looking at buying U.K. startup for $1 billion."
doc = nlp(text)# 打印分词结果
for token in doc:print(token.text)

输出结果(示例):

Apple
is
looking
at
buying
U.K.
startup
for
$
1
billion
.

2. 词性标注

# 打印词性标注结果
for token in doc:print(f"{token.text}: {token.pos_}")

输出结果(示例):

Apple: PROPN
is: VERB
looking: VERB
at: ADP
buying: VERB
U.K.: PROPN
startup: NOUN
for: ADP
$: SYM
1: NUM
billion: NUM
.: PUNCT

3. 命名实体识别

# 打印命名实体识别结果
for ent in doc.ents:print(f"{ent.text}: {ent.label_}")

输出结果(示例):

Apple: ORG
U.K.: GPE
$1 billion: MONEY

4. 依存句法分析

# 打印依存句法分析结果
for token in doc:print(f"{token.text}: {token.dep_}{token.head.text}")

输出结果(示例,注意依存关系可能因版本和模型而异):

Apple: nsubj → looking
is: ROOT → is
looking: VERB → is
at: prep → looking
buying: pobj → at
U.K.: compound → startup
startup: dobj → buying
for: prep → buying
$: nmod → billion
1: nummod → billion
billion: pobj → for
.: punct → looking

5. 可视化(在Jupyter Notebook中)

由于可视化通常在Jupyter Notebook中更直观,这里假设你正在使用Jupyter Notebook环境。

from spacy import displacy# 依存句法分析可视化
displacy.render(doc, style="dep", jupyter=True)# 命名实体识别可视化
displacy.render(doc, style="ent", jupyter=True)

注意:上述可视化代码在Jupyter Notebook中执行时,会直接在输出单元格中显示图形。在非Jupyter环境中,你需要将结果保存为HTML文件或其他格式进行查看。

spacy的这些功能为自然语言处理提供了强大的工具集,使得文本分析、信息提取等任务变得更加容易和高效。

相关文章:

  • 从零开始手写STL库:Stack
  • 【质优价廉】GAP9 AI算力处理器赋能智能可听耳机,超低功耗畅享未来音频体验!
  • 【C语言内存管理】第三章 堆内存管理
  • 《ToDesk 云电脑、易腾云、青椒云移动端体验实测:让手机秒变超级电脑》
  • ARM 服务器上安装 OpenEuler (欧拉)
  • 银河麒麟桌面操作系统V10登录闪退问题解决
  • python并发编程实战
  • R 语言 | 取数据框一列子集时,如何保持数据框结构?drop=F
  • 【Python】YOLO牛刀小试:快速实现视频物体检测
  • Windows批处理文件编写指南
  • GEE数据集:全球城市热岛强度(UHII)数据集(更新)
  • 一起了解AI的发展历程和AGI的未来展望
  • 完成UI界面的绘制
  • Unity3D 创建一个人物,实现人物的移动
  • springboot+大数据基于数据挖掘的招聘信息可视化大屏系统【内含源码+文档+部署教程】
  • Android优雅地处理按钮重复点击
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • create-react-app项目添加less配置
  • miaov-React 最佳入门
  • mysql常用命令汇总
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • node学习系列之简单文件上传
  • Otto开发初探——微服务依赖管理新利器
  • rc-form之最单纯情况
  • Service Worker
  • SpringCloud集成分布式事务LCN (一)
  • vue-loader 源码解析系列之 selector
  • webpack4 一点通
  • 初识 beanstalkd
  • 给新手的新浪微博 SDK 集成教程【一】
  • 聊聊redis的数据结构的应用
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 面试总结JavaScript篇
  • 使用Swoole加速Laravel(正式环境中)
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 微信公众号开发小记——5.python微信红包
  • 以太坊客户端Geth命令参数详解
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • #pragma 指令
  • $GOPATH/go.mod exists but should not goland
  • $LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (分布式缓存)Redis分片集群
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (算法设计与分析)第一章算法概述-习题
  • (五)c52学习之旅-静态数码管
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .Net CF下精确的计时器
  • .Net Core 笔试1
  • .Net Core和.Net Standard直观理解
  • .Net FrameWork总结
  • .net 中viewstate的原理和使用
  • .NET企业级应用架构设计系列之结尾篇