intelligent diagnosis的难点
2013-05-18 14:24 Loull 阅读(289) 评论(0) 编辑 收藏 举报需求:
一个人描述自己的症状,根据这段话给出他可能得的的疾病。
思路:
把语音转化为文字,分词提取出关于症状的描述。
1、字符匹配:
找一个疾病数据库(有症状的描述),用lucene建立索引,把描述的症状和疾病库的症状字段匹配。
2、关联匹配:
找一个药物表,如果药物表的描述中既出现了某个疾病,也出现了某个症状,则把这个疾病和症状关联上。
3、结果排序:
要根据关联度排序,lucene内部使用tf*idf的变形进行排序。
光这样是不够的。疾病的发病率是不同的,所以要根据先验知识来排序。
posterior = prior * likelihood
这儿likelihood用lucene的匹配来模拟,而prior没法获得。
难点:
1、结果排序:
prior现在知识没法获取,即得不到发病率。光想从文本中直接得到靠谱的排序是不现实的。
解决方案:
用其他数据去模拟prior,比如有些网站上提供病的关注度、收藏数、是否常见等信息。
2、同义词描述问题
疾病数据库的描述是很正式的,而人的描述是很口语化的,这需要一个关联过程。
解决方案:
建立一个同义词库
1)可以找到一些疾病相关的同义词库
2)统计疾病库中的词频,找出频率高的疾病相关的词,人工添加同义词
3、身体部位问题
比如“手疼”,“眼睛痒”,结果应该是跟“手”、“眼睛”部位十分相关的,而lucene搜索的结果不能保证。
另一个问题,比如“头痛”,疾病不一定是在头部的,可能是身体上的。
解决方案:
构建一个人体的本体库,比如一个(人--头--脸--眼睛)的继承关系,部位越近的疾病越有可能。
细节:
浏览数据库,看看每个部位大概与哪些东西关联,比如
胸部:肺、(气管)、心、(胰腺)、乳
还要添加上语义上相关的,比如
头:脑、中风,精神、失眠
注意:
个人觉得,也不需要太精细,因为如果描述症状的时候已经很具体到某个部位,搜索出来的时候已经比较准确。
4、流行病问题
整个系统主要呈现为静态,很难根据疾病的发生情况而改变。流行病在一段时间内可能发病率很高,之后可能几乎没了。
应用本身难以感知到最近的流行病,特别是用的人少的时候。
解决方案:
很难解决,不予实现,采用另外的方式实现,比如采用推送技术,把盛行的流行病放到应用的首页。
5、季节病,家族病等个体特征疾病,病史,患一次的疾病,并发症疾病,病与病之间的关联
季节病,在排序的时候可以根据季节赋予不同权重,很难获取这些先验信息。
家族病,有很强的相关性,用户很少会在已知家族病的情况下去搜索这个病。
病史,得过的病很可能会再得,很难获取信息,也不容易标识用户。
患一次的病,有些病一生只会犯一次,非常少会再患,这个信息很难提取。
病与病之间的关联,如果有了这些信息,可以用贝叶斯网
6、先验信息提取
很多信息要提取,比如模拟先验发病率的信息,同义词库,本体库,流行病信息,病之间的关联,这些信息很多要从文本中提取或人工做。
解决方案:
NLP,表示很难
=================================
ER7