APP下载

基于TF-IDF算法的方剂构成相似度可视化研究

2019-09-02郭文龙罗熊姜惠娟谢永红陈茂建

中国中医药信息杂志 2019年7期
关键词:相似度方剂可视化

郭文龙 罗熊 姜惠娟 谢永红 陈茂建

摘要:目的  构建中药方剂数据挖掘系统,直观反映方剂属性及方剂之间的相似度,为方剂研究及应用提供参考。方法  应用爬虫框架和手工录入方式获取一定数量的经典方剂,采用中文分词工具和手工整理方式对方剂信息进行名称、功能、来源、中药组成、剂量、剂量单位、炮制方法、忌宜、主治等属性拆分,构造语料词库,Python3.5环境下采用TF-IDF算法计算方剂间相似度并进行功能主治验证,采用d3.js进行可视化展示。结果  经过分词和手工整理得到不同类型方剂7710首,包含药物8957味,构建的中药方剂数据挖掘系统实现了相似度和方剂构成等信息可视化展示。同时,相似度高的方剂在功能主治方面具相似性。结论  本研究构建的中药方剂数据挖掘系统可直观展示方剂信息、方剂与药物间的关联关系及方剂之间的相似度。

关键词:方剂;TF-IDF算法;相似度;可视化;中药方剂数据挖掘系统

中图分类号:R289.1;R2-05    文献标识码:A    文章编号:1005-5304(2019)07-0104-05

Abstract: Objective To construct a data mining system for TCM prescriptions; To visually reflect the prescription properties and similarity between prescriptions; To provide references for research and application of prescriptions. Methods A reptile framework and manual entry method were used to obtain a certain number of classical prescriptions. The Chinese word segmentation tool and the manual finishing method were used for splitting the information of prescriptions according to the name, function, source, TCM composition, dosage, dosage unit, processing method, contraindication and indication. The corpus was constructed. In Python 3.5 environment, the TF-IDF algorithm was used to calculate the similarity between prescriptions and to perform functional indication verification, and d3.js was used for visual display. Results Through word segmentation and manual finishing, 7710 kinds of prescriptions of various types were obtained, including 8957 kinds of Chinese materia medica. The constructed TCM prescription data mining system realized information visualization of similarity and prescription composition. At the same time, prescriptions with high similarity were similar in terms of functional indications. Conclusion The TCM prescription data mining system constructed in this study can visually display the relationship between the prescription information, the prescription and the Chinese materia medica, and the similarity between the prescriptions.

Keywords: prescriptions; TF-IDF algorithm; similarity; visualization; TCM prescription data mining system

部分中藥方剂包含的药物数据非常相似,组成药物仅有微小差别,总体成分大致相同。这些相似方剂在治疗某一种或某一类病证时的功效存在某种潜在联系。从所有的方剂中找出与之相似的方剂可提供用药的多维度参考[1]。因此,通过方剂的相似性分析可较好挖掘其相似关系。目前中药方剂相似度模型主要从成分和功效两方面进行相似性分析。

本研究在Python3.5环境下应用TF-IDF(term frequence-inverse document frequence)算法进行方剂相似性的计算,把所有方剂看作一个方剂集合整体,每一方剂的药物构成看作关键词,并构造词库,计算TF-IDF值后,依照系数矩阵计算相似性。构建中药方剂数据挖掘系统,直观反映方剂属性及方剂之间的相似度,为方剂研究及应用提供参考。

1  方剂相似度计算方法

不同研究者从多角度进行了方剂的相似度研究,取得了一定成绩。操牡丹等[2]在《中医药方剂近似度模型》中提出基于字符串的方剂名称的相似度计算,分别应用基于编辑距离的算法、基于最大公共字符串的算法和基于统计和字典的名称相似度算法,在方剂名称层面进行研究。黄运高等[3]在《基于K-means和TF-IDF的中文药名聚类分析》中使用TF-IDF方法计算药名相似的方法并采用K-means聚类算法进行药名的聚类。朱志鹏等[4]在《基于LDA主题模型的中医药方剂相似度计算》中利用LDA主题模型发掘“方剂-证型-组成成分”的隐含关系的方法,将“方剂-组成成分”转换成“方剂-证型”和“证型-组成成分”2个概率分布,并利用KL距离来计算相似度,但由于在LDA主题模型中马氏链的平稳状态需要迭代多少次才能到达却很难确定,所以迭代次数只能依赖人为设置。顾铮[5]《基于文本分类技术计算中医方剂相似度》利用自然语言处理领域的知识,基于KNN算法,计算方剂相似度,而KNN算法中K值的选择直接影响计算结果。

本研究从方剂的药物组成层面,在计算过程中根据药物的重要程度依照TF-IDF算法赋予其权值,在给定方剂集合中计算与某一首方剂相似度高的其他方剂。

2  基于TF-IDF算法的方剂药物构成相似度计算原理

TF-IDF主要应用于搜索、文献分类、网络信息相关性的分析和其他相关领域[6-7]。

本研究把每首方剂看作由中药名称构成的关键词的集合,即1首方剂包含n个关键词w1,w2,…,wn,其在1首特定方剂中的词频分别是tf1,tf2,…,tfn。TF计算公式如下:

ni,j是该关键词在所有方剂dj中的出现次数,而分母则是在所有方剂dj中所有字词的出现次数之和。

如果作为关键词w的一种中药在Dw首方剂中出现,Dw的值越大,药物w在方剂中区别于其他方剂的作用就越小。如甘草是很多的方剂中的组成药物,出现的频率非常高,但是它在方剂中的区分度贡献小。因此,可以给方剂中的每种药物赋予一定的权重,如果它很少在方剂中出现,通过比较可以较容易找到相似方剂,在方剂中用于区别其他方剂的作用大,其权重也就越大,反之其权重越小。

IDF逆向文本频率指数是信息检索中应用最多的权重计算方法,同样可以使用到中药方剂中药物的计算。计算公式如下:

| D|:语料库中的方剂总数

|{j:t∈dj}|:包含药物ti的文件数目(即ni,,j≠0的文件数目)如果该药物不在语料库中,就会导致被除数为零,因此一般情况下使用1+|{j:t∈dj}|

假定方剂数量D=1000首,若甘草在所有方剂中均出现,则其idf=log(1000/1000)=log(1)=0,若当归在20首方剂中出现,则其idf=log(1000/20)= log(50)=1.698 97。

因此,采用TF-IDF=tfi×idfi的值可评价某种中药组成在某首方剂中的重要程度。计算某首方剂所有组成的tf×idf和sim,从而评价方剂之间的相似性。

上述相似度计算公式可有以下tf×idf的和,即:

依据以上公式,可把1首方剂分解成关键词集合,然后在所有的方剂中计算这些关键词的tf×idf的和,从而找出相似度高的方剂。

3  應用计算过程

方剂相似度的计算及中药方剂数据挖掘系统构建流程见图1,其对象模型空间关联关系见图2。

3.1  数据收集

数据集包括方剂表、中药表和方剂中药关系表。经过分词和手工整理得到不同类型方剂7710首,包含药物8957味,方剂表、中药表和方剂中药关系表的关联见图3。

3.2  计算过程

1首方剂的药物组成可看做由若干个关键字构成的整体,每味药物的名称即为1个关键字。

用集合p={chm1,chm2,chm3,…,chmi}表示方剂p由i个药物chmk组成。其中chmk是经过分词和相关处理形成的中药名称,因此,可避免语义方面引入的处理问题,降低了难度。如方剂小青龙汤p=

{麻黄,芍药,细辛,干姜,甘草,桂枝,五味子,半夏}。

3.3  方剂组成元素的分解

首先把每一方剂分解成若干个关键字,并构成[[杏仁,甘草,桂枝,麻黄,生姜,大枣,石膏],[附子,芍药,甘草],[麻黄,芍药,细辛,干姜,甘草,桂枝,五味子,半夏],[前胡,柴胡,知母,贝母,牡丹皮,桔梗,羌活,独活,荆芥穗,黄芩,山茵陈,山栀,升麻,麻黄,大黄,麦门冬,杏仁,紫菀,玄参,秦艽],[柴胡,黄芩,人参,半夏,甘草,生姜,大枣],……]方剂集合。

3.4  词频统计

把方剂分解的结果合并到一起,并统计各组成药物的频次。部分统计结果见表1。

3.5  计算TF-IDF和相似度

从以上的统计结果中可以看出,甘草在中药方剂中的应用频次最高,但在方剂中的重要程度并不是最高,适合使用TF-IDF计算其重要程度。计算每一方剂中的所有方剂中药组成的tf×idf的和。

如抽取方剂小青龙汤与所有方剂一一计算相似度。在500首方剂中计算与小青龙汤的相似度高的方剂,小青龙汤的组成是{麻黄,芍药,细辛,干姜,甘草,桂枝,五味子,半夏},在500首方剂中的频次分别是{41,18,33,35,181,7,36,60},即以{麻黄,芍药,细辛,干姜,甘草,桂枝,五味子,半夏}为关键字分别在500首方剂中计算相关性。

4  结果分析

得出的相似度结果中,以大青龙汤为例,对与其相似度较高的桂枝加芍药汤、麻桂各半汤、小柴胡汤、杏子散、麻黄汤、小青龙汤、温肺汤、麦汤散、百部丸、保真汤等,从主治功能方面进行分析验证。结果见表3。

结果表明,与大青龙汤相似度高的方剂在功能与主治方面有较高相似性,主治风寒引起的发热、头身疼痛、肺热等证,而且麻黄汤、小青龙汤同属辛温解表方。因此,应用TF-IDF进行方剂计算有实用价值。

5  可视化展示

构建中药方剂数据挖掘系统,应用d3.js可视化技术对以上计算的方剂相似度结果和方剂构成进行可视化展示,显示与某一方剂相似度较高的若干方剂、方剂的构成、方剂的信息和组成中药相关信息,见图4。

在中药方剂数据挖掘系统界面左侧的方剂列表或方剂栏目中选择某首方剂(如核桃承气汤)作为输入,得到的结果以横向柱状图形式直观展示了与方剂核桃承气汤相似性高的方剂名和相似度值,见图5。与核桃承气汤相似度较高的方剂有厚朴七物汤(30.83%)、温脾汤(24.81%)、小承气汤相(23.71%)、三化汤(20.54%)、苓桂术甘汤(20.52%)、麻黄汤(15.92%)等。

6  小结

本研究从药物构成研究方剂,应用TF-IDF算法实现了中药方剂相似度的计算,结果精确度较高。构建的中药方剂数据挖掘系统可直观展示方剂信息、方剂与药物间的关联关系及方剂之间的相似度,并通过可视化框架进行表达,推荐相似度高的方剂。数据分析应用Python3.5实现,可视化应用d3.js实现。但研究维度相对单一,今后研究可从药物、剂量、药性、药物成分等多维度计算相似度,并给出合理阈值,确定相似度模型。

参考文献:

[1] PETERS C. Cross-language information retrieval and evaluation[C]//Proc. of Intl Conf. on Lecture Notes in Computer Science. Berlin:Springer Verlag,2001.

[2] 操牡丹,何前锋,王柏.中医药方剂相似度模型[J].计算机工程,2009, 16(8):275-277.

[3] 黄运高,王妍,邱武松,等.基于K-means和TF-IDF的中文药名聚类分析[J].計算机应用,2014,34(S1):173-174.

[4] 朱志鹏,杜建强,刘英锋,等.基于LDA主题模型的中医药方剂相似度计算[J].计算机应用研究,2017,34(6):1668-1670,1676.

[5] 顾铮.基于文本分类技术计算中医方剂相似度[J].微计算机信息, 2010,26(12):199-201.

[6] 徐建民,王金花,马伟瑜.利用本体关联度改进的TF-IDF特征词提取方法[J].情报科学,2011,29(2):279-283.

[7] 吴军.数学之美[M].北京:中国工信出版社,2014:104-109.

猜你喜欢

相似度方剂可视化
基于CiteSpace的足三里穴研究可视化分析
基于Power BI的油田注水运行动态分析与可视化展示
中药方剂在治疗黄褐斑中的应用
《金匮要略》黄芪类方剂探析
基于CGAL和OpenGL的海底地形三维可视化
“融评”:党媒评论的可视化创新
论方剂的配伍环境
甘草在方剂中的作用及配伍规律
改进的协同过滤推荐算法
模糊Petri网在油田开发设计领域的应用研究