python - 使用 spacy 加载自定义模型时出错
问题描述
我正在尝试将一个名为“ru2”的自定义模型加载到 spacy 中(用于 npl 处理)。
它可以在那里找到:https ://github.com/buriy/spacy-ru
问题是当我调用函数时
nlp = spacy.load('ru2')
doc = nlp(text)
我看到了错误
C:\ProgramData\Anaconda3\lib\importlib\_bootstrap.py:205: RuntimeWarning: spacy.tokens.span.Span size changed, may indicate binary incompatibility. Expected 72 from C header, got 80 from PyObject
return f(*args, **kwds)
Traceback (most recent call last):
File "C://.../nlp/src/ie/main.py", line 125, in <module>
main(examp_dict['Poroshenko'])
File "C://.../nlp/src/ie/main.py", line 92, in main
nlp = spacy.load('ru2')
File "C:\ProgramData\Anaconda3\lib\site-packages\spacy\__init__.py", line 27, in load
return util.load_model(name, **overrides)
File "C:\ProgramData\Anaconda3\lib\site-packages\spacy\util.py", line 133, in load_model
return load_model_from_path(Path(name), **overrides)
File "C:\ProgramData\Anaconda3\lib\site-packages\spacy\util.py", line 173, in load_model_from_path
return nlp.from_disk(model_path)
File "C:\ProgramData\Anaconda3\lib\site-packages\spacy\language.py", line 791, in from_disk
util.from_disk(path, deserializers, exclude)
File "C:\ProgramData\Anaconda3\lib\site-packages\spacy\util.py", line 630, in from_disk
reader(path / key)
File "C:\ProgramData\Anaconda3\lib\site-packages\spacy\language.py", line 781, in <lambda>
deserializers["tokenizer"] = lambda p: self.tokenizer.from_disk(p, exclude=["vocab"])
File "tokenizer.pyx", line 391, in spacy.tokenizer.Tokenizer.from_disk
File "tokenizer.pyx", line 432, in spacy.tokenizer.Tokenizer.from_bytes
File "C:\ProgramData\Anaconda3\lib\site-packages\spacy\util.py", line 606, in from_bytes
msg = srsly.msgpack_loads(bytes_data)
File "C:\ProgramData\Anaconda3\lib\site-packages\srsly\_msgpack_api.py", line 29, in msgpack_loads
msg = msgpack.loads(data, raw=False, use_list=use_list)
File "C:\ProgramData\Anaconda3\lib\site-packages\srsly\msgpack\__init__.py", line 60, in unpackb
return _unpackb(packed, **kwargs)
File "_unpacker.pyx", line 191, in srsly.msgpack._unpacker.unpackb
TypeError: unhashable type: 'list'
我在网上搜索类似的问题:
但这些解决方案都不适合我。
我用
- msgpack==0.5.6(甚至按照上面链接中的建议降级)
- 空间==2.1.4
解决方案
这是来自https://spacy.io/usage#troubleshooting
如果您正在训练模型、将它们写入磁盘并使用 git 对其进行版本控制,则在尝试在 Windows 环境中加载它们时可能会遇到此错误。发生这种情况是因为默认安装的 Windows 版 Git 配置为在文件签出期间(提交时反之)自动将 Unix 样式的行尾字符 (LF) 转换为 Windows 样式的 (CRLF)。虽然这对于文本文件来说大部分都很好,但写入磁盘的训练模型有一些不应该经过这种转换的二进制文件。当他们这样做时,您会收到上述错误。您可以通过将 core.autocrlf 设置更改为“false”来修复它,或者通过将 .gitattributes 文件] 提交到您的存储库来告诉 git 它不应该在哪些文件或文件夹上进行 LF 到 CRLF 转换,使用像 path/to/spacy/model/** -text 这样的条目。
推荐阅读
- c++ - 如果我从流中提取某些内容,流中是否不再包含我提取的内容?
- reactjs - Material UI 自动完成自定义 renderInput
- reactjs - 启用基于菜单链接的用户身份验证在 reactjs 中不起作用
- flutter - Flutter WebRTC 无法连接到对等点。无法设置远程应答 sdp:在错误状态下调用:kStable
- python - read_pdf FileNotFoundError:[Errno 2] 没有这样的文件或目录:在 Python 中
- c++ - 是否可以在 C++ 中的类和向量中存储一个 unique_ptr?
- c# - 是否可以在 WPF 的 MultiBinding QuickConverter 中使用带有参数的经典转换器?
- c - 如何用strtok函数替换字符-C?
- firebase - 理解 Firestore 安全规则 - 只允许更新某些字段
- python - 如何从python中的字符串中提取月份和年份?