1. 文本挖掘
随着网络时代的到来,用户可以获得的信息包含技术资料、商业信息、新闻报道、娱乐资讯的等等,可以构成一个异常庞大的具有异构性、开放性等特性分布式数据库,而这个数据库存放的是非结构化的文本数据,结合人工智能研究领域的nlp技术,从数据挖掘中派生出了文本挖掘这个新兴的数据挖掘研究领域。
文本挖掘是抽取有效、新颖、有用、可理解的、散布在文本文件中的有价值知识,并且利用这些知识更好地组织信息的过程。文本挖掘是NLP中的重要内容。
文本挖掘是一个从非结构化文本信息中获取用户感兴趣或有用模式的过程。文本挖掘的基本技术有6大类,包括文本信息抽取、文本分类、文本聚类、摘要抽取、文本数据压缩、文本数据处理。
文本挖掘的准备工作由文本收集、文本分析和特征修剪3个步骤组成。准备工作完成后,可以开展数据文本挖掘工作。文本挖掘的工作流程如图所示。
从目前文本挖掘技术和应用状况来看,从语义的角度实现文本挖掘的应用还很少。目前应用最多的文本挖掘技术有文本分类,文本聚类和摘要抽取,三者的简要介绍如下:
文本分类:文本分类将带有类别的文本集合按照每一类的文本子集合共有的特性, 归纳出分类模型, 再按照该模型将其他文档迁移到已有类中, 最终实现文本的自动分类。这样,既可以方便用户查找信息, 又可以缩小查找文本的范围。
文本聚类:文本聚类将文本集合分为若干个簇, 要求同簇内的文本尽量相似度高, 而不同簇的文本尽量相似度低, 从而发掘整个数据集的综合布局。例如, 与用户浏览相关的内容一般文本相似度会较高,而与用户浏览无关的内容往往文本相似度会较低。因此, 用户可运用聚类算法将需要筛选的文本内容聚成若干簇,将与用户浏览内容相关性不强的簇去除,只保留与用户浏览内容相关性强的簇, 这样能够提高浏览文本的效率。
摘要抽取:摘要抽取指计算机能够自动地从原始文档中提取出能够准确地反映该文档中心内容的简单连贯的短文。摘要抽取能够生成简短的关于文档内容的指示性信息,将文档的主要内容呈现给用户, 以便用户决定是否要阅读文档的原文,这样能够大量节省用户的浏览时间.
利用文本挖掘技术处理大量的文本数据, 无疑能够给企业带来巨大的商业价值。文本挖掘在商业智能、信息检索、生物信息处理等方面都有广泛的应用,如客户关系管理、自动邮件回复、垃圾邮件过滤、自动简历评审、搜索引擎等。因此,目前企业对于文本挖掘的需求非常高, 文本挖掘技术的应用前景也非常广阔。
2. 常见文本分类算法
文本分类是指按照一定的分类体系或规则对文本实现自动划归类别的过程,在信息索引、数字图书管理、情报过滤等领域有广泛的应用。文本分类方法一般分为基于知识工程的分类方法和基于机器学习的分类方法。基于知识工程的分类方法是指通过专家经验,依靠人工提取规则进行分类; 基于机器学习的分类方法是指通过计算机自主学习、提取规则进行分类。最早应用于文本分类的机器学习方法是朴素贝叶斯算法, 之后几乎所有重要的机器学习算法都在文本分类领域得到了应用,如支持向量机算法、神经网络算法、决策树算法和K 近邻算法等。各分类算法的优缺点如下表所示。
文本挖掘常见应用场景如下。
Web文档自动分类。随着互联网的发展, Web已成为拥有庞大信息资源的分布式信息空间,拥有各式各样、海量的 Web文档。为了有效地组合和处理 Web文档信息,人们希望按照 Web文档内容对其进行分类, 网页自动分类技术也随之诞生。
新闻分类。新闻网站中有大量的新闻报道,随着电子传播手段在新闻报道中的广泛运用,新闻体裁的分类趋于多样化, 各类新闻都有其定位和表现内容需要的体裁。对此需要根据新闻内容,将新闻网站中的新闻按照一定的分类标准进行分类, 如政治、军事、经济、娱乐和体育等。
情感分析。情感分析是指对带有主观感情色彩的文本内容进行分析和处理的过程,它可挖掘出人们针对不同的人物、产品或事件的观点、态度和情绪。互联网中有大量用户参与并发表评论的各种平台,如淘宝、京东和微博等, 在这些平台上用户的评论可体现用户的主观情感倾向。当需要对这些评论进行情感分析时,文本分类可以帮助实现, 按照不同情感将其划分为若干类。
信息检索。信息检索是用户采用一定的方法,借助搜索引擎查找所需信息的过程。信息检索同样采用文本分类的方法, 通过判断用户查找内容的所属类别, 在该类别的信息集合中再做进一步检索。
3. 常见文本聚类算法
文本聚类主要是指从杂乱的文本集合中发掘出对用户有价值的信息,通过这些蕴含在文本集中的未被发现的信息能够更为合理地组织文本集合。文本聚类的主要思想是可以对无类别标识的文本集合进行分析,通过对文本特性进行分析探索其应有的信息,再将集合中的文本按照特性分析的结果标识类别, 发现文本内容中潜在的信息。文本聚类是对文本数据进行组织、过滤的有效手段,并广泛应用于主题发现、社团发现、网络舆情监测、网络信息内容安全监测等领域。
传统的文本聚类算法使用TF-IDF 技术对文本进行向量化,然后使用k- means等聚类手段对文本进行聚类处理。文本向量化表示和聚类是提升文本聚类精度的重要环节, 选择恰当的文本向量化表示方法和聚类算法成为文本聚类的关键。
聚类算法是机器学习中的一种无监督学习算法,它不需要对数据进行标记, 也不需要训练过程, 通过数据内在的相似性将数据点划分为多个子集, 每个子集也称为一个簇,对应着潜在的类别, 而同一类别中的数据相似性较大, 不同类别之间的数据相似性较小。聚类实质上就是将相似度高的样本聚为一类, 并且期望同类样本之间的相似度尽可能高, 不同类别之间的样本相似度尽可能低。
聚类算法主要分为基于划分的聚类算法、基于层次的聚类算法、基于密度的聚类算法、基于网格的聚类算法、基于模型的聚类算法和基于模糊的聚类算法,具体介绍如下。
(1)基于划分的聚类算法。这种算法是聚类算法中原理最为简单的算法, 其基本思想为给定一个有 n个记录的数据集, 将数据集划分为K个分组, 每一个分组称为一个簇。对于给定的K个分组, 同一个分组内的数据记录距离越近越好, 不同分组之间的距离则要求要远。该类算法包括k- means、 Single- Pass增量聚类算法、k- medoids 和基于随机选择的聚类算法( Clustering Algorithm based on Randomized Search, CLARANS)等。其中最为经典、应用最多的是k- means算法。
(2)基于层次的聚类算法。这种算法的主要思想是将样本集合合并成凝聚度更高或分裂成更细致的子样本集合, 最终样本集合形成一棵层次树。该类算法不需要预先设定聚类数, 只需要样本集合通过不断迭代达到聚类条件或迭代次数即可。基于层次划分的经典聚类算法有变色龙算法、嵌套层次( Agglomerative Nesting, AGNES) 聚类算法、基于代表的聚类( Clustering Using Representatives, CURE)算法等。
(3)基于密度的聚类算法。这种算法的主要思想是首先找出密度较高的样本点,然后将周围相近的密度较高的样本点连成一片, 最后形成各类簇。比较具有代表性的3种基于密度的聚类算法有具有噪声的基于密度的聚类( Density- Based Spatial Clustering of Applications with Noise, DBSCAN)、基于排序点识别的聚类结构( Ordering Points to Identify the Clustering Structure, OPTICS) 和基于密度分布函数的聚类( Density- based Clustering,DENCLUE)。此类算法的优点是健壮性强, 对任意形状的聚类都适用, 但是结果的精度与参数设置关系密切, 实用性不强。
(4)基于网格的聚类算法。这种算法的出发点不再是平面而是空间,空间中的有限个网格代表数据, 聚类过程就是按一定的规则将网格合并。由于该算法在处理数据时是独立的, 仅依赖网格结构中每一维的单位数, 因此处理速度很快。但是此类算法对参数十分敏感, 速度快的代价是精确度不高, 通常需要与其他聚类算法结合使用。
(5)基于模型的聚类算法。这种算法的思路是假设每个类为一个模型, 然后寻找与该模型拟合最好的数据, 通常有基于概率和基于神经网络两种方法。概率模型即概率生成模型, 它假设数据是由潜在的概率分布产生的, 典型的算法是高斯混合模型。这类聚类算法在样本数据量大的时候执行率较低, 不适合大规模聚类场合。
(6)基于模糊的聚类算法。这种算法的主要思想是以模糊集合论作为数学基础, 用模糊数学的方法进行聚类分析。此类算法的优点在于对满足正态分布的样本数据而言它的效果会很好, 但是此类算法过于依赖初始聚类中心, 为确定初始聚类中心需要多次迭代以寻找最佳样本点, 对于大规模数据样本会大大增加时间复杂度。上述的聚类算法各有优缺点, 在面对不同的数据集时能起到不同的作用。
聚类方法各有优缺点,同聚类算法在性能方面的差异总结如下表所示。
4. 文本分类与聚类的步骤
利用算法进行文本分类或聚类, 一般包含数据准备、特征提取、模型选择与训练、模型测试、模型融合等步骤, 具体介绍如下。
(1)数据准备。文本数据一般是非结构化的数据,这些数据或多或少会存在数据缺失、数据异常、数据格式不规范等情况,这时需要对其进行预处理, 包括数据清洗、数据转换、数据标准化、缺失值和异常值处理等。
(2)特征提取。特征提取是文本分类前的步骤之一, 有几种经典的特征提取方法,分别是 BOW 模型、TF、TF-IDF、n- gram 和 Word2Vec。其中 BOW 模型拥有过大的特征维数, 数据过于稀疏。TF和TF-IDF 运用统计的方法,将词汇的统计特征作为特征集, 但效果与 BOW模型相差不大。
(3)模型选择与训练。对处理好的数据进行分析, 选择适合用于训练的模型。首先,判断数据中是否存在类标签,如果有那么归为监督学习问题,否则划分为无监督学习问题。在模型的训练过程中, 通常会将数据划分为训练集和测试集, 训练集用于训练模型, 测试集则不参与训练, 用于后续验证模型效果。
(4)模型测试。通过测试数据可以对模型进行验证, 分析产生误差的原因, 包括数据来源、特征、算法等。寻找在测试数据中的错误样本, 发现特征或规律, 从而找到提升算法性能、减少误差的方法。
(5)模型融合。模型融合是提升算法准确率的一种方法,当模型效果不太理想时, 可以考虑使用模型融合的方法进行改善。单个模型的准确率不一定比多个模型集成的准确率高。模型融合是指同时训练多个模型,综合考虑不同模型的结果, 再根据一定的方法集成模型, 得到更好的结果。