我正在从事从医学文本中提取信息的工作(NLP非常新!)。目前,我感兴趣的是找到和提取药物,这是在一个预先确定的药物清单。例如,考虑案文:
约翰因高温被开了阿司匹林的处方
因此,给出了药物清单(用Python语言):
list_of_meds = ['aspirin', 'ibuprofen', 'paracetamol']提取的药物为aspirin。这很好。
现在再考虑另一种情况:
约翰给布洛芬开了处方,因为他不能忍受扑热息痛
现在,如果我使用列表(例如,带有正则表达式)提取药物,那么提取的药物是ibuprofen和paracetamol。
问题如何区分实际的处方药和不可耐受的药物?有没有办法给处方(用)和其他提到的药物贴上标签?
发布于 2018-03-01 02:31:01
这是一个复杂的问题。要捕获否定周围的细微差别,您需要进入依赖解析和关系提取的世界。在当前的方法和add @Jordan中,您可以采取以下几种方式来增加复杂性:
处理关系中的否定不是一个解决的问题。这方面的最新进展通常与情感分析有关。关于使用依赖解析来识别和处理否定的介绍可以在这个基于RNN页面的斯坦福NLP情感分析上使用。
发布于 2018-02-28 22:44:16
克服这一问题的一种方法是预先定义药物名称之前的单词。因此,在你的情况下,这将意味着检查,看看是否“处方”或“不容忍”之前的药物名称。
这就是我想出来的。如果要尝试第二段文本,只需将变量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作为输出,您可以从那里使用该变量。
https://stackoverflow.com/questions/49039586
复制相似问题