在tex中查找特定关键字的否定

2024-09-27 01:29:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究从医学文本中提取信息(对NLP来说非常陌生!)。目前,我有兴趣找到和提取的药物,其中提到了预先确定的药物清单。例如,考虑文本:

"John was prescribed aspirin due to hight temperature"

因此,考虑到药物列表(Python语言):

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

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

现在考虑另一个例子:

"John was prescribed ibuprofen, because he could not tolerate paracetamol"

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

问题如何区分实际处方药和非耐受药?有没有办法给处方药(用过的)和其他提到的药物贴上标签?在


Tags: 文本信息列表nlpjohn医学兴趣药物
2条回答

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

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

处理关系中的否定并不是一个解决的问题。这方面的技术水平通常与情绪分析有关。关于使用依赖解析来识别和处理否定的介绍在Stanford NLP Sentiment Analysis using RNN page

克服这个问题的一个方法是在药品名称之前预先定义什么词。所以在你的例子中,这意味着要检查“处方药”或“不能忍受”在药物名称之前。在

这就是我想出来的。如果您想尝试第二段文本,只需将变量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作为输出,您可以从那里使用该变量。在

相关问题 更多 >

    热门问题