【问题标题】:How to extract BILUO tags using spaCy for conflicting entities?如何使用 spaCy 为冲突实体提取 BILUO 标签?
【发布时间】:2022-06-26 11:58:54
【问题描述】:

我正在处理Kaggle dataset 并尝试使用 spacy 提取 BILUO 实体

\'training.offsets_to_biluo_tags\'

功能。原始数据为 CSV 格式,我已设法将其转换为以下 JSON 格式:

{
  \"entities\": [
    {
      \"feature_text\": \"Lack-of-other-thyroid-symptoms\",
      \"location\": \"[\'564 566;588 600\', \'564 566;602 609\', \'564 566;632 633\', \'564 566;634 635\']\"
    },
    {
      \"feature_text\": \"anxious-OR-nervous\",
      \"location\": \"[\'13 24\', \'454 465\']\"
    },
    {
      \"feature_text\": \"Lack of Sleep\",
      \"location\": \"[\'289 314\']\"
    },
    {
      \"feature_text\": \"Insomnia\",
      \"location\": \"[\'289 314\']\"
    },
    {
      \"feature_text\": \"Female\",
      \"location\": \"[\'6 7\']\"
    },
    {
      \"feature_text\": \"45-year\",
      \"location\": \"[\'0 5\']\"
    }
  ],
  \"pn_history\": \"45 yo F. CC: nervousness x 3 weeks. Increased stress at work. Change in role from researcher to lecturer. Also many responsibilities at home, caring for elderly mother and in-laws, and 17 and 19 yo sons. Noticed decreased appetite, but forces herself to eat 3 meals a day. Associated with difficulty falling asleep (duration 30 to 60 min), but attaining full 7 hours with no interruptions, no early morning awakenings. Also decreased libido for 2 weeks. Nervousness worsened on Sunday and Monday when preparing for lectures for the week. \\r\\nROS: no recent illness, no headache, dizziness, palpitations, tremors, chest pain, SOB, n/v/d/c, pain\\r\\nPMH: none, no pasMeds: none, Past hosp/surgeries: 2 vaginal births no complications, FHx: no pysch hx, father passed from acute MI at age 65 yo, no thyroid disease\\r\\nLMP: 1 week ago \\r\\nSHx: English literature professor, no smoking, occasional EtOH, no ilicit drug use, sexually active.\"
}

在 JSON 中,实体部分包含特征文本及其在文本中的位置,而 pn_history 部分包含整个文本文档。

我遇到的第一个问题是数据集包含单个文本部分标记有多个唯一实体的实例。例如,位于位置 [289 314] 的文本属于两个不同的实体 \'Insomnia\' 和 \'Lack of Sleep\'。在处理这种类型的实例时,Spacy 会遇到:

ValueError [E103] 在创建时尝试设置冲突的 doc.ents 自定义NER

我在数据集中遇到的第二个问题是,在某些情况下,清楚地提到了起始位置和结束位置,例如 [13 24],但在某些情况下, 指数分散。例如对于包含半列的 \'564 566;588 600\',它预计会从位置 564 566 中选择第一组单词,从位置 588 600 中选择第二组单词。这些类型的索引我无法传递给 Spacy 函数。 请告知我该如何解决这些问题。

    标签: python named-entity-recognition spacy-3


    【解决方案1】:

    好的,听起来您有两个不同的问题。

    重叠的实体。您需要决定如何处理这些数据并过滤您的数据,spaCy 不会自动为您处理这些。由您决定什么是“正确的”。通常你会想要最长的实体。您还可以使用最近发布的spancat,它类似于 NER,但可以处理重叠注释。

    不连续的实体。这些是; 的注释。这些更难,spaCy 目前无法处理它们(根据我的经验,很少有系统处理不连续的实体)。这是您的示例中的示例注释:

    [no] headache, dizziness, [palpitations]
    

    有时对于不连续的实体,您可以只包括中间部分,但这在这里不起作用。我认为没有任何好的方法可以将其转换为 spaCy,因为您的输入标签是“缺乏甲状腺症状”。通常我会将其建模为“甲状腺症状”并单独处理否定;在这种情况下,这意味着您可以只标记palpitations

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多