如何从表中提取上下文数据来训练自定义命名实体识别器?

Posted

技术标签:

【中文标题】如何从表中提取上下文数据来训练自定义命名实体识别器?【英文标题】:how to extract contextual data from tables to train custom named entity recognizer? 【发布时间】:2019-11-18 18:41:07 【问题描述】:

我有包含表格的文档,我想提取上下文信息(例如句子或任何其他形式),以便我可以标记它们并构建命名实体识别器。

有谁知道我们如何构建上下文训练数据来训练命名实体识别器,或者我们如何注释表格数据来训练命名实体识别器。

【问题讨论】:

【参考方案1】:

您可以尝试使用 Spacy 构建客户 NER。该脚本可以根据您的需要进行调整。

Spacy NER 格式:[https://dataturks.com/help/dataturks-ner-json-to-spacy-train.php]

如果您有一个非常固定的 PDF 布局,您可以将它们转换为文本并使用此工具进行注释。这免费提供了类似于 Prodigy 的注释体验。

Doccano 注释工具:[https://github.com/chakki-works/doccano]

【讨论】:

【参考方案2】:

spacy-annotator 可以很好地解决您的问题。

它允许您使用 ipywidgets 在文本中注释自定义实体。 此外,注释器以 nlp 库 spaCy 喜欢的格式生成输出。

注解示例:

import pandas as pd
import re
from spacy_annotator.pandas_annotations import annotate as pd_annotate

# Data
df = pd.DataFrame.from_dict('full_text' : ['New York is lovely but Milan is amazing!'])

# Annotations
pd_dd = pd_annotate(df,
            col_text = 'full_text',     # Column in pandas dataframe containing text to be labelled
            labels = ['GPE', 'PERSON'], # 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]

【讨论】:

以上是关于如何从表中提取上下文数据来训练自定义命名实体识别器?的主要内容,如果未能解决你的问题,请参考以下文章

Spacy 从训练模型中提取命名实体关系

CRF进行中文命名实体识别(使用sklearn_crfsuite进行实现)

知识图谱命名实体识别(NLP)

用CRF做命名实体识别

Elasticsearch:如何部署 NLP:命名实体识别 (NER) 示例

自然语言处理基于sklearn-crfsuite进行命名实体识别