【问题标题】:Find negation of particular keywords in text在文本中查找特定关键字的否定
【发布时间】:2018-02-28 22:20:27
【问题描述】:

我正在研究从医学文本中提取信息(对 NLP 来说非常新!)。目前,我有兴趣查找并提取预定义药物列表中提到的药物。例如,考虑以下文本:

“约翰因高温服用了阿司匹林”

因此,给定药物列表(Python 语言):

list_of_meds = ['aspirin', 'ibuprofen', 'paracetamol']

提取的药物是aspirin。没关系。

现在考虑另一种情况:

“给约翰开了布洛芬,因为他不能耐受扑热息痛”

现在,如果我使用列表(例如使用正则表达式)提取药物,那么提取的药物是ibuprofenparacetamol

QUESTION如何区分实际处方药和不耐受药物?有没有办法标记处方(使用)和其他提到的药物?

【问题讨论】:

    标签: python nlp regex-negation data-extraction


    【解决方案1】:

    这是一个复杂的问题。要捕捉否定的细微差别,您需要进入依赖解析关系提取的世界。您可以采取以下几种方式来为您当前的方法和@Jordan 的附加组件添加复杂性:

    1. 使用关系提取 NLP 库(例如 Watson、Core-NLP、Spacy),您使用示例句子进行训练,以提取三元组关系,例如(John,规定,布洛芬)和(John,不容忍,扑热息痛) )。这将需要对样本数据进行注释。
    2. 滚动您自己的关系提取器,从显示句子不同部分如何相关的依赖分析开始。这既需要编程时间,也需要培训。

    处理关系中的否定不是一个已解决的问题。围绕这一点的最新技术通常与情绪分析相关联。 Stanford NLP Sentiment Analysis using RNN page

    提供了有关使用依赖解析来识别和处理否定的介绍

    【讨论】:

      【解决方案2】:

      解决这个问题的一种方法是预先定义药物名称之前的单词。因此,在您的情况下,这意味着检查药物名称之前是“处方”还是“不耐受”。

      这是我想出的。如果您想尝试第二段文本,只需将变量 text = first 替换为 text = second

      import string
      
      list_of_meds = ['aspirin', 'ibuprofen', 'paracetamol']
      first = "John was prescribed aspirin due to high temperature"
      second = "John was prescribed ibuprofen, because he could not tolerate 
      paracetamol"
      
      text = first
      
      for c in string.punctuation:                                                                                                     
          text = text.replace(c, "")
      text = text.split(' ')
      for i in text:
          if i in list_of_meds:
              index = text.index(i) - 1
              if text[index] == "prescribed":
                  medicine = i
                  break
      

      祝你好运!

      约旦。

      ----- 编辑-----

      使用变量medicine 作为输出,您可以从那里使用该变量。

      【讨论】:

      • 很好,谢谢!然而,问题在于“规定”或“不允许”这个词可以用许多不同的方式来书写。这些确实是医疗记录,医生可能会以多种方式写/提到耐受性或处方,因此建立另一个前体词列表可能是一个真正的挑战。我想知道,是否有办法从文本中了解处方的含义以及所有其他提到的药物。
      • 另一种方法是创建同义词列表,并将"prescribed" 替换为列表。绕过句子格式的一种方法是在代码中提供模板,这将是非常硬编码的,或者您可以计算单词与药物名称的距离。但如果真的成为问题,您可能需要考虑为医生创建默认的医疗记录格式。
      猜你喜欢
      • 2011-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-30
      • 2013-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多