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 灵活适合教学与学术研究
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值