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

uv管理spaCy语言模型

本文记录如何在使用uv管理python项目dependencies时,把spaCy的模型也纳入其中.

spaCy

一、spaCy简介

spaCy是一个开源的自然语言处理(NLP)库,它主要用于处理文本数据。它支持多种语言,包括英语、中文等。它是由Explosion AI公司开发的,以简单易用和高性能著称。

二、主要功能

  1. 分词(Tokenization)
    • spaCy可以将文本分割成单词、标点符号等基本单元,这是文本处理的基础步骤。例如,对于句子“I love natural language processing.”,它会将其分割为[“I”, “love”, “natural”, “language”, “processing”, “.”]等token。
  2. 词性标注(Part - of - Speech Tagging)
    • 它能够识别文本中每个单词的词性。比如在句子“He quickly ran to the store.”中,“He”是代词(PRON),“quickly”是副词(ADV),“ran”是动词(VERB),“to”是介词(ADP),“the”是冠词(DET),“store”是名词(NOUN)。
  3. 依存句法分析(Dependency Parsing)
    • spaCy可以分析句子的结构,确定单词之间的依存关系。例如在句子“The cat sat on the mat.”中,它能确定“cat”是主语(nsubj),“sat”是谓语(ROOT),“on”是介词(prep),“mat”是宾语(pobj)等依存关系,这对于理解句子的语义结构很有帮助。
  4. 命名实体识别(Named Entity Recognition,NER)
    • 它能够识别文本中的命名实体,如人名、地名、组织名、日期等。比如在文本“Steve Jobs was the CEO of Apple Inc. in 2000.”中,它能够识别出“Steve Jobs”是人名,“Apple Inc.”是组织名,“2000”是日期。
  5. 文本分类(Text Classification)
    • spaCy支持对文本进行分类任务,例如情感分析(判断文本是正面情感、负面情感还是中性情感)或者主题分类(判断文本属于哪个主题类别,如体育、科技等)。
  6. 实体链接(Entity Linking)
    • 它可以将文本中识别的实体与知识库中的实体进行链接。例如,将文本中提到的“埃菲尔铁塔”链接到维基百科中对应的“埃菲尔铁塔”条目,这样可以更好地理解实体的详细信息。

问题描述

sapCy在使用的时候,需要下载目标语言的模型,如果以英文为例就是en_core_web_sm, 中文可以是zh_core_web_lg ,可以用如下脚本下载

# download en_core_web_sm
python -m spacy download en_core_web_sm# download zh_core_web_lg
python -m spacy download zh_core_web_lg

问题出现在用uv进行依赖管理的场景下,因为这些下载的模型没有被加入到依赖列表中,每次重新进行uv sync 操作后,就会丢失这些依赖. 虽然这些模型实际上也是一个依赖包,但是不在官方的registry中,不能直接y用uv add这种方式进行安装.

解决方案

命令行参数

因为是uv sync时造成了模型删除,那么就是uv严格对照依赖列表中的各个依赖项进行处理,把不在其中的都移除了. 根据这个思路,可以用明亮行参数来改变这个行为

uv sync --inexact

这样操作即可. 但这个方案有缺点,因为不会自动下载model,在新的环境中执行spaCy相关任务会报错.

手动声明依赖

这个方案是笔者最终采纳的方案,把模型的下载路径手动写到依赖中,这样不仅可以不被删除,而且在新环境中还会自动下载

dependencies = ["en-core-web-sm @ https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.8.0/en_core_web_sm-3.8.0-py3-none-any.whl","zh-core-web-lg @ https://github.com/explosion/spacy-models/releases/download/zh_core_web_lg-3.8.0/zh_core_web_lg-3.8.0-py3-none-any.whl"
]

注意修改为自己所需的版本即可.

http://www.lqws.cn/news/161677.html

相关文章:

  • 使用Hutool工具进行rsa加密解密示例:
  • JVM垃圾回收器-ZGC
  • GC1809:高性能音频接收与转换芯片
  • NineData云原生智能数据管理平台新功能发布|2025年5月版
  • SpringCloud——Nacos
  • SDC命令详解:使用set_fanout_load命令进行约束
  • 可穿戴设备:健康监测的未来之眼
  • clickhouse常用语句汇总——持续更新中
  • 牛客小白月赛113
  • Git的由来与应用详解:从Linux内核到现代开发的革命性工具
  • windows server2019 不成功的部署docker经历
  • [特殊字符] 一文了解目前主流的 Cursor AI 免费续杯工具!
  • AI时代的弯道超车之第二十四章:AI伦理和版权问题
  • 智慧园区数字孪生全链交付方案:降本增效30%,多案例实践驱动全周期交付
  • STM32入门教程——OLED调试工具
  • Elasticsearch最新入门教程
  • vue3 eslint ts 关闭多单词命名检查
  • AirSim/Cosys-AirSim 游戏开发(二)使用自定义场景
  • 大模型学习
  • adb 连不上真机设备问题汇总
  • uniapp微信小程序视频实时流+pc端预览方案
  • 音视频之视频压缩编码的基本原理
  • Rust Floem UI 框架使用简介
  • 从《现实不似你所见》探寻与缘起性空的思想交织
  • OPenCV CUDA模块目标检测----- HOG 特征提取和目标检测类cv::cuda::HOG
  • 基于STM32设计的水资源监测系统
  • 前缀和题目:逐步求和得到正数的最小值
  • PySpark性能调优手册:大数据处理中的避坑与实践
  • 最小硬件系统概念及其组成
  • 数据质量是什么意思?怎样做好数据质量监控?