我有1000个文本文件,其中包含患者的出院摘要
SAMPLE_1
患者于1999年2月21日入院。他当时似乎患有肺炎 因为我们凭经验证实了他患有社区获得性肺炎 头孢曲松和阿奇霉素直到第2天血液培养物生长 鉴于泛敏感的链球菌肺炎,所以我们停止了 头孢曲松和完成5天的阿奇霉素疗程。但是在第4天 他发生了腹泻,所以我们添加了flagyl来覆盖c.diff,其中 确实在第6天回来了,所以他还需要3天......“这个 可以简明扼要地总结如下:“完成5天课程 阿奇霉素治疗泛敏感性链球菌肺炎 并发c.diff结肠炎。目前在7月10日的flagyl和 c.diff于9月21日否定。
SAMPLE_2
患者是一名56岁的女性,有中风病史;高血压; COPD,稳定;肾癌;提出后 跌倒和可能的晕厥。走路时,她不小心摔倒了 她的膝盖在左眼附近撞到了她的头。她的 没有观察到摔倒,但患者并未表示有任何损失 意识,回忆整个事件。病人确实有 先前跌倒的病史,其中一例导致髋部骨折。 她已接受过物理治疗并完全康复。 初步检查显示左眼周围有瘀伤,肺部正常 检查,正常心脏检查,正常神经功能 基线降低了左臂的活动能力。病人是 承认评估她的跌倒并排除晕厥和 她的积极历史可能会中风。
我还有一个csv文件,它是1000rows X 5columns。每行都有为每个文本文件手动输入的信息。 因此,例如对于上述两个文件,有人在csv文件中手动输入了这些记录:
Sex, Primary Disease,Age, Date of admission,Other complications
M,Pneumonia, NA, 21/02/99, Diarhhea
F,(Hypertension,stroke), 56, NA, NA
我的问题是:
我如何表示使用文本信息:机器学习算法的标签
我是否需要围绕所有1000个文本文件中感兴趣的区域进行一些手动标记?
如果是,那么如何以及使用哪种方法。 (比如<ADMISSION> was admitted on 21/02/99</ADMISSION>
,
<AGE>56-year-old</AGE>
)
所以基本上我如何使用这个文本:标记数据以自动填充标签。
答案 0 :(得分:2)
据我所知,不是标记文本,而是提取注释所代表的信息。这是一个信息提取问题,您应该阅读相关技术。 CSV文件包含您要提取的信息(您的&#34;黄金标准&#34;,因此您应该首先将其分为培训(90%)和测试(10%)子集。
在那里有一个命名的实体识别任务:识别疾病,数字,日期和性别。您可以使用现成的chunker,或找到带注释的医疗语料库并使用它来训练一个。您也可以使用各种方法;例如,发现揭示性别的词是你可以很容易地手工编码的东西。一旦掌握了所有这些词,就需要做更多的工作,例如,将原发疾病与症状区分开来;其他数字的年龄,以及任何其他日期的入学日期。这可能最好作为单独的分类任务完成。
我建议您现在逐章阅读nltk book,以便了解可用的技术和工具。重要的是这种方法,所以不要在特定机器学习引擎的比较中陷入困境。
答案 1 :(得分:1)
我担心填补空白的算法尚未发明。如果差距强烈相关或存在某种因果关系,您可以使用某种贝叶斯模型对其进行建模。仍然有你拥有的数据量,这几乎是不可能的。
现在处于更实际的一面。您可以采取两种方法:
现在关于这些问题,你将面对。在1.
中,您不太可能使用任何算法预测记录的日期。有可能大致预测患者年龄,因为这通常与疾病等有关。而且你甚至不可能将疾病专栏设置为实体提取任务。
如果我必须解决你的问题,我可能会选择方法2.
,这是正确的方法,但也可能是相当多的工作。在这种情况下,您需要自己创建标记注释。一个很好的起点是一个名为brat的注释工具。获得注释后,您可以开发CoNLL-2003样式的分类器。
你想要达到的目标看起来相当多,尤其是1000条记录。我认为(取决于您的数据)您可能最好使用现成的产品而不是自己构建它们。有一些开源和商业产品可以使用 - lexigram.io有一个API,MetaMap和Apache cTAKES是用于临床实体提取的最先进的开源工具