谢松
摘 要:中文分词与数据挖掘技术在中医药领域应用越来越广泛,文章分析比较了目前的常用的几种中文分词算法,采用其中逆向最长匹配算法,以《中医药大词典》为辅助词典,设计开发了适用于中医药科研的中文分词系统,在多项中医药数据挖掘科研工作中得到了广泛的应用。
关键词:中文分词;逆向最长匹配算法;中药方剂
1 概述
中医药是中华民族的传统瑰宝,经过几千年的传承和发展,积累了丰富的临床经验和浩瀚的文献资料,为实现中医药现代化,需要将古今中医药信息资源和现代先进的信息技术相结合。通过应用现代计算机技术对浩如烟海的中医药文献资料进行信息资源处理,可以促进中医药知识的利用转化及传播推广。
分词是中文信息处理的基础,对于输入的一段中文,成功的进行中文分词,可以达到计算机自动识别语句含义的效果。中文分词是自动翻译、数据挖掘技术、自然语言处理等信息处理领域的基础环节,长期以来一直是研究的重点。近年来数据挖掘技术越来越受到中医药学者的重视,中文分词在中医药领域也得到越来越广泛地应用。
2 中文分词技术的算法
现有的分词算法可分为三大类: 基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法[1]。
2.1 基于字符串匹配的分词方法
基于字符串匹配的分词方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行匹配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。按照扫描方向的不同,串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配。基于字符串匹配的分词方法优点是分词速度快,算法简单且易于实现,但是不具备歧义处理能力。
2.2 基于理解的分词方法
基于理解的分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶段。
2.3 基于统计的分词方法
基于统计的分词方法对语料中的字组频度进行统计分词,不需要切分词典,因而又叫做无词典分词法或统计取词方法。其理论依据是在上下文中,相邻的字同时出现的次数越多,就越有可能构成一个词。因此字与字相邻共现的频率或概率能够较好的反映成词的可信度。
但这种方法也有一定的局限性,会经常抽出一些共现频度高、但并不是词的常用字组,例如“这一”、“之一”、“有的”等,并且对常用词的识别精度差。
到底哪种分词算法的准确度更高,目前并无定论。对于任何一个成熟的分词系统来说,不可能单独依靠某一种算法来实现,都需要综合不同的算法。
3 运用中文分词系统分析中药用药规律
3.1 系统分析与设计
数据挖掘技术在医学领域亦具有广阔的应用前景,可用于预测推断手术、临床试验以及药物治疗的效果,在分析中药方剂或古今医案中的用药规律时,也经常运用数据挖掘的方法,而前提之一就是对数以万计的浩瀚文献资料进行预处理,在这个过程中,中文分词系统可以发挥重要的作用。
由于中医方剂的基本组成单位为药材,而关于的药材名称在药典里已经做了记载,中药药材的名称相对已经固定,新出现的中药材不多,因此在数据挖掘时根据标准药典作为词典,运用基于字符串匹配的分词方法处理中药方剂用药规律具有天然的优势。一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配的错误率为1/245。由于汉语单字成词的特点,正向最小匹配和逆向最小匹配一般很少使用。综合以上几点考虑,该研究在设计中文分词系统时,采取基于词典的逆向最长匹配算法,系统的流程图如图1。
3.2 中药词典的构造
由于基于字符串匹配的分词方法是从一个“充分大的”机器词典中进行词条匹配,词典的构造是切词的基础。设计的词典机制和词条的完备率对分词结果的准确性将产生重要影响,词典的性能在一定程度上决定着整个系统的性能[2]。目前构造分词词典主要有三种设计方法:第一种方法,以机器做辅助,主要靠人工输入信息的方式构造词典。第二种方法,从印刷版的词典里获取信息来构造分词词典。第三种方法,通过对语料库的加工处理和分析,抽取相关信息来实现分词词典的设计。
该项研究采取的是第二种方法。南京中医药大学编著的《中药大辞典》,全书分上、下、附编三册,上、下册为正文,收载6008味药物及其有关栽培(饲养)技术、药材鉴定、化学成分、药理作用、炮制、现代临床研究等方面的中药研究成果,反映了当代中药学的研究水平。该项研究以《中药大辞典》为依据,将其收录的药材名称编成电子版词典,编好之后存入SQL Server数据库作为分词基础。
3.3 逆向最长匹配算法
逆向最大匹配法通常简称为RMM法,取词典中单词长度最大值作为第一次取字数量,从文章或者句子(字串)的末尾开始切分,然后到词典中进行扫描。其流程图如图2。
伪代码如下:
maxcibiao=词表最大长度
While Not EOF(1)
Line Input #1,Line1
subsen1=Line1
Do While Len(subsen1)>0/*要切分的句子长度大于0*/
jiequ_now=Right(subsen1,maxcibiao)
/*从句子最右面截取词表最大长度的字符串*/
If vIsFound=1 Then
subsen1=Left(subsen1,Len(subsen1)-Len(jiequ_now))
/*判断是否词表中是否匹配,如果匹配则将这个词记录下来,然后从原字符串中去除当前截取,作为新的子串*/
Else
For k=1 To maxcibiao-1
LenJiequ=maxcibiao-k
tempWord=Right(jiequ_now,LenJiequ)
/*从词表最大长度减少1开始循环处理,直到一个字符,到词表中判断是否匹配*/
/*如果匹配则将这个词记录下来,再重新截取子串,否则将原字符串长度减1之后重复上述过程*/
Next k
subsen1=Left(subsen1,Len(subsen1)-Len(temp Word))
End If
Loop
Wend
3.4 应用举例
文章设计的中文分词系统,既可以单独使用,也可以作为数据挖掘的前期步骤,在中医药方剂挖掘分析的多项课题中得到了广泛的应用,以针对糖尿病的某项课题为例,通过在数据库中以“糖尿病”为主题检索,经过筛选整理得到2369篇相关文献,每篇文献使用不同的方剂与中药药材,以其中的五篇文献为例,用到了下列药材:
(1)“黄芪、生地黄、地骨皮、黄柏、黄连、水蛭等”。(2)“生黄芪30g、山药30g、生地30g、茯苓15g、天花粉15g、麦冬12g、白术12g”。(3)“川穹12g、郁金12g、丹参12g、生黄芪30g、草决明10g、知母12g、生地黄12g”。(4)“熟地20g,枸杞子12g,山茱萸12g,黄芪30g,黄连10g,地龙12g,丹参20g,川芎12g,水蛭8g,石菖蒲8g”。(5)“熟地黄20 g,枸杞子12g,山茱萸12g,黄芪30g,黄连l0g,地龙12g,丹参20g,川芎12g,水蛭8g,石菖蒲8g”。
系统在处理第一条记录时,可以准确地依次切分出水蛭、黄连、黄柏、地骨皮、生地黄、黄芪,其他的记录也都准确地一一切分出来。当文献量很大时,手工摘出这些药材并进行统计分析是项劳动量巨大的工作,通过分词系统可以很快的得到统计结果,并且准确率非常高。按照频次统计的前20味药材如表1。
表1 糖尿病方剂研究中药材统计
3.5 存在的问题与后续研究
中药名称由于因时代不同、地域有别而产生差异,出现同药异名现象,如龙脑又称冰片何首乌又称首乌。而医生在开处方时,也会因为个人习惯对同一味药材使用不同的名称,例如将生地黄、熟地黄简称为生地、熟地、生熟地,贝母分为为川贝、浙贝,这些异名如在词表中未收录,分词时则切分不出。有时因为实际需要,同一味药材炮制前后当作不同的药材,在分词完成后,根据需要对这些药材进行单独处理或是合并处理。在后续的研究中,以此中文分词系统为子系统,开发出中医药数据挖掘系统,为科研工作提供了有力的工具。
4 结束语
中医药是我国独具特色和优势的传统医学,积淀了数千年的理论知识和临床经验。我们需要继承珍贵的传统经验,而发展更是首要任务。在信息技术高速发展的今天,中医药信息化建设是使中医药走向现代化的必然选择,是中医药事业发展的重要保障。充分利用信息技术,促进中医药信息资源的开发、利用和共享,对于促进中医药事业加速发展水平和创新能力,实现中医药现代化具有十分重要的意义。利用中文分词系统和数据挖掘技术可以对积累的临床经验挖掘出更多的价值,因此具有广阔的应用前景。目前在自然语言处理技术中,中文处理技术比西文处理技术要落后很多,就是因为中文必需有分词这道工序。如何提高中文分词技术的准确性、更好地服务于中医药领域,还需要付出更多的努力。
参考文献
[1]付年钧,彭昌水,王慰.中文分词技术及其实现[J].软件导刊,2011,10(1):18-20.
[2]宗中.中文信息检索中词典机制分词算法的研究[J].计算机技术与发展,2014,24(4):118-121.
If vIsFound=1 Then
subsen1=Left(subsen1,Len(subsen1)-Len(jiequ_now))
/*判断是否词表中是否匹配,如果匹配则将这个词记录下来,然后从原字符串中去除当前截取,作为新的子串*/
Else
For k=1 To maxcibiao-1
LenJiequ=maxcibiao-k
tempWord=Right(jiequ_now,LenJiequ)
/*从词表最大长度减少1开始循环处理,直到一个字符,到词表中判断是否匹配*/
/*如果匹配则将这个词记录下来,再重新截取子串,否则将原字符串长度减1之后重复上述过程*/
Next k
subsen1=Left(subsen1,Len(subsen1)-Len(temp Word))
End If
Loop
Wend
3.4 应用举例
文章设计的中文分词系统,既可以单独使用,也可以作为数据挖掘的前期步骤,在中医药方剂挖掘分析的多项课题中得到了广泛的应用,以针对糖尿病的某项课题为例,通过在数据库中以“糖尿病”为主题检索,经过筛选整理得到2369篇相关文献,每篇文献使用不同的方剂与中药药材,以其中的五篇文献为例,用到了下列药材:
(1)“黄芪、生地黄、地骨皮、黄柏、黄连、水蛭等”。(2)“生黄芪30g、山药30g、生地30g、茯苓15g、天花粉15g、麦冬12g、白术12g”。(3)“川穹12g、郁金12g、丹参12g、生黄芪30g、草决明10g、知母12g、生地黄12g”。(4)“熟地20g,枸杞子12g,山茱萸12g,黄芪30g,黄连10g,地龙12g,丹参20g,川芎12g,水蛭8g,石菖蒲8g”。(5)“熟地黄20 g,枸杞子12g,山茱萸12g,黄芪30g,黄连l0g,地龙12g,丹参20g,川芎12g,水蛭8g,石菖蒲8g”。
系统在处理第一条记录时,可以准确地依次切分出水蛭、黄连、黄柏、地骨皮、生地黄、黄芪,其他的记录也都准确地一一切分出来。当文献量很大时,手工摘出这些药材并进行统计分析是项劳动量巨大的工作,通过分词系统可以很快的得到统计结果,并且准确率非常高。按照频次统计的前20味药材如表1。
表1 糖尿病方剂研究中药材统计
3.5 存在的问题与后续研究
中药名称由于因时代不同、地域有别而产生差异,出现同药异名现象,如龙脑又称冰片何首乌又称首乌。而医生在开处方时,也会因为个人习惯对同一味药材使用不同的名称,例如将生地黄、熟地黄简称为生地、熟地、生熟地,贝母分为为川贝、浙贝,这些异名如在词表中未收录,分词时则切分不出。有时因为实际需要,同一味药材炮制前后当作不同的药材,在分词完成后,根据需要对这些药材进行单独处理或是合并处理。在后续的研究中,以此中文分词系统为子系统,开发出中医药数据挖掘系统,为科研工作提供了有力的工具。
4 结束语
中医药是我国独具特色和优势的传统医学,积淀了数千年的理论知识和临床经验。我们需要继承珍贵的传统经验,而发展更是首要任务。在信息技术高速发展的今天,中医药信息化建设是使中医药走向现代化的必然选择,是中医药事业发展的重要保障。充分利用信息技术,促进中医药信息资源的开发、利用和共享,对于促进中医药事业加速发展水平和创新能力,实现中医药现代化具有十分重要的意义。利用中文分词系统和数据挖掘技术可以对积累的临床经验挖掘出更多的价值,因此具有广阔的应用前景。目前在自然语言处理技术中,中文处理技术比西文处理技术要落后很多,就是因为中文必需有分词这道工序。如何提高中文分词技术的准确性、更好地服务于中医药领域,还需要付出更多的努力。
参考文献
[1]付年钧,彭昌水,王慰.中文分词技术及其实现[J].软件导刊,2011,10(1):18-20.
[2]宗中.中文信息检索中词典机制分词算法的研究[J].计算机技术与发展,2014,24(4):118-121.
If vIsFound=1 Then
subsen1=Left(subsen1,Len(subsen1)-Len(jiequ_now))
/*判断是否词表中是否匹配,如果匹配则将这个词记录下来,然后从原字符串中去除当前截取,作为新的子串*/
Else
For k=1 To maxcibiao-1
LenJiequ=maxcibiao-k
tempWord=Right(jiequ_now,LenJiequ)
/*从词表最大长度减少1开始循环处理,直到一个字符,到词表中判断是否匹配*/
/*如果匹配则将这个词记录下来,再重新截取子串,否则将原字符串长度减1之后重复上述过程*/
Next k
subsen1=Left(subsen1,Len(subsen1)-Len(temp Word))
End If
Loop
Wend
3.4 应用举例
文章设计的中文分词系统,既可以单独使用,也可以作为数据挖掘的前期步骤,在中医药方剂挖掘分析的多项课题中得到了广泛的应用,以针对糖尿病的某项课题为例,通过在数据库中以“糖尿病”为主题检索,经过筛选整理得到2369篇相关文献,每篇文献使用不同的方剂与中药药材,以其中的五篇文献为例,用到了下列药材:
(1)“黄芪、生地黄、地骨皮、黄柏、黄连、水蛭等”。(2)“生黄芪30g、山药30g、生地30g、茯苓15g、天花粉15g、麦冬12g、白术12g”。(3)“川穹12g、郁金12g、丹参12g、生黄芪30g、草决明10g、知母12g、生地黄12g”。(4)“熟地20g,枸杞子12g,山茱萸12g,黄芪30g,黄连10g,地龙12g,丹参20g,川芎12g,水蛭8g,石菖蒲8g”。(5)“熟地黄20 g,枸杞子12g,山茱萸12g,黄芪30g,黄连l0g,地龙12g,丹参20g,川芎12g,水蛭8g,石菖蒲8g”。
系统在处理第一条记录时,可以准确地依次切分出水蛭、黄连、黄柏、地骨皮、生地黄、黄芪,其他的记录也都准确地一一切分出来。当文献量很大时,手工摘出这些药材并进行统计分析是项劳动量巨大的工作,通过分词系统可以很快的得到统计结果,并且准确率非常高。按照频次统计的前20味药材如表1。
表1 糖尿病方剂研究中药材统计
3.5 存在的问题与后续研究
中药名称由于因时代不同、地域有别而产生差异,出现同药异名现象,如龙脑又称冰片何首乌又称首乌。而医生在开处方时,也会因为个人习惯对同一味药材使用不同的名称,例如将生地黄、熟地黄简称为生地、熟地、生熟地,贝母分为为川贝、浙贝,这些异名如在词表中未收录,分词时则切分不出。有时因为实际需要,同一味药材炮制前后当作不同的药材,在分词完成后,根据需要对这些药材进行单独处理或是合并处理。在后续的研究中,以此中文分词系统为子系统,开发出中医药数据挖掘系统,为科研工作提供了有力的工具。
4 结束语
中医药是我国独具特色和优势的传统医学,积淀了数千年的理论知识和临床经验。我们需要继承珍贵的传统经验,而发展更是首要任务。在信息技术高速发展的今天,中医药信息化建设是使中医药走向现代化的必然选择,是中医药事业发展的重要保障。充分利用信息技术,促进中医药信息资源的开发、利用和共享,对于促进中医药事业加速发展水平和创新能力,实现中医药现代化具有十分重要的意义。利用中文分词系统和数据挖掘技术可以对积累的临床经验挖掘出更多的价值,因此具有广阔的应用前景。目前在自然语言处理技术中,中文处理技术比西文处理技术要落后很多,就是因为中文必需有分词这道工序。如何提高中文分词技术的准确性、更好地服务于中医药领域,还需要付出更多的努力。
参考文献
[1]付年钧,彭昌水,王慰.中文分词技术及其实现[J].软件导刊,2011,10(1):18-20.
[2]宗中.中文信息检索中词典机制分词算法的研究[J].计算机技术与发展,2014,24(4):118-121.