训练spaCy的NER的正确注释

问题描述 投票:0回答:3

我在寻找正确的方法来注释我的数据时遇到了一些麻烦。我正在处理与实验室测试相关的文本,并且使用以下标签:

1) 测试规格(例如电压、长度...)

2)测试对象(例如电池,偷梁,...)

3) 测试值(例如5V;5m...)

让我们看一下这个例句:

电池电压应为5V。

我会这样注释这些句子:

The
battery voltage (test specification)
should
be
5 V (Test value)
.

但是,如果这句话看起来像这样:

电池电压应为5V。

我会使用以下注释:

The
voltage (Test specification)
of
the
battery (Test object)
should
be
5 V (Test value)
.

是否有人在注释数据方面有经验来解释这是否是正确的方法?或者我应该在第一个示例中使用“电池”的测试对象标签?或者我应该结合第二个示例中的标签电池电压作为测试规范? 我正在注释数据以执行信息提取。

感谢您的帮助!

spacy named-entity-recognition information-extraction
3个回答
0
投票

The voltage U-SPEC of the battery U-OBJ should be 5 B-VALUE V L-VALUE .

假装这是 TSV,我省略了 O 标签,它用于“其他”项目。

您可以在

spaCy 文档

中找到这些模式的文档。 如果您已经拥有所提供格式的数据,或者您发现这样做更容易,那么至少应该很容易转换。对于训练 NER spaCy 要求以特定格式提供数据,请参阅

文档

了解详细信息,但基本上您需要输入文本、字符范围以及这些范围的标签。这是示例数据: TRAIN_DATA = [ ("Who is Shaka Khan?", {"entities": [(7, 17, "PERSON")]}), ("I like London and Berlin.", {"entities": [(7, 13, "LOC"), (18, 24, "LOC")]}), ]

这种格式比上述 TSV 类型格式更难以手动生成,因此通常您会生成类似 TSV 的格式(可能使用工具),然后进行转换。


0
投票
battery

voltage
视为
test object
test specification
制定了一些规则。
始终如一地应用这些规则,你就会没事的。

看看

spacy-annotator

它是一个可以帮助您按照您想要的方式注释数据的库。 示例:

import pandas as pd import re from spacy_annotator.pandas_annotations import annotate as pd_annotate # Data df = pd.DataFrame.from_dict({'full_text' : [The battery voltage should be 5 V., 'The voltage of the battery should be 5 V.']}) # Annotations pd_dd = pd_annotate(df, col_text = 'full_text', # Column in pandas dataframe containing text to be labelled labels = ['test_specification', 'test object', 'test_value'], # List of labels sample_size=1, # Size of the sample to be labelled delimiter=',', # Delimiter to separate entities in GUI model = None, # spaCy model for noisy pre-labelling regex_flags=re.IGNORECASE # One (or more) regex flags to be applied when searching for entities in text ) # Example output pd_dd['annotations'][0]

代码将向您显示一个用户界面,您可以使用它来注释每个相关实体。


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.