首先声明我不是程序员,我顶多算一个硬件工程师,或者中医师。所以我写的这个程序肯定不是最优的,优化优化我觉得100行不到都可以实现。
希望大家共同来参与改进,我准备按这个思路写一系列的中医诊断,比如原来搞丢的小儿感冒,还有高血压,糖尿病,肝炎,睡眠不好等等。也希望更多的朋友一起参与建设。
我儿子问我,老爸,计算机AI可以干什么?
我说计算机人工智能可以干很多事情啊,比如给人看病啊,等等。我在几年前委托一位程序员帮忙做了一个小儿感冒诊断系统。帮助了不少妈妈。
后来程序员把这程序搞丢了,这项目没再继续。被我儿子笑话了好久,这也行。
然后他问我,计算机AI最适合的语言是什么?我说是Python(他学过C++,C#)。
他说Python难吗?我说不难,去年我花功夫学了一小段时间,当时想做一个计算机自学伤寒的程序来着。
他问那做出来了没有?我告诉他没有,思路都有了,程序也写了一点,输入输出太麻烦了,放弃了。
输出个网页有什么难的?很难啊,又要框架,又要前端后端,这个花了很多功夫都搞不定,直接放弃了。又被他笑话了一通。
中午我就想,我能不能写个程序?从中医的角度去诊断,去辩证论治。也算是贡献点自己的力量。而且也为孩子做个榜样,不要被他小看了。
然后开干,一开始碰到的还是输入输出的问题,后来找到了streamlit。这问题一下子就解决了。所以嘛,有痛点就有人去开发相应的技术。
结果我就用了两个晚上,将中医AI做出来了。实际上大部分时间都用于安装环境上了,特别是远程服务器的安装。真正写程序的时间也就几小时了。
这是按照症状,低烧,干咳,鼻塞,无力,咽痛,腹泻进行输入,计算机自动诊断和开方如上。这个方子中规中矩,和临床医生的思路也类似,当然输入条件更精准,开出来的方也会更精准。是不是很棒?(为自己赞一个)
和大家讲讲设计思路,我们可能认为AI很难做。为什么难?实际上是因为程序员不懂中医,懂中医的不懂编程。
所以做出来东西要么就不实用,要么就根本不符合中医,没法用。有很多所谓的中医产品,其实是个不中不西的“怪物”。
而我刚好两个都懂一点,中医我懂一点,编程也懂一点。所以我就尝试做一个吧。再次声明我不是程序员,我也对开发程序没有太多兴趣。
中医AI的难点在于患者的症状各种各样,诊断描述比较含糊,用药也是各种各样。有些程序员就认为输入条件很多,输出条件很多,这东西就很难做,甚至没法做。
而中医师很难用精确的语言去描述中医诊断和开方用药。所以你会看到同一个患者,不同的医生开的药方是不一样的,虽然可能都有效。
这就是多个模糊输入对应着多个模糊输出,这增加了中医AI的难度。同时这也是中医被人诟病的原因之一。
正是这种差异性造成了程序开发的难度。换句话来说,程序员没有中医思维,中医师没有程序思维。
我这人的特点是非常擅长化繁为简,我的思路其实非常简单。现在主要是上呼吸道感染。上呼吸道感染有哪些症状呢?我将症状列表列了出来。
那从中医的角度上去,怎么诊断开方用药呢?《伤寒论》是张仲景论述外感对人体影响的中医学专著。其实也是论述传染病进入人体之后的人体经络反应。
我将中医称的外感,西医称的病毒感染,或者呼吸道感染。所能引起人体经络的变化,按《伤寒论》的区分法,分为伤寒太阳证用a表示,伤寒少阳证用b表示,伤寒阳明证用c表示。
将所有的症状输入简化为三条输出,一下子是不是变得很简单了。但实际上单单这三个诊断是不足够的,我将之称为三个主证。
然后再从身体的湿气d,身体的头e,肺f,胸g,上腹h,下腹i,膀胱j等部位分别辅助诊断。
然后我给每一个输入症状分配个权重0.1-0.9的权重。比如高烧,太阳证的权重就是0.8,阳明证的权重0.6。又比如低烧,太阳证的权重是0.7,少阳证是0.8。
这样子很容易就将不同症状导出到三个主证上。再辅助身体的湿,以及身体不同部位的诊断,就很容易开出药方。
其实作为中医师也是这么思维的,先抓主证,看以什么证,什么方为主。然后再细化到各个部位,再加减一些药。
花了两个晚上做出来个很粗燥的模型,开个头,抛砖引玉,希望更多的朋友能深入研究。
严格意义上来说,这不是计算机学习后掌握的技能,这是中医师的经验总结,用计算机来实现,这效果我认为是可以的,至少我是满意的。
其实还可以让计算机学习《伤寒论》,我不知道学习效果如何,这是去年我想做的,也许我们可以一起来试试。
工作环境Python3.7,streamlit。一个主文件,总共320行简单代码。
谢谢大家!