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

spaCy基础入门

spaCy 概览说明

spaCy 是一个现代、快速、工业级 NLP 工具库,专门为实际工程应用设计,提供:
• 分词(Tokenization)
• 词性标注(POS Tagging)
• 命名实体识别(NER)
• 依存句法分析(Dependency Parsing)
• 句子分割(Sentence Segmentation)
• 词向量(Word Vectors)
• 文本相似度计算(Similarity)

并且内置多语言模型(英、德、法、中等),调用统一、速度极快,适合构建生产级 NLP 系统。

spaCy 典型方法功能总结

功能方法 / 属性说明
加载语言模型spacy.load()加载指定语言模型
文本分析nlp(text)对文本进行 NLP 分析
分词for token in doc拆分为单词 Token
词性标注token.pos_查看单词的词性
依存句法分析token.dep_, token.head分析句子成分依赖关系
命名实体识别for ent in doc.ents提取命名实体(人名、地名、组织等)
句子分割for sent in doc.sents将文本自动拆分为句子
词向量token.vector获取词向量(中大型模型)
相似度计算token1.similarity(token2)计算两个词或文本的相似度

spaCy 功能 示例

0.安装与模型下载

pip install spacy
python -m spacy download en_core_web_sm
常用语言模型
模型名称语言特点下载命令
en_core_web_sm英文轻量级,适合测试与学习python -m spacy download en_core_web_sm
en_core_web_md英文中等体积,内置词向量python -m spacy download en_core_web_md
en_core_web_lg英文大型模型,词向量丰富,准确率高python -m spacy download en_core_web_lg
zh_core_web_sm中文轻量中文模型,分词、词性标注、NERpython -m spacy download zh_core_web_sm
xx_ent_wiki_sm多语言支持多语言命名实体识别python -m spacy download xx_ent_wiki_sm

📌 推荐:开发实战用 en_core_web_mden_core_web_lg,学习测试用 en_core_web_sm

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

1.分词 Tokenization

doc = nlp("Apple is looking at buying a U.K. startup.")
for token in doc:print(token.text)

输出

Apple
is
looking
at
buying
a
U.K.
startup
.

2.词性标注 POS Tagging

for token in doc:print(f"{token.text} -> {token.pos_}")

输出

Apple -> PROPN
is -> AUX
looking -> VERB
at -> ADP
buying -> VERB
a -> DET
U.K. -> PROPN
startup -> NOUN
. -> PUNCT

3.命名实体识别 Named Entity Recognition (NER)

for ent in doc.ents:print(f"{ent.text} -> {ent.label_}")

输出

Apple -> ORG
U.K. -> GPE

4.依存句法分析 Dependency Parsing

for token in doc:print(f"{token.text} <--{token.dep_}-- {token.head.text}")

输出

Apple <--nsubj-- looking
is <--aux-- looking
looking <--ROOT-- looking
at <--prep-- looking
buying <--pcomp-- at
a <--det-- startup
U.K. <--compound-- startup
startup <--dobj-- buying
. <--punct-- looking

5.句子分割 Sentence Segmentation

doc = nlp("""
Apple is looking at buying a U.K. startup.
NOVIDA is considering setting up a factory in China.
The Taliban is planning to hold a presidential election.
""")
for sent in doc.sents:print(sent.text)

输出

Apple is looking at buying a U.K. startup.NOVIDA is considering setting up a factory in China.The Taliban is planning to hold a presidential election.

6.词向量 Word Vectors (中大型模型)

下载重大模型: python -m spacy download en_core_web_md

nlp = spacy.load("en_core_web_md")
doc = nlp("apple banana orange")
print(doc[0].vector)

在这里插入图片描述

7.相似度计算 Similarity

print(doc[0].similarity(doc[1])) # 1.0

总结

spaCy 与 NLTK 功能对比

功能NLTKspaCy
分词word_tokenize()doc 对象自动分词
词性标注(POS)pos_tag()token.pos_
命名实体识别(NER)ne_chunk()doc.ents
依存句法分析基本不支持token.dep_, token.head
句子分割sent_tokenize()doc.sents
词向量需外部 gensim中大型模型内置
相似度计算gensim 或自写算法similarity() 内置
模型管理内置多语言模型,直接调用
速度较慢极快
应用场景学术、教学、自定义分析工业级应用、实战项目

📌 小结:

  • 📌 spaCy 更快更适合工业化项目
  • 📌 NLTK 灵活适合教学与学术研究
http://www.xdnf.cn/news/5862.html

相关文章:

  • transforms.Compose()
  • ARFoundation 图片识别,切换图片克隆不同的追踪模型
  • Rodrigues旋转公式-绕任意轴旋转
  • Excel宏和VBA的详细分步指南
  • Linux系统:文件系统前言,详解CHSLBA地址
  • 如何创建maven项目
  • java之网络编程
  • uniapp(vue3)动态计算swiper高度封装自定义hook
  • SD-HOST Controller design-----SD CLK 设计
  • 深度学习之优化器【从梯度下降到自适应学习率算法】(pytorch版)
  • 华为鸿蒙电脑能否作为开发机?开发非鸿蒙应用?
  • 微服务的“导航系统”:使用Spring Cloud Eureka实现服务注册与发现
  • 销售具备的能力有哪些
  • JAVA研发+前后端分离,ZKmall开源商城B2C商城如何保障系统性能?
  • Python中元组(Tuple)使用详解和注意事项
  • Kotlin 中的 Unit 类型的作用以及 Java 中 Void 的区别
  • 拓扑排序+dp
  • STM32-DMA数据转运(8)
  • 直接在Excel中用Python Matplotlib/Seaborn/Plotly......
  • Linux 内核网络协议栈:从 Socket 类型到协议注册的深度解析
  • 思迈特软件携手天阳科技,打造ChatBI金融智能分析新标杆
  • 适应性神经树:当深度学习遇上决策树的“生长法则”
  • Spring Boot 整合 Redis 实战
  • MySQL 事务(二)
  • 在 Qt Creator 中为 QDockWidget 设置隐藏和显示按钮
  • 中电金信参编的国家标准《信息技术 中间件 消息中间件技术要求》正式发布
  • 【爬虫】DrissionPage-1
  • 【TDengine源码阅读】#if defined(__APPLE__)
  • (C语言)超市管理系统(测试版)(指针)(数据结构)(二进制文件读写)
  • Android支持离线功能的复杂业务场景(如编辑、同步):设计数据同步策略的解决方案