项目目标
根据中医药数据集构建知识图谱,并进行可视化。实现基于知识的处方推荐并构建中医药自动问答系统。
工作进度
阅读了一篇比较不错的相关论文《A Topic Modeling Approach for Traditional
Chinese Medicine Prescriptions》,准备利用论文中提出的主题模型对中医药处方的生成模式建模,并实现两种推荐:1.给定症状,推荐一组中草药。2.给定中草药,推荐与之相关的症状。
目前利用中草药预测相关症状部分已经基本完成
/**
* PTM症状预测precision@K
*
* @param test_herbs
* 测试集的单味药
* @param herb_topic
* 单味药主题
* @param symptom_topic
* 症状主题
* @param K
* Top K
* @return
*/
public static Set<Integer> ptm_symptom_predict_k(int[] test_herbs, double[][][] herb_topic,double[][] symptom_topic, int K) {
//test_herbs是给定的草药数组,根据草药返回K个相关症状
double[] prob = new double[symptom_topic[0].length];
//所有症状的总概率
double prob_sum = 0;
//对于每一个具体症状,s代表症状标号
for (int s = 0; s < prob.length; s++) {
//计算该症状的预测概率
prob[s] = ptm_symptom_predictive_probability(test_herbs, s, herb_topic, symptom_topic);
prob_sum += prob[s];
}
if (prob_sum - 1 > 0.0001 || prob_sum - 1 < -0.0001)
System.out.println("症状概率之和不为1 : " + prob_sum);
//预测的top K的症状
Set<Integer> top_k_predict = new HashSet<>();
//进行K次
for (int k = 0; k < K; k++) {
//找到可能性最大的症状的索引
int max_index = Common.maxIndex(prob);
//将症状标号加入推荐集合
top_k_predict.add(max_index);
prob[max_index] = 0;
}
return top_k_predict;
}
下周计划
将推荐算法完成,与后端负责同学对接。