问题标签 [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.

0 投票
1 回答
39 浏览

spacy - Spacy:对 1000 个标签进行分类的数据集格式是什么?

我想用spacy对文本进行分类我基于spacy的texcat_demo项目,基于它,json应该是这样的

但是应该如何看待这个 json 到多个类别呢?,像这样

谢谢

0 投票
1 回答
242 浏览

python - 更新 Spacy 的内置 NER 模型而不是覆盖

我正在使用 Spacy 的内置模型,en_core_web_lg并且希望使用我的自定义实体对其进行训练。在这样做的同时,我面临两个问题,

  1. 它用旧的数据覆盖新的训练数据,导致无法识别其他实体。例如,在训练之前,它可以识别 PERSON 和 ORG,但在训练之后它不能识别 PERSON 和 ORG。

  2. 在训练过程中,它给了我以下错误,

这是我的整个代码,

预期输出:

目前没有识别实体..

请让我知道我在哪里做错了。谢谢!

0 投票
0 回答
1087 浏览

python - 如何在 spaCy v3 中正确使用变压器模型进行自定义 NER?

我正在尝试使用 spaCy 版本 3 为自定义标签训练命名实体识别 (NER) 模型。我浏览了他们网站上的所有文档,但我不明白创建管道模型的正确方法是什么。显然,如果我尝试使用en_core_web_trf,我无法添加自己的标签,因为最终的输出分数都是零。但它适用于en_core_web_sm.

但是,如果我尝试通过创建一个空白的英语模型然后手动添加变压器模型en_core_web_trf和 ner 模型来做一些临时方法en_core_web_sm,它可以工作。

我的问题是 - 除了这个临时方法之外,还有更好的方法来初始化我的模型和管道方法吗?我不关心 LOCATION 等预训练实体。我只想根据我在数据集中定义的自定义实体来训练我的模型(使用基于转换器的方法)。

编辑:我使用的确切训练方法已在python 脚本中fit()定义类的函数中进行了描述NerModel

脚本中的(第load_spacy()16 行)使用小模型,但我正在试验变压器模型并使用load_spacy()我在本问题开头定义的定义。

PS:我一直在 Google Colab(又名笔记本)上进行实验,以便将 GPU 用于 Transformer,但源代码和方法几乎相同。

0 投票
0 回答
29 浏览

dataset - 如何在 colab 中加载巨大的数据集以转换为 spacy JSON?

我有一个包含 6500 万个 IOB 格式条目的数据集。因此,在使用以下命令将其转换为 spacy 二进制格式时:

!python -m spacy convert /content/train.tsv /content/ -s -c ner

colab 将显示: tcmalloc: large alloc ..... ^C

你能给我一些规避​​这个问题的方法吗?我没有太多的 colab 经验或对数据科学概念的深入了解。任何参考也可以。

是否可以获取每个文件,然后制作其二进制文件并合并这样的文件?

谢谢!

0 投票
0 回答
35 浏览

performance - SpaCy NER 模型的实体级别的 PRF 值

我有一个关于借助函数评估 SpaCy NER 模型的问题scorer:性能结果是实体级还是令牌级?

如果是后者,我将不胜感激提供一些关于如何在实体级别找到 prf 值的提示。

此外,如果上下文有帮助,这是我实现评估功能的方式: https ://github.com//discussions/8178 。

提前致谢!

0 投票
1 回答
76 浏览

spacy - 从匹配器中排除结果

我正在尝试指定一种可以排除某些结果的模式。鉴于此文本:The Territory for the Titles shall be the United States, its territories and possessions, excluding Puerto Rico 我正在寻找一种仅提取 的方法the United States,就像 a 一样GPE,并且不被排除在外。

我试着写一个这样的模式,在我看来,应该意味着“只有当除了引理后面跟着一个或多个s[{'LEMMA': 'exclude', 'OP': '!'}, {'ENT_TYPE': 'GPE', 'OP': '+'}]之外还有其他东西时才匹配。excludeGPE

但是在我对 spacy 3 的测试中(以及基于规则的 Matcher Explorer),匹配器仍然匹配be the United Statesand Puerto Rico

有没有办法编写一个专门过滤掉excludedGPE的模式?

0 投票
2 回答
427 浏览

machine-learning - 使用 spacy v3 我应该在配置文件中更改哪个参数来解决 CUDA 内存不足问题?batch_size vs max_length vs batcher.size

使用 spacy v3,我尝试使用 camemBert 训练分类器并遇到CUDA out of memory问题。为了解决这个问题,我读到我应该减少批量大小,但我很困惑我应该改变哪个参数:

  • [nlp] 批处理大小
  • [components.transformer] max_batch_items
  • [corpora.train 或 dev] max_length
  • [trainning.batcher] 大小
  • [trainning.batcher] 缓冲区

我试图了解每个参数之间的区别:

  1. [nlp] 批处理大小

管道和评估的默认批量大小。默认为 1000。

培训/评估过程中是否使用了这些功能?
在快速启动小部件 ( https://spacy.io/usage/training#quickstart ) 中,为什么值根据硬件不同?CPU 为 1000,GPU 为 128。
在训练过程中,如果这个值低,评估会变慢吗?

  1. [components.transformer] max_batch_items

填充批次的最大大小。默认为 4096。

根据警告消息:Token indices sequence length is longer than the specified maximum sequence length for this model (556 > 512). Running this sequence through the model will result in indexing errors此处解释(https://github.com/explosion/spaCy/issues/6939),卡门培尔模型的指定最大序列长度为512。

参数 max_batch_item 是否重载到该值?我应该将值更改为 512 吗?

  1. [corpora.train 或 dev] max_length

在我的理解中,这个值应该等于或小于最大序列长度。在快速入门小部件中,此值设置为 500 用于训练集和 0 用于开发集。如果设置为0,是否会过载到transformer模型的最大序列长度?

  1. spacy.batch_by_padded.v1 的 [trainning.batcher] 大小

将序列批处理到的最大填充大小。也可以是引用时间表的块,例如复利。

如果我不使用复利,这个参数与 max_lentgh 有什么不同?

这是我的配置文件的一些部分

0 投票
2 回答
599 浏览

python - 如何评估训练有素的 spaCy 版本 3 模型?

我想使用以下代码使用内置 Scorer 函数评估我训练有素的 spaCy 模型:

当我运行该函数时,我收到以下错误消息:

TypeError: [E978] Tokenizer.score 方法采用示例对象列表,但得到:<class 'spacy.training.example.Example'>

我已经尝试输入像 {"entities": annot} 和其他一些版本的注释。我查了谷歌,但每篇文章似乎都与 spaCy 的 2.xx 版有关。

我究竟做错了什么?如何使用 spacy Score() 计算召回率、准确率和 F1 分数?

0 投票
1 回答
382 浏览

python - spaCy 配置文件中参数的解释/解释

config.cfg关于我们在文件中定义的参数,我有几个问题。尽管 spaCy 的文档确实试图解释它们,但我觉得解释的描述性不够,而且很多东西都散布在文档周围,很难找到你需要的东西,尤其是 spaCy v3,(除非我'我查看了网站的错误部分)这是最近的,因此论坛中的问题/答案确实更少。我基本上是在构建一个命名实体识别 (NER) 模型以及一个转换器组件。我的问题如下:

  1. 在下面的部分(同样的问题),和corpora.train有什么区别?max_lengthlimit

    对于max_length文档说“对训练文档长度的限制”
    对于limit,文档说“对训练示例数量的限制”

    他们不是或多或少相同的东西吗?我的意思是我可以通过限制文档本身的长度来限制训练示例的数量,对吗?

  1. 在下面的代码段中,一个“步骤”的含义是什么?我理解max_steps=0意味着无限的步骤。但是我怎么知道有多少这样的“步骤”构成一个纪元?1个这样的步骤还涵盖了多少例句?
  1. learn_rate在训练过程中,下面的代码片段究竟是如何修改的?total_steps更具体地说,是什么warmup_steps意思?
  1. 最后,在训练过程的 CLI 输出中,这个“#”到底是什么?在GitHub 讨论之一中提到“# 列是优化步骤的数量(= 处理的批次)”,但是这 1 个批次或“优化步骤”到底是什么?如果训练过程向我显示了 200 个这样的“批次”之后的分数,我该如何解释它(比如到那时已经处理了多少个例句)?
0 投票
1 回答
241 浏览

python - 让相似的词不再在 spacy 中工作

不久前,我有一个 Google Colab 笔记本,它使用 spacy 2.2.4 并成功获取了单词列表中最相似的单词:

输出是:

问题:我刚刚尝试在 RStudio 的不同环境中运行相同的代码(即不使用 Google Colab),其中 spacy 的版本是 3.0.6 并且相似词列表(new_search_terms)是的。我还注意到单词概率都是相同的 (-20)

spacy 3.0.6 的输出:

在这个新版本的 spacy 中,我需要做些什么不同的事情才能获得与以前相同的输出?