深度学习与中文短文本分析总结与梳理

本文涉及的产品
NLP自然语言处理_基础版,每接口每天50万次
NLP自然语言处理_高级版,每接口累计50万次
NLP 自学习平台,3个模型定制额度 1个月
简介:


1.绪论


过去几年,深度神经网络在模式识别中占绝对主流。它们在许多计算机视觉任务中完爆之前的顶尖算法。在语音识别上也有这个趋势了。而中文文本处理,以及中文自然语言处理上,似乎没有太厉害的成果?尤其是中文短文本处理的问题上,尚且没有太成功的应用于分布式条件下的深度处理模型?(大公司或许有,但没有开源)本文暂且梳理一下,尝试围绕深度学习和短文本处理的方方面面就最简单的概念进行一次梳理,并且试图思考一个问题:


深度学习处理中文短文本的最终效果是什么?


我思考后的答案是:是一种模型,可以无需任何语言学知识或手工特征设计,就可被用于中文分词、词性标注以及命名实体识别等多种中文自然语言处理任务,甚至直接改造为分布式大数据可以使用的框架。


2.短文本


姑且认为200字以内的都叫短文本。


2.1 短文本的研究范围


  • 搜索引擎的搜索结果

  • 锚文本

  • 互联网聊天信息

  • 电子邮件主题

  • 论坛评论信息

  • 商品描述信息

  • 图片描述

  • 微博

  • 手机短息

  • 文档文献摘要


2.2 短文本特点


短文本具有特征稀疏性、奇异性、动态性、交错性等特点:


  • 稀疏性。每条短文本形式信息的长度都比较短,都在 200 字以内,因此所包含的有效信息也就非常少,造成样本的特征非常稀疏,并且特征集的维数非常高,很难从中抽取到准确而关键的样本特征用于分类学习。


  • 实时性。在互联网上出现的短文本形式的信息,大部分都是实时更新的,刷新速度非常快,聊天信息、微博信息、评论信息等,并且文本数量非常庞大。


  • 不规则性。短文本形式的信息用语不规范,包含流行词汇较多,造成了噪声特征非常多,如“94”代表“就是”,“88”代表“再见”,“童鞋”代表“同学”,而且更新很快,如流行词“伤不起”、“有没有”、“坑爹” “屌丝”、等等。


3.中文分词


中文分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。众所周知,英文单词是用空格来进行分隔的,在中文的字与字之间、句子与句子之间、段落与段落之间也都能找到分界符。另外,在中英文中都存在短语划分这个问题,但是词与词之间却找不到形式上的分界符。词是最小的能够独立活动的有意义的语言成分,因而,中文在词的划分这个问题上是个非常巧杂而关键的问题。


现有的分词算法可分为3大类:


3.1 基于字符串匹配和规则的分词方法


基于字符串匹配的分词方法又称为机械分词方法,它是按照一定的策略将待分析的汉字与一个"足够大的"词典中词条进行匹配,若在词典中找到某个字符串,则匹配成功。按照扫描方向的不同,串匹配分词方法可分为正向匹配和逆向匹配;按照不同长度优先匹配的倩况,可分为最大(最长)匹配和最小(最短)匹配;按照是否与词性标注过程相姐合,又可分为单纯分词方法和分词与标注相结合的一体化方法。


常用的基于字符串匹配的分词方法有:


a. 正向最大匹配法,按照文字的阅读顺序进行匹配; 
b. 逆向最大匹配法,按照文字的阅读顺序反向进行匹配; 
c. 最小切分法,使每一句中切出的词数量最少。由于汉语单字成词的特点,正向最小匹配和逆向最小匹配一般很少使用。 

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

正向最大匹配法


逆向匹配的切分精度略髙于正向匹配,遇到的歧义现象也较少。统计结果显示,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配的错误率为1/245。但这种精度还远远不能满足实际的需要。


实际使用的分词系统,都是把机械分词作为一种初分手段,还需要通过利用各种其它的语言信息来进一步提高切分的准确率。上述方法虽然实现简单、速度快,但处理分词歧义能力较差,严重依赖于词表,不能识别新词语,即未登录词。为了解决分词歧义与未登录词的问题,90年代初期出现了基于规则的分词系统,包括专家系统、短语结构文法等。基于规则的"演泽推理"方法,能较好的解决有规律的分词歧义和未登录词,具有一定的领域适应性、效率很髙。但中文语言现象非常复杂,存在很多无规律的分词歧义和未登录词。因此 一般采用其他算法,如:动态规划等相结合提高准确率。


3.2 基于统计的分词方法


基于统计的分词方法只需对语料中的字信息进行统计,不需要切分词典,因而又称为无词典分词法或统计取词法。从形式上看,词是稳定的字的组合,在上下文中,相邻的字同时出现的次数越多,就越有可能构成一个词。因此字与字相邻共现的频率或概率能够较好的反映成词的可信度。因而可对语料中相邻共现的各个字的组合的频度进行统计,计算它们的相关度,计算两个汉字A、B的相邻共现的概率。可对语料中相邻共现的各个字的组合的频率进行统计。


这种方法首先切分与词典能匹酷成功的所有可能的词,即找出所有候选词条,然后运用统计语言模型和决策算法得出最优的切分结果。


由于纯粹从统计的角度出发,因此在统计意义上某些经常出现在一起的字并不能构成完整的词语,例如"上的"、"有的"、"这一"等在文本中会大量的互邻同现,但它们却分属于不同的词;并且统计语言模型和决策算法在很大程度上决定了解决歧义的方法,需要大量的标注语料,并且分词速度也因搜索空间的増大而有所减慢。基于统计的分词方法所应用的主要的统计量或统计模型有:互信息、隐马尔可夫模型和最大熵模型等。这些统计模型主要是利用词与词之间的联合出现概率作为分词判断的信息。


3.3 基于理解的分词方法


这种分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。它通常包括几个部分:分词子系统、句法语义子系统、总控部分。


在总控部分的协调下,分词子系统可获得有关词、句子等的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过程。这种分词方法需要使用大量的语言知识和信息。由于汉语语言知识的笼统、复杂性,难W将各种语言信息组织成机器可直接读取的形式,因此目前基于机器学习理解的分词系统还处在实验阶段。


  • 基于隐马尔可夫模型的字标注中文分词方法。


  • 基于层叠隐马尔可夫模型的汉语词法分析方法,该方法引入角色隐马尔可夫模型识别未登录词。然而,传统机器学习方法往往依赖于人工设计的特征,而一个特征是否有效需要多尝试与选择,因此人工设计一系列好的特征既费时又费力。


  • 神经网络方法。


  • 深度学习的方法,对中文语料进行中文分词和词性标注。这些方法仅接近与目前最好结果,并没有超越。


4. 基于深度学习的短文本分析 参考2


深度学习(Deep Learning)是一种表示学习方法,它通过对数据进行多层级的建模来获得关于数据特征的层次结构以及数据的分布式表示。由于深度学习可以避免繁琐的人工特征抽取,有效地利用无监督数据,并且具有优秀的泛化能力,因此成为了最近几年机器学习领域的一个热点。


深度学习的发展与应用使得图像处理、语音识别等多个具体的应用领域都取得了突破式的进展。深度学习非常适用于解决自然语言处理领域的一系列难题。


首先,由于语言本身的高维特性,传统的自然语言处理系统往往需要复杂的语言学知识以便手工构造出可供分类器使用的特征。而利用深度学习,则可以通过构造模型来自动学习用于解决自然语言处理领域的问题所需的特征。


其次,在自然语言处理领域,无标签数据可以被轻易地大量获得,然而有标签数据则相对稀少且昂贵,深度学习则刚好可以利用大量无标签数据来获取特征。再次,自然语言处理领域的许多问题往往相互之间具有非常强的关联性,例如对分词、词性标注和命名实体识别,传统的方法往往将这几个问题分开解决,忽略了它们之间的关系。使用深度学习则可以在特征抽取层面构造统一的模型以同时处理这些问题,并通过多任务学习的方法在模型中对其关联性进行建模,从而获得更好的性能。


因此,深度学习的核心思想是通过具有一定“深度”的模型从数据中逐层抽象出特征(即分布式表示),并且在深度学习模型中越高的层级抽取出的特征具有越强的表达能力。据内部的特征信息,对于语言来说,这正是一个可以采纳的方式:从大量的文本中学习得到语义,并对语义进行特征表示,从而利用这些特征进行具体的计巧任务。


深度学习模型 参考3


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


4.1 自动编码器


自动编码器(Auto—Encoder)是一种数据驱动的、非监督地学习数据特征的神经网络模型。其结构如所示。可W把它看成是一个输出节点数与输入节点数相等的多层神经网络。 


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


4.2受限玻尔兹曼机


玻尔兹曼机(Boltzmann Machine)是一种引入了模拟退火思想的无向图模型,其根据无向图节点的状态和节点之间的互联权重定义整个系统的能量状态,并指定输入节点和输出节点为可见节点,在输入节点的二值化特征信息不变的情况下对其它节点进行退火,寻找最低的能量状态,即通过模拟退火的思想学习节点的互联权重作为模式的表示。


受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)是一种特殊的玻尔兹曼机,是深度置信网(Deep Belief Networks,DBN)的核心组件之一。它规定无向图节点分为可见层和隐含层两层,每层内部的节点之间不可互联,而处于不同层之间的节点为全连接。


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


4.3 卷积神经网络


卷积神经网络主要包括两种神经层:卷积层(Convolution)和池化层(又称下采样层,Pooling)。这两层往往搭配出现。如图2-6所示一个典型的卷积神经网络模型一般包括数个卷积层与池化层的组合,在此之后的几层是神经网络的全连接层

卷积层是卷积神经网络的主要运算部分。卷积层的输入是一幅或多幅二维图像,这些图像被称为特征图像(FeatureMap)。每个输出特征图像对应一个卷积核,该卷积核对一幅或多幅输入图像进行卷积,卷积的结果取平均得到一幅输出特征图像。


目前,深度学习在自然语言处理上取得的进展没有在语音图像上那么令人印象深刻。但相比于声音和图像,语言是唯一的非自然信号,是完全由人类大脑产生和处理的符号系统。因此,深度学习在自然语言处理领域中的应用研究仍存在诸多的挑战。


5.为什么深度学习如此有效?参考1


深度学习中的表征视角是非常有力的,比如单词嵌入深度学习可以将非常复杂的关系进行近似编码: 

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


原文中这样说:这看来是神经网络的一个非常强大的优点:它们能自动学习更好的数据表征的方法。反过来讲,能有效地表示数据对许多机器学习问题的成功都是必不可少的。单词嵌入仅仅是学习数据表示中一个引人注目的例子而已。


5.1主流深度学习模型对比


概述对比 


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


一个开源的深度学习测试框架参考9:对可扩展性(extensibility)、hardware utilization(硬件利用率)以及大家最关心的:速度(speed)上进行了比较


比较结果: 


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


tensorflow比较中规中矩,我不认为其他几个库在后期能比他强多少,毕竟google出品,哈哈。现在不少企业都已经开始用tensorflow进行一些工程实践,大势所趋,同志们站好队啊。(欢迎同志们拍砖)


6.文本分类效果评价


很多时候,文本分析领域需要很多的评价准则,但是我看了不少论文,来回来去也就是基于分类的评价去做,这块还需要大牛给指点一二。


怎么能够客观的表示我们算法的准确行,分词,词性标注,等等。


国际上广泛采用微平均和宏平均相结合的评价准则,并采用准确率P(Precision)和召回率R(Recall)以及F1值来衡量分类系统性能。


对第i个类别,其准确率召回率分别定义如下:li表示分类的结果中被标记为第i类别且标记为正确的文本个数,mi表示结果中表示被标记为第i个类的文本个数,ni表示被分类的文本中实际属于第i个类别的样本个数。


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


微平均和宏平均


微平均和宏平均是计算全局的查准率,查全率和F1测试值的两种方法。其中,微平均用mP、mR、mF1来表示:宏平均用MP、MR、MF1来表示,公式如下:


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


7.短文本相关工具应用


7.1 Word2vector


word2vector由Google开发的一个用于训练语义向量的工具,其核心的技术是根据词频用Huffman编码使得所有词频相似的词隐藏层激活的巧内容基本一致,出现频率越高的词语,其隐藏层数目越少,然后采用一个三层神经网络对语义单元向量进行表示。具体可参考此说明文档 参考10 


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


快速入门: 


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


7.2 标签云


回头打算,把自己的csdn博客爬一遍,写个Python生成的标签云。


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


7.3 倾向性分析


商品论坛评论(开门见山和卒章显志是汉语语篇的重要特点)。


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


7.4 成熟案例——微博舆情分析


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1 640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


8.主流分词工具对比分析


8.1 总体介绍


主流分词概况:


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


分词准确度:


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


在所测试的四个数据集上,BosonNLP和哈工大语言云都取得了较高的分词准确率,尤其在新闻数据上。因为庖丁解牛是将所有可能成词的词语全部扫描出来(例如:“最不满意”分为:“最不 不满 满意”),与其他系统输出规范不同,因而不参与准确率统计。为了更直接的比较不同数据源的差别,我们从每个数据源的测试数据中抽取比较典型的示例进行更直观的对比。


大数据评测结果:jieba(c++)版独领风骚啊


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


8.2 结巴和清华THULAC 介绍


8.2.1THULAC 清华新推荐的分词工具 参考8


THULAC(THU Lexical Analyzer for Chinese)由清华大学自然语言处理与社会人文计算实验室研制推出的一套中文词法分析工具包,具有中文分词和词性标注功能。THULAC具有如下几个特点:


  • 能力强,利用我们集成的目前世界上规模最大的人工分词和词性标注中文语料库(约含5800万字)训练而成,模型标注能力强大。 

  • 准确率高,该工具包在标准数据集Chinese Treebank(CTB5)上分词的F1值可达97.3%,词性标注的F1值可达到92.9%,与该数据集上最好方法效果相当。 

  • 速度较快,分词速度同时进行分词和词性标注速度为300KB/s,每秒可处理约15万字。只进行分词速度可达到1.3MB/s。


8.2.2 Jieba 参考7


Jieba分词是中文分词领域使用非常广泛的自由软件,其采用MIT授权协议,支持繁体分词并且支持自定义词典。 


Jieba分词支持三种分词模式:


  • 精确模式,试图将句子最精确地切开,适合文本分析;

  • 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;

  • 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。


基本实现算法


基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG) 。

采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合 。

对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法。

分词速度


1.5 MB / Second in Full Mode 
400 KB / Second in Default Mode 
测试环境: Intel(R) Core(TM) i7-2600 CPU @ 3.4GHz;《围城》.txt





原文发布时间为:2017-04-25 

本文作者:流川疯

本文来自云栖社区合作伙伴“数据派THU”,了解相关信息可以关注“数据派THU”微信公众号

相关文章
|
1月前
|
机器学习/深度学习 数据采集 数据可视化
使用Python实现深度学习模型:智能舆情监测与分析
【8月更文挑战第16天】 使用Python实现深度学习模型:智能舆情监测与分析
108 1
|
1月前
|
机器学习/深度学习 人工智能 算法
深度学习在医疗影像分析中的应用与挑战
【8月更文挑战第6天】随着人工智能的飞速发展,深度学习技术已广泛应用于医疗影像分析领域。本文章将探讨深度学习如何革新传统医疗诊断流程,提高疾病预测和诊断的准确性,以及在实际应用中遇到的挑战和限制。通过具体案例分析,本文旨在揭示深度学习在处理复杂医疗数据时的强大潜力及其未来发展的可能性。
|
6天前
|
机器学习/深度学习 传感器 边缘计算
深度学习之精准农业分析
基于深度学习的精准农业分析利用深度学习技术处理和分析农业中的各种数据源,包括遥感影像、气象数据、土壤信息和作物生长情况,从而优化农业生产,实现资源的精确管理和农业产量的提升。
17 6
|
6天前
|
机器学习/深度学习 数据可视化 搜索推荐
使用Python实现深度学习模型:智能睡眠监测与分析
使用Python实现深度学习模型:智能睡眠监测与分析
27 2
|
7天前
|
机器学习/深度学习 搜索推荐 TensorFlow
使用Python实现深度学习模型:智能饮食建议与营养分析
使用Python实现深度学习模型:智能饮食建议与营养分析
32 3
|
8天前
|
机器学习/深度学习 搜索推荐 算法框架/工具
使用Python实现深度学习模型:智能运动表现分析
使用Python实现深度学习模型:智能运动表现分析
31 1
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
【深度学习】AudioLM音频生成模型概述及应用场景,项目实践及案例分析
AudioLM(Audio Language Model)是一种基于深度学习的音频生成模型,它使用自回归或变分自回归的方法来生成连续的音频信号。这类模型通常建立在Transformer架构或者类似的序列到序列(Seq2Seq)框架上,通过学习大量音频数据中的统计规律,能够生成具有高保真度和创造性的音频片段。AudioLM模型不仅能够合成音乐、语音,还能生成自然界的声音、环境噪声等,其应用广泛,涵盖了娱乐、教育、辅助技术、内容创作等多个领域。
42 1
|
2月前
|
机器学习/深度学习 人工智能 算法
深度学习在医疗影像分析中的应用与挑战
随着计算能力的提升和大数据时代的到来,深度学习技术已经渗透到医疗影像分析的各个领域。本文将探讨深度学习在医疗影像分析中的具体应用,包括疾病诊断、治疗规划及预后评估,并讨论当前面临的主要挑战,如数据隐私保护、模型可解释性以及算法泛化能力等。通过综合分析,旨在为读者提供深度学习技术在医疗领域应用的全面视角及其未来发展的可能性。
|
2月前
|
机器学习/深度学习 数据采集 数据安全/隐私保护
深度学习在医疗影像分析中的应用与挑战
随着人工智能技术的飞速发展,深度学习已成为医学影像分析领域的一股不可忽视的力量。通过构建复杂的神经网络模型,深度学习能够处理和分析大量的高维度数据,如X光、MRI和CT扫描图像,实现对疾病标记的自动检测和诊断。本文将探讨深度学习技术在医疗影像分析中的实际应用案例,包括癌症检测、神经退行性疾病的早期发现以及心脏病的预测等,并讨论当前面临的主要挑战,如数据集的质量和多样性不足、模型解释性差、以及隐私保护等问题。 【7月更文挑战第15天】
52 11
|
2月前
|
机器学习/深度学习 计算机视觉
深度学习在医疗影像分析中的应用
深度学习技术在医疗影像分析领域取得了显著进展,为医生提供了更准确、更快速的诊断工具。本文将探讨深度学习在医疗影像分析中的应用,包括图像分类、目标检测和分割等方面。通过具体的案例和数据分析,我们将展示深度学习如何提高医疗影像分析的准确性和效率,并讨论其在未来发展的潜力和挑战。