我在寻找正确的方法来注释我的数据时遇到了一些麻烦。我正在处理与实验室测试相关的文本,并且使用以下标签:
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)
.
是否有人在注释数据方面有经验来解释这是否是正确的方法?或者我应该在第一个示例中使用“电池”的测试对象标签?或者我应该结合第二个示例中的标签电池电压作为测试规范? 我正在注释数据以执行信息提取。
感谢您的帮助!
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 的格式(可能使用工具),然后进行转换。
battery
voltage
视为 test object
或 test specification
制定了一些规则。始终如一地应用这些规则,你就会没事的。
。
它是一个可以帮助您按照您想要的方式注释数据的库。
示例:
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]
代码将向您显示一个用户界面,您可以使用它来注释每个相关实体。