问题标签 [spacy-3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
named-entity-recognition - catalogue.RegistryError:[E893] 在函数注册表“回调”中找不到函数“spacy.copy_from_base_model.v1”
我是 Spacy 的新用户,我正在尝试运行此ner_demo_update 项目,但出现此错误: catalogue.RegistryError: [E893] 在函数注册表“回调”中找不到函数“spacy.copy_from_base_model.v1”。如果您使用的是自定义函数,请确保代码可用。如果该功能由第三方软件包提供,例如 spacy-transformers,请确保该软件包已安装在您的环境中。 我想知道是否有人面临同样的问题。
python - 是否可以在 spaCy IOB 转换器生成的 JSON 中检索整个句子?
按照步骤将 IOB 格式的数据转换为 spaCy 兼容的 JSON;"raw": string
应该代表句子的值在我的 JSON 中显示为“null”。
这是我的数据( )的摘录test.iob
:
然后,我输入了命令:
最后,在输出中,我得到以下 JSON,但没有"raw"
值:
我真的很想检索这句话(在“原始”值中),以便能够从 JSON 的实体创建一个训练集,如下所示:
这可能是因为我的 IOB 文件不包含句子之间的空格吗?(因为查看spaCy 转换器的示例,它似乎不会影响 iob 到 json 的转换)
如果您对此问题有任何线索,请提前致谢。
python-3.x - NER:为 Spacy v3 定义训练数据
我真的需要一些帮助来为 spacy 创建训练数据。我尝试了很多方法来为 spacy 创建训练数据。我从单词和实体的 csv 开始,将它们转换为单词和实体列表,将单词放在一起成为句子列表,将标签放在每个句子的标签列表中。然后我将它们转换为 json 格式。我现在有多个版本的 json 文件,我想将它们转换为新的 .spacy 格式。但是,使用 --converter ner 后似乎没有任何训练数据有效,因为它找不到 NER 格式。
我首先尝试将示例转换为 json 文件
由于这没有按预期工作。然后我尝试写一个字典列表。所以而不是
我创建了一个列表 TRAIN_DATA,将值添加为 dict,如下所示:
将 TRAIN_DATA 再次保存到 json 文件中。
但是,当使用python -m spacy convert --converter ner /path/to/file /path/to/save
它时,它会将其转换为 .spacy,但是,它指出:
⚠ 无法自动检测 NER 格式。转换可能不会成功。请参阅https://spacy.io/api/cli#convert ⚠ 没有找到与 option 一起使用的句子边界
-n 1
。用于-s
自动分段句子或-n 0
禁用。⚠ 没有找到句子边界。用于-s
自动分句。⚠ 未找到文档分隔符。用于-n
自动将句子分组到文档中。✔ 生成的输出文件(1 个文件):/content/drive/MyDrive/TRAIN_DATA/hope.spacy
转换为 json 后,我的训练数据看起来像这样:
[{"Schartau sagte dem Tagesspiegel vom Freitag, Fischer sei in einer Weise aufgetreten, die alles andere als überzeugend war.": {"entities": "(0,8,'B-PER'),(9,14,' O'),(15,18,'O'),(19,31,'B-ORG'),(32,35,'O'),(36,42,'O'),(43,44 ,'O'),(45,52,'B-PER'),(53,56,'O'),(57,59,'O'),(60,65,'O'),(66 ,71,'O'),(72,82,'O'),(83,84,'O'),(85,88,'O'),(89,94,'O'),(95,101 ,'O'),(102,105,'O'),(106,117,'O'),(118,120,'O')"}}, {"welt.de vom 29.10.2005 Firmengründer Wolf Peter Bree arbeitete Anfang der siebziger Jahre als Möbelvertreter, als er einen fliegenden Händler aus dem Libanon traf.": {"entities": "(0,22,'[2005-10-29]'),...
或像这样:
[("Schartau sagte dem Tagesspiegel vom Freitag, Fischer sei in einer Weise aufgetreten, die alles andere als überzeugend war.", {"entities": (0,8,'B-PER'),(9,14,'O '),(15,18,'O'),(19,31,'B-ORG'),(32,35,'O'),(36,42,'O'),(43,44, 'O'),(45,52,'B-PER'),(53,56,'O'),(57,59,'O'),(60,65,'O'),(66, 71,'O'),(72,82,'O'),(83,84,'O'),(85,88,'O'),(89,94,'O'),(95,101, 'O'),(102,105,'O'),(106,117,'O'),(118,120,'O')}),....
给我输出:
⚠ debug-data 命令现在可通过“debug data”子命令(不带连字符)使用。您可以运行 python -m spacy debug --help 以了解其他可用调试命令的概述。
============================ 数据文件验证=================== ========= ✔ 语料库是可加载的 ✔ 管道可以用数据初始化
================================ 训练统计 ================= ============== 语言:de 训练管道:transformer,ner 1 个训练文档 1 个评估文档 ✔ 训练和评估数据之间没有重叠 ✘ 训练新管道的示例数量少 (1)
=============================== 词汇和向量================= ============= ℹ 数据中共有 1 个单词(1 个唯一)ℹ 包中不存在单词向量
========================== 命名实体识别==================== ===== ℹ 1 个标签 0 个缺失值(带有 '-' 标签的标记)⚠ 标签 'stamt",{"entities":[(0,51,"O" ),(52,67,"B' (1) ⚠ 没有新标签 'stamt",{"entities":[(0,51,"O"),(52,67,"B' ✔没有由空格组成或以空格开头/结尾的实体✔ 没有由标点符号组成或以标点符号开头/结尾的实体
===================================总结=============== =================== ✔ 5 次检查通过 ⚠ 2 次警告 ✘ 1 次错误
有人可以帮我将我的单词和实体列表转换为 spacys NER 格式来训练 NER 吗?我会很感激。谢谢!
gpu - 为什么 Spacy 3 NER 对 GPU 和 CPU 使用不同的管道?
Spacy 'train' 命令使用命令行选项 --gpu 0,允许在使用 GPU 训练和不使用 GPU 之间进行“最后一分钟”选择 - 仅使用 CPU。
但是,使用https://spacy.io/usage/training#quickstart在 GPU 和 CPU 之间进行选择会导致(基本)配置存在重大差异。就我而言(处理 NER),我得到了两个不同的管道:
- 对于 CPU:管道 = [“ tok2vec ”,“ner”]
- 对于 GPU:管道 = [“变压器”,“ner”]
(具有非常不同的以下组件设置)。
由于我的 GPU 只有 6GB 内存,所以我很快就耗尽了 GPU 内存 - 无法使用它。但是当我切换到仅使用 CPU 时,两个管道之间的训练行为大不相同:
["tok2vec","ner"] 管道几乎在单核上运行,在几个小时内训练我的模型(8,000 个训练,2000 个开发/验证文档)。明显快于 Spacy 2(即使使用 GPU),但有时会使用大量内存(高达 30G)。
["transformer","ner"] 管道爆炸成使用多达 20 个内核(在 40 个逻辑内核机器上),所以我希望它运行得很快。但它似乎永远运行。在一个小时内,我只完成了第一个“时代”,然后(在下一个时代)它崩溃了(见下文)。由于我的数据(每个批处理 100 个“文档”的 DocBin 文件)是相同的,因此下面的崩溃(无序 B/I 标记)很难解释。
我的主要问题是为什么在针对 GPU 和 CPU 时管道会有所不同?以 GPU 为目标的向量在哪里?
碰撞: ...
python - 使用 tensorflow 实现的 spacy 3.0 的自定义模型
我已经搜索和搜索。我能够找到这个 git 存储库,它将一个瘦模型作为关系提取器管道放在 spacy 中。我需要添加使用 Tensorflow 作为 Spacy 管道实现的 NER 模型,但我不知道添加使用 Thinc 和 TensorFlow 实现的自定义模型有什么区别?
python - ValueError:无法为包含在多个实体跨度中的令牌 27 设置实体
我正在尝试通过先将 adataset
转换.spacy
为doc
然后再转换为DocBin
. 整个dataset
文件可通过GoogleDocs访问。
我运行以下功能:
在 上运行该函数后dataset
,我得到了回溯:
ValueError: [E1010] Unable to set entity information for token 27 which is included in more than one span in entities, blocked, missing or outside.
在仔细查看dataset
文件以查找text
引发此回溯的文件后,我发现以下内容:
我不知道如何解决这个问题。
nlp - SpaCy:使用记分器/示例的自定义 NER 模型的指标
我正在尝试使用 Example 和 Scorer 测试我的模型,但是,我无法获取 Example 对象的列表。该模型接收一大块文本并返回该文本中的实体。
谁能提供一个如何实施的例子?我在互联网上搜索了很多,但我没有找到任何有帮助的东西
谢谢!!!
python - 将 NER 训练数据转换为 Spacy 训练数据格式
我正在使用 Spacy 创建印度尼西亚 NER 模型。我正在使用来自https://raw.githubusercontent.com/yohanesgultom/nlp-experiments/master/data/ner/training_data.txt的训练数据
以上训练数据使用此标签格式:
我想将此训练数据转换为 Spacy 格式,即:
我还是 Python 库的新手,知道如何转换火车数据吗?或者任何想法使用哪个库?
谢谢你。
nlp - Spacy 在简单的 .spans 分配中返回“AttributeError:'spacy.tokens.doc.Doc'对象没有属性'spans'”。为什么?
我只是想按照Spacy 的文档将文档的子部分标记为跨度
这看起来很简单,但是 Spacy 返回以下错误(并将其归因于第二行,即赋值):
我根本看不到发生了什么。这是 Spacy 的错误吗?spans
即使它仍在文档中,它是否已被删除?如果不是,我错过了什么?
PD:我正在为此使用 Colab。并spacy.info
显示:
python-3.x - Spacy 3.0 训练自定义 NER --> 验证此自定义 NER 模型
我训练了一个自定义 SpaCy 命名实体识别模型来检测职位描述中的偏见词。现在我训练了 8 个变体(使用不同的基础模型、训练模型和管道设置),我想评估哪个模型表现最好。
但是.. 我找不到任何关于验证这些模型的文档。在输出文件夹中的 meta.json 文件中有一些召回率、f1 分数和精度,但这还不够。
任何人都知道如何验证或可以将我链接到正确的文档?文档似乎无处可寻。
注意:谈论 SpaCy V3.x