购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

第二节
医学文本挖掘技术

文本挖掘的步骤主要包括:①文本获取;②文本预处理;③文本表示;④特征选择;⑤分类器进行分类或文本聚类。本章采用R4.0.2进行文本挖掘实践。下面以对精神障碍患者电子病历进行文本挖掘为例,详细阐述其步骤及相关代码。

例4-1 自杀是世界范围的重要公共卫生问题,对自杀行为进行快速识别与动态监测对精神障碍患者的自杀预防非常重要。为了对入院患者的自杀监测与风险评估提供技术支持,研究人员利用文本挖掘技术,对精神障碍患者电子病历中的非结构化叙述性文本进行挖掘以快速准确识别具有自杀行为的患者。研究者收集2010—2015年在某精神专科医院所有首次入院的共25 241例成年精神障碍患者的电子病历,将其中的主诉内容提取出来,通过人工阅读病历主诉的方法判断患者本次入院是否存在自杀行为,最终筛选并纳入1 800例有自杀行为患者及1 800例无自杀行为患者的主诉用于文本挖掘、分类模型的训练及评估。

(一)文本获取

文本数据的获取有两种方法:一种是使用别人做好的语料库,如可获得的电子病历中的主诉;另一种是获取网络文本,主要获取网页HTML的形式。在R中对可扩展标记语言(extensible markup language,XML)文件、HTML文件或XML、HTML字符串的网页解析有多种方法,比较成熟的是使用XML包。XML包能将XML、HTML网页解析成R结构数据。目前网络上已经存在很多开源的爬虫系统(比如Python的scrapy和pyspider)用来获取网络文本数据。

例4-1中,最终从25 241例大样本中筛选出3 600例有/无自杀行为患者,构成如表4-1所示的数据集“total”(部分)。

表4-1 有/无自杀行为精神障碍患者的主诉(部分)

(二)文本预处理

文本预处理是文本挖掘的重要一步,很大程度上影响了文本挖掘效果,相关资料指出文本的预处理过程可能占据整个文本挖掘80%的工作量。其过程包括对文档进行分词,删除所有标点符号和数字,并用单个空格替换非文本字符(如制表符),去除停用词并建立语料库。

1.文档分词

在R中常使用“Rwordseg包”或“jiebarR包”进行中文分词。“Rwordseg包”主要基于隐马尔可夫模型(HMM),在Java环境下安装。此外,需要提前安装好分词词典,为达到更好的分词效果,还可根据文本内容添加自定义词典。

例4-1中,为提高分词准确性,安装了包括文本形式的自定义词典、从网络下载的scel格式医学词汇大全词典等多个词典。

文档分词的R软件实现方法如下:

1)调用R包

2)安装secl格式词典和自定义词典

3)分词

2.去除停用词

停用词是指携带信息量少、出现频率高且对文本没有太多作用的虚词。若不去除这些停用词,可能导致不同类别的文本表现出较高的相似度。相反,去除停用词不仅能降低文本的空间维度,同时能提升分类的准确率。停用词处理主要是使用停用词集进行去除。

例4-1中,采用了哈工大停用词表,其中包含1 500多个中文短功能词。

去除停用词的R软件实现方法如下:

分词与去除停用词后的结果见表4-2。

表4-2 分词与去除停用词后的结果(前10条)

3.建立语料库

语料库是文本文档的集合,须使用“tm包”。

例4-1中,建立语料库的R软件实现方法如下:

结果见表4-3。

表4-3 查看语料库(前10条)

续表

(三)文本表示

文本表示指将词汇整合成计算机可识别的形式。文本表示的模型包括:向量空间模型(vector space model,VSM)、布尔逻辑表示模型(Boolean model)和概率表示模型(probabilistic model)等。

1.VSM

VSM是目前常用的文本表示模型之一,其主要思想是用文本中的词语来表达文本的语义,将这些能够表达文本的词语抽取出来,并将其描述成向量的形式,即将文档表达为一个矢量,将其看作向量空间中的一个点。可以分别使用欧式距离、向量内积、向量余弦夹角等直接判断文本相似度。

2.提取特征值序列

特征词指可以代表文本类型或文本信息的词或短语,向量空间模型就是使用这些特征词来表示文本。要将文本转化为计算机可识别的形式就要对文本进行特征表示,将特征用结构化的形式保存,以便于处理。特征值序列具体表示形式为 D =( t 1 t 2 ,…, t m ),其中 t i 为特征项。

例4-2 现在有4个文档,分别为D 1 ,D 2 ,D 3 ,D 4

D 1 :文本挖掘技术非常有用;

D 2 :向量空间模型是用于文本表示的模型之一;

D 3 :文本表示是文本挖掘的重要步骤;

D 4 :各高校应提供良好的学习资源。

这4个文档特征词的表示结果可以被描述成向量形式,但在此之前需要先对其进行中文分词和去除停用词。分词和去停词后,表示形式见表4-4。

表4-4 使用特征词表示文档

术语(term)指能够表达文本的主要词语,也就是上文提到的特征词,一般是经过精心挑选的。若表4-4中的词语全部看作术语,且向量只描述术语出现或不出现,出现记作1,不出现记作0,这种描述就称为布尔向量(布尔向量不关心术语出现的次数),见表4-5。

表4-5 使用术语(特征词)表示文档的布尔向量形式

把术语作为向量空间中的各个轴,每个文档就变成了向量空间中的一个向量,即成功地把文本内容转化成了向量空间中的向量运算,也就可以用向量的相似度来估计文本语义的相似度,常用余弦距离进行相似度估计。

3.特征项的权值计算

在布尔向量中,只考虑特征词出现与否,未考虑其出现的频数,而词频高更能够反映文本对该词语所表达语义的强调,表4-6是考虑词频信息的文档向量表示。尽管如此,一篇文档经过向量空间模型的初步表示后,应赋予特征项以权值来准确反映特征词在文本中的分量。每一个文档 D =( t 1 t 2 ,…, t m )中的每一个特征项 t i 都根据相应的权重计算规则计算出一个权重值 w i ,该权值体现了该特征项对文本的区别度和识别度。特征词的权重判定:①特征词在某一篇文档中出现的次数(次数多文本标识度高);②特征词在不同文档中出现的次数(不同文档中出现次数多,文档区分度低)。计算特征项权重有很多方法,主要包括绝对词频(term-frequency,TF)法、TFIDF权重、布尔权重、TFC权重以及LTC权重等。

表4-6 带有词频信息的术语(特征词)表示文档

4.词频及逆文档频率

词的描述能力受两个要素影响。词频(TF)指词语在文档中出现的频次,词频越高意味着该文档的代表性越强。逆文档频率(inverse document frequency,IDF)用来描述一个词对于区分文档类别的重要程度,它代表了词语本身的描述能力,也就是说如果一个词出现在较少的文档类别中,则其描述能力较强。

为了防止词频偏向较长的文档,需要进行归一化,将文档中某词出现的次数除以所有词汇出现的总次数(式4-6)。

(式4-6)

TF i d )是文档 d 中关键词 i 的归一化词频值, freq i d )是 i d 中出现的绝对频率, 为其他所有词汇出现的总次数, i j

文档频率(document frequency, DF )指一个词在整个语料库所有文档中出现的次数,逆文档频率是文档频率的倒数,用来降低在所有文档中常见但对文档的分类、聚类作用不大的词语的影响(式4-7)。

(式4-7)

式中 N 指所有文档的数量, n i )指在所有的文档 N 中,出现过关键词 i 的文档数量。

分别计算出 TF i d )和 IDF i )后, TF - IDF 的值为(式4-8)。

(式4-8)

利用 TF - IDF 值替换表4-6中的各个分量值,就相当于给特征值赋予了各自的权重,既考虑了词频信息又考虑了区分度,从而能够更好地提取出文本特征来表示文本。

例4-1中,分别采用 TF TF - IDF 计算权重,并建立术语文档矩阵。

建立术语文档矩阵的R软件实现方法如下:

(1)以 TF 计算权重

sample.tdm<-DocumentTermMatrix(text_corpus,control=list(wordLengths=c(4,Inf)))

(2)以 TF - IDF 计算权重

sample.tdm<-DocumentTermMatrix(text_corpus,control=list(wordLengths=c(4,Inf)))

sample.tdm1<- weightTfIdf(sample.tdm)

建立文档矩阵结果见图4-2。

图4-2 以 TF 计算权重建立文档矩阵

(四)特征选择

文本分类问题的主要特征或难点是特征空间的高维性,因此,特征选择方法被广泛应用以减小特征空间的维数,从而提高分类效率。特征选择旨在从已有的候选特征中,选取最有代表性和最具区分能力的特征。一般通过构造一个特征评估函数,对候选特征进行评估,每个特征获得一个评估分数,然后对所有特征按照评估分大小进行排序,选取预定数量的最佳特征作为特征子集。特征词选择的准则是经特征选择后能有效提高文本准确率。选择没有改变原始特征空间的性质,只是从原始特征空间中选择了一部分重要的特征,组成一个新的低维空间。

进行最佳特征选择的方法如下:①从专业词典抽取具有基本语义的词语作为术语,部分情况下需要手工挑选辅助;②通过文档频率( DF )或 TF - IDF 值来衡量,按照指标计算并排序各个候选术语,再加以选择;③借助模型评价,比如支持向量机(SVM)模型;④使用 χ 2 统计、交叉熵等方法衡量各词与分类的相关度,然后选择相关度较高的术语;⑤混合方法度量,设计一个综合多种评价指标的公式,综合估计术语的重要性。

例4-1中,选择文档频率( DF )作为特征提取手段。上述得到的sample.tdm或sample.tdm1是稀疏矩阵(数值为0的元素远多于非0元素),由于稀疏率过高,需要删除文档频率较低的术语,使得矩阵中列数目大幅减少。以TF计算权重建立的文档矩阵sample.tdm为例,特征选择的R软件实现方法如下:

去除稀疏矩阵中的部分词条

上述结果见图4-3和表4-7。

图4-3 去除稀疏矩阵中的部分词条结果

表4-7 最终转化成的普通矩阵(部分)

(五)文本分类方法

文本分类是一种典型的监督式机器学习方法,常分为训练和分类两个阶段,训练算法和分类算法是分类系统的关键部分,在分类系统分类的过程中,将根据训练集结果和对应的分类算法,对新样本进行分类运算,从而建立文本自动分类器。

常见的文本分类方法如下(各种分类方法对应的原理和实践方法详见第八章相关内容)。

1.k-最近邻分类算法(k-nearest neighbor,kNN)

属于一种“根据邻居来判定类别”的算法,即基于某种距离度量找出训练集中与其最靠近的 k 个训练样本。假设有一个新的数据需要分类,kNN算法就是从训练集中找到和新数据最接近的 k 条记录,再根据这 k 条训练数据的类别,使用投票法确定新数据的类别。常使用“caret包”和“class包”。

2.支持向量机(support vector machine,SVM)

该算法基于结构风险最小化原则,将数据集合压缩到支持向量集合,学习得到分类决策函数。其目的是寻找一个超平面对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。支持向量机具有较好的推广性能和较高的分类准确率。常使用“e1071包”。

3.决策树(decision tree)

决策树可以看作一个树状预测模型,是由节点和有向边组成的层次结构。一棵决策树包含一个根结点、若干个内部结点和若干个叶结点。根结点包含样本全集,叶结点对应决策结果,其他每个结点则对应一个属性测试。决策树算法就是根据训练集构造一棵决策树,从根节点到每个叶节点都形成一条完整的分类规则,再将新文本与该决策树上的规则进行比对确定文本类别。

4.随机森林(random forest)

随机森林是通过集成学习的思想将多棵树集成的一种算法,其基本单元是决策树,通过在变量(列)的使用和数据(行)的使用上进行随机化,生成很多分类树,再汇总各分类树的结果获得最终的分类。常使用“randomForest包”。

5.Adaboost

Adaboost是一种迭代算法,其主要思想是对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器),从而达到更好的分类效果。常使用“adabag包”。

6.卷积神经网络(convolutional neural networks,CNN)

卷积神经网络属于深度学习,是利用卷积计算将图像或文本进行分类的一种算法。模型结构主要包括输入层(input layer)、卷积层(convolutional layer)、池化层(pooling layer)、全连接+softmax层。常常使用tensor flow搭建神经网络。

(六)分类评价指标

采用适当的评价指标对分类器的性能进行评估,比较常用的有精确率(precision rate)、召回率(recall rate)、 F 1值( F 1 measure),此外还有准确率(accuracy rate,AR)、错误率(error rate,ER)。常用到如表4-8的分类结果混淆矩阵。

表4-8 分类结果混淆矩阵

1.精确率

又称查准率,衡量所有被分类器划分到该类别的文本中正确文本的比率,准确率越高表明分类器在该类上出错的概率越小,体现系统分类的准确程度(式4-9)。

(式4-9)

2.召回率

又称查全率,衡量所有实际属于某个类别的文本被分类器划分到该类别中的比率,查全率越高表明分类器在该类上可能漏掉的分类越少(式4-10)。

(式4-10)

查全率与查准率是一对矛盾的度量。一般来说,查准率高时,查全率偏低;而查全率高时,查准率往往偏低。因此构造了 F 1值进行度量。

3. F 1值

综合考虑精确率和召回率,是二者的调和平均值(式4-11)。

(式4-11)

(七)文本聚类

文本聚类(text cluster)技术指根据文本内容所表达的语义是否相似或相似的程度将文本归为不同的类,同类对象间相似度高,不同类对象间相似度低,差异性大。文本聚类和文本分类的区别在于聚类的过程是无监督学习,没有预先定义的类别,也不需要预先定义。聚类的方法有很多,包括划分聚类法、层次聚类法、基于密度的方法、基于网格的方法、基于模型的方法、竞争聚类模型等。 N9qc1WwuZsguHZJ4diVjKhXUVKSSfAIaLqqS6oGTAymdxs+PvkZyIeFMfLoyfIoj

点击中间区域
呼出菜单
上一章
目录
下一章
×