【问题标题】:sre_constants.error error en_core_web_sm from spacysre_constants.error 来自 spacy 的错误 en_core_web_sm
【发布时间】:2019-12-05 04:26:40
【问题描述】:

我已经分别安装了 Spacy 和 en_core_web_sm,我正在尝试使用完整路径加载 en_core_web_sm。

import spacy
import en_core_web_sm
nlp = spacy.load(r'C:\Anaconda3\Lib\site-packages\en_core_web_sm\en_core_web_sm-2.0.0')
doc = nlp("The big grey dog ate all of the chocolate, but fortunately he wasn't sick!")

这会导致以下错误:

sre_constants.error: 错误转义 \p 在位置 257。

完整的堆栈跟踪如下:

Traceback (most recent call last):
  File "C:/Users/43976209/PycharmProjects/NLP_Exercises/spacy_trial.py", line 3, in <module>
    nlp = spacy.load(r'C:\ProgramData\Anaconda3\Lib\site-packages\en_core_web_sm\en_core_web_sm-2.0.0')
  File "C:\ProgramData\Anaconda3\lib\site-packages\spacy\__init__.py", line 30, in load
    return util.load_model(name, **overrides)
  File "C:\ProgramData\Anaconda3\lib\site-packages\spacy\util.py", line 166, in load_model
    return load_model_from_path(Path(name), **overrides)
  File "C:\ProgramData\Anaconda3\lib\site-packages\spacy\util.py", line 211, in load_model_from_path
    return nlp.from_disk(model_path)
  File "C:\ProgramData\Anaconda3\lib\site-packages\spacy\language.py", line 941, in from_disk
    util.from_disk(path, deserializers, exclude)
  File "C:\ProgramData\Anaconda3\lib\site-packages\spacy\util.py", line 654, in from_disk
    reader(path / key)
  File "C:\ProgramData\Anaconda3\lib\site-packages\spacy\language.py", line 928, in <lambda>
    p, exclude=["vocab"]
  File "tokenizer.pyx", line 526, in spacy.tokenizer.Tokenizer.from_disk
  File "tokenizer.pyx", line 572, in spacy.tokenizer.Tokenizer.from_bytes
  File "C:\ProgramData\Anaconda3\lib\re.py", line 233, in compile
    return _compile(pattern, flags)
  File "C:\ProgramData\Anaconda3\lib\re.py", line 301, in _compile
    p = sre_compile.compile(pattern, flags)
  File "C:\ProgramData\Anaconda3\lib\sre_compile.py", line 562, in compile
    p = sre_parse.parse(p, flags)
  File "C:\ProgramData\Anaconda3\lib\sre_parse.py", line 856, in parse
    p = _parse_sub(source, pattern, flags & SRE_FLAG_VERBOSE, False)
  File "C:\ProgramData\Anaconda3\lib\sre_parse.py", line 415, in _parse_sub
    itemsappend(_parse(source, state, verbose))
  File "C:\ProgramData\Anaconda3\lib\sre_parse.py", line 526, in _parse
    code1 = _class_escape(source, this)
  File "C:\ProgramData\Anaconda3\lib\sre_parse.py", line 336, in _class_escape
    raise source.error('bad escape %s' % escape, len(escape))
sre_constants.error: bad escape \p at position 257

我正在运行 Python 3.6.1 :: Anaconda 4.4.0(64 位) Spacy 2.2.3 版

这些是我网络上可用的最新版本,我无法从 PyPi 下载任何新版本。

请指教。

谢谢, 谢伦德拉

【问题讨论】:

    标签: python-3.x spacy


    【解决方案1】:

    问题是您尝试使用 spacy v2.2 加载 spacy v2.0 模型,但它们不兼容。您可以使用命令spacy validate 来检查您安装的模型是否与您当前版本的 spacy 兼容。

    使用spacy download en_core_web_sm 下载并安装模型的兼容版本。之后,spacy validate 的输出应该包括这样一行带有绿色复选标记的行:

    package   en-core-web-sm    en_core_web_sm    2.2.5   ✔
    

    您不需要提供 site-packages 目录的完整路径,因为 spacy 会自动搜索已安装包中的模型,因此只需使用 spacy.load("en_core_web_sm")

    【讨论】:

    • 谢谢阿布。这似乎是这个问题的可能原因。但是由于公司防火墙,我无法直接从我的网络连接到 PyPi 并安装兼容版本。
    • 您可以按照此处文档中的说明使用 pip 直接安装 (spacy.io/usage/models#download-pip):pip install https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.2.5/en_core_web_sm-2.2.5.tar.gz 如果您单击 @ 等页面中模型名称旁边的蓝色“发布详细信息”按钮987654322@,它会带你到发布页面,底部有一个链接。
    猜你喜欢
    • 1970-01-01
    • 2021-05-30
    • 2019-11-15
    • 1970-01-01
    • 1970-01-01
    • 2020-03-02
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    相关资源
    最近更新 更多