我正致力于从医学文本中提取信息(非常新的NLP!)。目前,我有兴趣找到并提取预定义药物清单中提到的药物。例如,考虑文本:
"约翰因高温而被处方服用阿司匹林"
因此,给定药物清单(用Python语言):
list_of_meds = ['aspirin', 'ibuprofen', 'paracetamol']
提取的药物是aspirin
。没关系。
现在考虑另一种情况:
"约翰服用了布洛芬,因为他无法忍受扑热息痛"
现在,如果我使用列表提取药物(例如使用正则表达式),则提取的药物为ibuprofen
和paracetamol
。
问题如何分开实际处方和未经处方的药物?有没有办法标记处方(使用过的)和其他提到的药物?
答案 0 :(得分: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
作为输出,您可以从那里使用该变量。
答案 1 :(得分:2)
这是一个复杂的问题。要捕捉否定的细微差别,您需要进入依赖性解析和关系提取的世界。您可以采取一些路径来增加当前方法的复杂性以及@Jordan的附加组件:
处理关系中的否定并不是一个解决的问题。围绕这一点的现有技术通常与情绪分析相关。此Stanford NLP Sentiment Analysis using RNN page
提供了使用依赖关系解析来识别和处理否定的简介