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

我使用的是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.分句

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.打印词性

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.命名体识别

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

import spacy
print(spacy.prefer_gpu())

### 解决 PP-OCRv4 出现的错误 当遇到 `WARNING: The pretrained params backbone.blocks2.0.dw_conv.lab.scale not in model` 这样的警告时,这通常意味着预训练模型中的某些参数未能匹配到当前配置下的模型结构中[^2]。 对于此问题的一个有效解决方案是采用特定配置文件来适配预训练权重。具体操作方法如下: 通过指定配置文件 `ch_PP-OCRv4_det_student.yml` 并利用已有的最佳精度预训练模型 (`best_accuracy`) 来启动训练过程可以绕过上述不兼容的问题。执行命令如下所示: ```bash python3 tools/train.py -c configs/det/ch_PP-OCRv4/ch_PP-OCRv4_det_student.yml ``` 该方案不仅解决了参数缺失带来的警告,还能够继续基于高质量的预训练成果进行微调,从而提升最终检测效果。 关于蒸馏的概念,在机器学习领域内指的是将大型复杂网络(teacher 模型)的知识迁移到小型简单网络(student 模型)。这里 student teacher 的关系是指两个不同规模或架构的神经网络之间的指导与被指导的关系;其中 teacher 已经经过充分训练并具有良好的性能,而 student 则试图模仿前者的行为模式以达到相似的效果但保持更高效的计算特性。 至于提到的 `Traceback` 错误信息部分,由于未提供具体的跟踪堆栈详情,难以给出针对性建议。不过一般而言,这类报错往往涉及代码逻辑错误或是环境配置不当等问题。为了更好地帮助定位解决问题,推荐记录完整的异常日志,并仔细检查最近修改过的代码片段以及确认依赖库版本的一致性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FL1623863129

你的打赏是我写文章最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值