细说文本挖掘:工具、任务、问题和解决方案
业界时常提到文本挖掘的概念,其本质是:一个从给定文本中获取高质量信息的自动化过程。它与其他类型数据分析的主要区别在于:其输入的数据并未经过任何方式的格式化。也就是说,我们不能简单地运用数学函数来描述数据。
当下,文本分析、机器学习和大数据都在以各自的方式,为不同的公司和企业带来业务增长点。在本文中,我们将和您探讨文本挖掘所应对的挑战,以及WaveAccess公司是如何在其应用中使用此项技术的。
一、基本的文本挖掘工具
通过下列步骤,文本挖掘系统将能够从文本语料库中提取关键知识,以判断给定的文本是否与指定的主题相关联,进而揭示其内容的细节。
1. 文档相关性(搜索与给定主题相关的文本)。其中,给定的主题可以是一些相当狭窄的概念,例如:有关眼科手术的学术论文。
2. 命名的实体。如果一份文档被认为是相关的,那么系统可能需要在其中找到一些具体的实体,例如:学术名称、或讨论到的疾病名称。
3. 文档类型。系统根据文档的内容对其进行标记。例如:对于某个产品的评论可以被分为正面的、或负面的。
4. 实体链接。除了事实本身,系统是否能够在文档中找到与事实相联系的确切部分,也是非常重要的。例如:某种药物与副作用之间的关系,或者是某人的名字与对其工作的负面评价之间的关系。
二、典型的文本挖掘任务
文本挖掘不仅有助于我们从大型非结构化的数据管理项目中提取有用的知识,而且有利于提高相应的投资回报率。对于一家企业来说,这就意味着他们无需采用昂贵的手动处理,只需自动化地将不相关的数据剔除掉,便可以从大数据中得到正确的答案。
下面我们来探讨几个利用文本挖掘进行工作的例子。
1.语义科学文献的搜索
在大量的科学出版物中,文本挖掘可以帮助我们找到相关的文章,进而节省时间和金钱。
在法律上,如果在产品中发现了任何副作用,欧美制药公司都有义务召回其产品,并修改其传单页和其他相关文件中涉及到患者的信息。那么除了公司自己的研究方式以外,发现副作用的主要途径便是阅读其他研究人员的科学文章。由于每年发表出来的文章数量庞大,因此他们几乎不可能去手动处理所有的文章。
为了解决此问题,科学出版商(或者是与出版商有关联的数据分析公司)会根据客户(制药公司)所指定的算法和方法,提供自动化的文章搜索服务。而在客户方面,在得到了所需格式的相关文章简报之后,他们便可以选择要购买的指定文章了。
2.定价出版物
如下图所示,出版商对于这些最新科学文章与研究成果的收费标准是:每篇25-30美元的起步价。那么,制药公司就陷入了两难的局面:一方面,根据法律他们有义务跟踪其产品的所有副作用,以便修改产品规格或从市场上召回其产品。另一方面,购买所有可能提到某种药物的文章是一笔昂贵的开销,更不用说需要花费时间来处理所有这些文字了。
在WavetAccess公司,我们为制药行业的客户开发了一种自动化文章搜索方案:我们运用文本挖掘平台来搜索文章及其元数据,从而保证客户只为最有可能包含相关文本的文章买单。
鉴于此类任务的复杂性,我们用到的文本挖掘技术有:针对来源于非标准化书目的数据,我们采用了单独的搜索方式,有时甚至需要通过机器学习,去解析元数据里包含的公司地址等信息。
3.市场调查
文本挖掘的相关应用有助于定位目标公司所处的社交媒体空间,并分析它在空间里的认可程度。
许多企业往往需要对自己的产品,及其竞争产品进行客观的评估,以制定出独有的发展战略。在此,自动化的文本处理系统,更适合应对大量的信息来源(包括:学术文章、杂志、新闻、产品评论网站等),以及五花八门的产品使用评论。
4.信息源可信度
有了文本挖掘,我们还需要进一步将各种虚假的评论,与那些公平公正的评论相区别开来。
在医药领域,“产品评论”是指那些发表在可信学术杂志上的药物检测结果。由于业界对于学术论文的标准要求比较高,因此它们很难出现“虚假评论”。但是,如果把分析目标锁定为所有可公开访问的来源(包括互联网),那么我们就必须给评论的作者和来源的信誉予以排名,以甄别出虚假的评论。而在学术论文领域,这被称为引文索引(citation index,CI)。因此在文章搜索中,我们引入了这些参考因素,并将其包含在最终的报告中,以便读者自行判定是否信任那些给出的信息源。
另一个相关、但又不相同的参考因素叫做情绪分析(也称为观点挖掘)。其目标是评估作者对于给定对象的情绪态度。这同样有助于对各种评论进行分类,并且找出针对目标公司的负面舆论。
5.知识管理
对于文书工作的优化,有助于公司了解到有哪些可用的数据和文档,并设置针对它们的快速访问。
许多公司在其规模扩大的过程中,积累了大量的知识资产。不过,这些资产却往往存在着结构不良,没有实现标准化等问题。各部门可能持续使用着自己保存的内部文档,或者根本就没有任何保存的意识。那么当不同的公司合并到一起时,问题就会整体爆发,他们几乎不可能找到所需要的信息。因此,为了更好地利用过去所积累的知识,此处该“请出”文本挖掘系统了。它可以实现如下四个方面:
- 自动收集和标准化不同来源的数据。
- 添加元数据(如文档源、作者、创建日期等)。
- 对文档进行索引和分类。
- 通过用户定义的参数,来提供文档搜索的界面。
另外,此类文本挖掘系统还应该根据相关的安全标准,配备用户角色与授权级别的管控。
6.客户服务部门优化
除了各种内部文档之外,公司往往还需要从外部获取大量的文本数据,例如:导入从网站录入进来的表单和订单。因此,文本挖掘系统可以对传入的请求进行排序,并提供客户需要的详细信息。通过最小化订单的处理时间,客户服务部门可以为更多的客户提供服务,企业也更加能够盈利。
7.文本挖掘如何创收
我们有一家提供工业级别维护与维修的客户公司。他们每天最多能收到4000个维修请求。客户服务经理需要在CRM系统中创建修复条目,并在弹出的列表中选择修复的类别和类型。然后,他们根据请求的数量,再分配修复小组的工作量。
由于请求并非是以特定的格式提交的,因此在引入文本挖掘之前,他们只能花费大量的时间,靠人工去填写所有的字段。
WavetAccess公司给他们开发了一套基于未知格式的文本系统,以帮助客户服务部门更好地对各种请求进行排序。该系统预制了一些最有可能的类别,并帮助员工在CRM的弹出列表中快速地定位到某些特定情况。同时,这套系统也能甄别出那些收费项目,并为公司实现创收。
8.垃圾邮件过滤
垃圾邮件过滤的目标是:对大量的邮件流(包括电子邮件和短信)进行分类,以实现对那些不需要的邮件进行分类。因此对于这项工作而言,文本挖掘技术需要能够根据快速的算法,判断和处理大量的数据。
通过上述应用案例,我们可以看到:企业所面对的文本数据往往是“非标”的,而他们的处理目标也是多样的。因此我们无法仅使用某个单一的分析方法,来提高对于文本挖掘与决策的效率。下面让我们深入讨论文本挖掘过程中的不同开发阶段,以及流行的项目优化方法。
三、实施过程中的信息搜索问题
最常见的文本挖掘任务之一莫过于:搜索相关文档,并从中提取信息。那么随着数据量的不断增加,该任务的自动化程度就显得尤为重要。执行此类任务的典型系统一般由两部分组成:
- 文档收集和标准化。
- 文档分类和分析。
下面让我们详解这两个部分。
1.文档收集和标准化
此阶段的目标是:
- 持续收集和提取文本的结构化数据。
- 收集文档的元数据(包括创建日期、标题等)。
- 标准化文档的文本和元数据。
由于数据的来源五花八门,而且收集的方法也是灵活多样,因此在上传之前,我们有时需要使用格式转换器,来处置好目标文档的格式。下面是一些具体的数据收集与准备任务:
通过对源文档的扫描,来收集数据
在这种情况下,系统使用光学字符识别引擎(如:Tesseract之类的OCR工具),将文本分成多个部分与段落。不过,光学识别的一个常见问题是:它经常会碰到格式较为复杂的文本(如各种列或表格),这些元素都会影响系统的最终转换,以及合并出有意义的文档。此外,有时为了同时扫描多个文档,系统需要使用特定的属性标记,标注出给定文档的开头和结尾。
通过PDF或DJVU文档的方式收集数据
这些文档的格式,虽然比较适合用来查看那些格式化好的文档,但是不适合被应用来存储结构化的数据。PDF与DJVU文件虽然能够存储符号和单词的位置,以便于显示和用户的阅读,但这些文件并没有任何的语句边界标记。因此,和上述文档扫描方式类似,此类具有复杂格式、表格和图像的PDF与DJVU文件,也会给文本的挖掘带来不同程度的挑战。
从Web源收集数据
并非所有包含数据源的网站或系统都有便捷的API,有时它们可能只是一个方便操作的用户界面而已。在这种情况下,系统需要用到Web爬虫,即:通过分析网站来收集数据。因此,除了常用的HTML代码分析,系统还可能需要使用计算机视觉(computer vision)来解决此类特殊问题。
用户手动上传数据
有时候,用户已经有能力在本地自动化地处理一定数量的文档了。那么,系统为了支持用户上传大量具有丰富格式的文档,就必须将某些元数据添加到上载的文档之中。诸如发布日期、作者、源、以及文档类型之类的元数据,将有助于后期的文本挖掘操作,包括:针对特定主题,查找特定作者的作品等操作。
因此,在面对大量可用的数据时,我们可能只是需要其中的一小部分。例如:我们可能只对某医学与药物数据库中的某个特定公司的药物感兴趣。那么,我们就应该通过访问关键字列表,运用全文索引,来快速检索到所需的文档;而不是使用精确但耗费资源的算法,去处理所有的文档。如果我们的目标是从多个来源收集数据,那么就应当使用特定的标准化接口,以迅速高效地获取文档。在此,您可以参考Solr工具,它是一个开源的全文搜索平台。
2.文档分类和分析
在对各类文档完成收集入库(也可能进行筛选操作)之后,系统会调用各种文本挖掘算法,来检查目标文档是否与主题相关,以及分析文档内所包含的信息。例如:通过判断文档中是否提到了某个产品,以确定其上下文是“正”还是“负”。此后,系统将生成一份文档报告,以便下一步进行手动或自动处理。
总的说来,文本挖掘的方法和算法分为以下几组:
- 文本规范化和预处理。
- 使用一整套规则来搜索实体和他们之间关系。
- 使用各种统计方法和机器学习。
上述这些方法通常会被放到一些复杂的系统中,并被组合到一起使用。
文本规范化和预处理
此阶段处于其他阶段之前,包括以下部分:
- 将句子分为多个单词。
- 删除停顿词(stop words,如前置词、感叹词等)。
- 规范化剩余的词语(将“人们”变成“人”,将“实现了”变成“实现”),并识别它们在语句中的成分。
显然,这些步骤高度依赖于文本的语言,不过也并非总是必要的。例如:某些文本挖掘算法,也可以从停顿单词中收集到各种信息。
规则集
这种方法基于由某个特定领域的专家所制定的一整套规则。下面是此类规则的示例:
- 在带有公司名称的三个句子中,选择所有提到的产品名称。
- 选择匹配“<公司名称>提供<服务名称>”模式的服务。
- 消除那些提及公司产品名称的次数少于三次的文档。
语言规格
此类规则的重点在于通过语言来分析词序。例如:在英语句子中,单词之间的关系是通过语法和功能词(前置词等)来传达,而核心词一般保持不变。
而在合成语言(例如德语、希腊语、拉丁语、俄语)中,单词之间的关系是通过单词的形式来表达的,语序并不重要。
因此在分析英语时,那些非核心词的“服务性”词语(前置词等)负责传达形式和时态。例如那句经典的Word语句:“棕色的狐狸快速地跳过了懒惰的狗”。
与合成语言相比,英语的这句话并不假设棕色的狐狸是雄性还是雌性,而懒惰的狗的性别也不明显。其中,“狐狸”和“狗”都是清晰不变的核心词。
规则的优、缺点
优点
- 无需训练数据或对其进行标记。
- 由系统所做出的判断是明确的,且容易向人类用户做出解释。
缺点
- 需要花一定的精力来制定一套能够给出足够精度的规则。
- 就算模式只是略有不同,现有规则也无法处理新案例中的相关数据。
五、统计方法与机器学习
文本数据的复杂性和难以规范化其结构,造成了它们在机器学习的应用中显得尤为复杂。我们需要测试多种方法或算法,才能找到针对给定上下文的可接受的输出方案。
下面是一些常用的算法示例:
文本预处理算法
除了单词规范化和删除停顿词之外,某些算法还会要求将文本转换为数字形式,以作为矢量或矢量序列。最常用的文本预处理算法有:
1.One-hot encoding,是一种最简单的算法。它将文本中的单词转换为,在i-th位置上具有非零值的N-long向量。其中N是语言字典长度,而i则为该字典中单词的位置。
2.word2vec,也是对单词进行矢量化的一组算法。与One-hot encoding相比,它生成的向量要短得多,并且包含各种实数(并不整数)。word2vec能够给具有相似含义的单词赋予相似的向量。
3.Bag of words,是一种基于单词频率的算法(即:某个单词在文档中出现的次数)。虽然它能够通过向量来描述一般文本,但是它几乎完全忽略了文本的结构。
4.TF-IDF,是一种能够为每个文本形成tf-idf值向量的算法。此处tf-idf值为给定文本中的单词频率,除以整个语料库中这个单词的反向频率。而反向频率则可以通过不同的方法计算出来。所以基本想法是:如果一个词语经常在语言中被使用到,那么就给它分配较低价值的分类(例如:许多前置词,包括“去”、“工作”、“有”、“需要”等都属于此类),同时其反向频率也就比较低。相反,那些罕见的词语当然也就有着较高的反向频率,其分类的价值也就越高。
命名实体识别和关系提取算法
此项工作是:查找特定的术语(如:公司、产品、服务名称等),通过标记来对它们进行分类,进而找出这些实体之间的关系。因此,可能会涉及到如下算法:
1.隐马尔可夫模型(Hidden Markov model,HMM),它将统计模型表示为定向图。
2.条件随机场(Conditional Random Field,CRF)也是一个统计模型,但是它并不使用定向图。
3.神经网络(Neural networks),其中LSTM能够表示上下文,因为它能够时序地(非重复地)通过处理过程,来存储上下文数据。CNN则根据所发现的基本特征模式来提取数据。
4.一般机器学习方法。如果系统使用的是“滑动窗口(sliding window)”技术,那么常规的机器学习方法则包括:逻辑回归、支持向量机、朴素贝叶斯分类器、决策树和其他需要输入具有固定特征列表的方法。当然,此类方法并不考虑窗口之外的上下文。因此,如果相关的单词远离窗口长度的范围,或是对于整个文本块有一些其他类型的评论(例如,产品描述的负面评论)时,这些信息则会被忽略,进而可能产生不准确的结果。
分类和主题建模算法
此项任务是对已处理的文档,产生包括文档类型或主题在内的简单描述。因此,可能会涉及到如下算法:
1.潜在狄利克雷分配(Latent Dirichlet Allocation,LDA),是一种基于狄利克雷(Dirichlet)分布的统计模型。它能将文本视为不同主题的组合。
2.潜在语义分析(Latent Semantic Analysis,LSA),是一种将语料库表示为术语文档矩阵,通过将其分解,以定义不同文档主题的方法。
3.主题模型的加法正则化(Additive Regularization of Topic Models,ARTM),是将现有的统计模型与正则化相结合,进而更好地分析文本结构。
4.使用bag of words、tf-idf 和其他算法的结果,作为输入的通用机器学习方法。
当然,各种算法的性能也会因作业的不同而有所差异。例如:对于不同的文本主题或命名实体来说,某些算法的工作效果可能会表现得特别优秀。因此,我们在构建文本挖掘系统时,可以通过尝试不同的方法,以找到最佳的输出结果;或是将不同技术的结果相结合,以达到文本挖掘的目的。
统计方法与机器学习的利与弊
优点
- 能自动搜索文本特征和所需结果之间的关系。
- 能考虑到文本内部复杂的关系。
- 有泛化推广能力(对不在培训集中的案例采取正确处理方式)。