创新实训-中医药知识图谱的构建与应用01

创新实训-中医药知识图谱的构建与应用01

项目目标

根据中医药数据集构建知识图谱,并进行可视化。实现基于知识的处方推荐并构建中医药自动问答系统。

工作进度

阅读了一篇比较不错的相关论文《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;
	}

下周计划

将推荐算法完成,与后端负责同学对接。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值