首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[python]spacy安装和简单使用教程

[python]spacy安装和简单使用教程

作者头像
云未归来
发布2025-07-16 18:48:33
发布2025-07-16 18:48:33
36700
代码可运行
举报
运行总次数:0
代码可运行

我使用的是python3.8版本,当然你也可以>=python3.9版本但是后面语言模型都要有相应调整。下面我都是按照python3.8版本安装的。

首先我们得安装anaconda3,cuda11.8.0和cudnn8.9.7这些都是比较简单安装本文教程略过。

首先我们创建一个python3.8环境

conda create -n py38 python=3.8

进入环境:conda activate py38

如果您是安装cpu版本spacy可以直接使用:

pip install spacy==3.7.5

这里最好指定这个版本。因为不同版本对后面语言模型版本有要求。

如果您是安装cuda11.x版本spacy您可以使用

pip install spacy[cuda11x]==3.7.5

如果您是安装cuda12.x版本spacy您可以使用

pip install spacy[cuda12x]==3.7.5

安装后即可正常使用spacy模块了,但是上面anaconda3,cuda等安装下载都很耗时,所以spacy安装并不是安装难度大而是耗时上面。

spacy支持多种语言模型,可以通过windows的命令来下载安装。以英语和汉语为例,下载模型的命令如下:

英语模型:

spacy download en_core_web_sm

或者

python -m spacy download en_core_web_sm

汉语模型:

spacy download zh_core_web_sm

或者

python -m spacy download zh_core_web_sm

但由于网络问题,我们用上述命令下载语言模型多数时候会下载失败,这个时候就需要手动下载语言模型。下面才是最难部分,因为spacy中英文模型文件有8个,累计占用2GB以上空间。如果您要直接下载估计很难下载。不过还得学习下下载过程。

【注意】不同版本的语言模型需要匹配适合的Python版本:

Python 3.8可安装spacy 3.7.5 版本的扩展库,对应的语言模型可以安装3.7.0版。

Python 3.9及以上可以安装spacy 3.8.0版本的扩展库,对应的语言模型也可以安装3.8.0版本。

下开始手动下载模型:首先spacy.io/usage/models页面的“Language support”找到所需语言模型链接,以中文语言模型为例:

进入对应的下载页面后,选择需要的汉语模型:

zh_core_web_sm

zh_core_web_md

zh_core_web_lg

zh_core_web_trf

以zh_core_web_sm为例,点击“RELEASE DETAILS”:

加载出3.8.0版本模型,网页如下图所示。

3.8.0版本需要Python3.9以上,否则只能安装较低版本的语言模型,如果想要寻找其他版本,点击“Releases”:

此时上面网址可以清楚看到3.8.0,我们只需要改成3.7.0网址重新访问即可下载对应版本

注意:如果上面文件由于网络无法下载可以去国内下载spacy中英文语言模型3.7.0版本:aistudio.baidu.com/datasetdetail/315178 spacy中英文语言模型3.8.0版本:aistudio.baidu.com/datasetdetail/315183

下载完成后,会得到一个wheel文件,例如3.7.0版本中文模型zh_core_web_sm的文件名为:

zh_core_web_sm-3.87.0-py3-none-any.whl

在命令行窗口中把当前目录切换到语言模型文件所在目录,再执行如下的安装命令:

pip install 语言模型文件全名

例如:

pip install zh_core_web_sm-3.7.0-py3-none-any.whl

或者直接找到文件,选中右键“复制文件地址”,然后在命令行执行如下安装命令:

pip install [whl文件路径]

例如:

pip install "C:\Users\Administrator\Downloads\zh_core_web_sm-3.7.0-py3-none-any.whl"

按照上面步骤我们可以照葫芦画瓢下载其他语言模型。这里我下载了以下几个语言模型

en_core_web_lg-3.7.0-py3-none-any.whl en_core_web_md-3.7.0-py3-none-any.whl en_core_web_sm-3.7.0-py3-none-any.whl en_core_web_trf-3.7.0-py3-none-any.whl zh_core_web_lg-3.7.0-py3-none-any.whl zh_core_web_md-3.7.0-py3-none-any.whl zh_core_web_sm-3.7.0-py3-none-any.whl zh_core_web_trf-3.7.0-py3-none-any.whl

其中有4个文件超过300M,超过2GB这个下载我花费了40分钟完成!

下面是简单使用案例:

属性总结

属性1.分词

spacy在导入nlp语料时已经默认变成token

属性2.分句

使用doc.sents

属性3.打印词性

使用token.pos_

属性4.命名体识别

使用doc.ents

属性1.分词、属性2.分句
代码语言:javascript
代码运行次数:0
运行
复制
import spacy

def print_hi():
    nlp = spacy.load('en_core_web_sm')
    #a导入英文模型
    doc = nlp('Weather is good, very windy and sunny. We have no classes in afternoon')
    #a读进语料,默认已经完成分词存入doc中
    
    #a分词
    for token in doc:
        print(token)
    print('***************')
    #b分句.sents
    for sent in doc.sents:
        print(sent)

补充:一般导入语料都有nlp表示;由于导入语料的时候spacy已经完成分词功能直接调用;在分句时候需要加上’.sents’即可。 输出结果:

属性3.打印词性

代码语言:javascript
代码运行次数:0
运行
复制
import spacy

def print_hi():
    nlp = spacy.load('en_core_web_sm')#导入英文模型
    doc = nlp('Weather is good, very windy and sunny. We have no classes in afternoon')#读进语料,默认已经完成分词存入doc中
    #c打印词性token.pos_
    for token in doc:
        print('{}-{}'.format(token,token.pos_))

if __name__ == '__main__':
    print_hi()

属性4.命名体识别

代码语言:javascript
代码运行次数:0
运行
复制
import spacy

def print_hi():
    nlp = spacy.load('en_core_web_sm')#导入英文模型
    doc = nlp('I went to Paris where I met my old friend Jack from uni.')#读进语料,默认已经完成分词存入doc中
    #d打印实体ents,以及实体类型.label_
    for ent in doc.ents:
        print('{}-{}'.format(ent,ent.label_))

if __name__ == '__main__':
    print_hi()

最后如何判断spacy是否可以使用GPU

代码语言:javascript
代码运行次数:0
运行
复制
import spacy
print(spacy.prefer_gpu())
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-02-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 属性总结
  • 属性1.分词、属性2.分句
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档