文本_文本分类 - CSDN
  • Python文本数据分析--实战视频教学

    千人学习 2020-06-24 14:35:54
    进入学习群,获取唐宇迪老师答疑 ...案例中实例演示如何从杂乱的文本数据开始进行分词预处理到后应用贝叶斯算法进行分类预测。 专属会员卡更超值:http://edu.csdn.net/lecturer/1079
  • 什么是文本挖掘 ?

    千次阅读 2018-02-07 14:18:33
    什么是文本挖掘  文本挖掘是抽取有效、新颖、有用、可理解的、散布在文本文件中的有价值知识,并且利用这些知识更好地组织信息的过程。1998年底,国家重点研究发展规划首批实施项目中明确指出,文本挖掘是“图像...

    什么是文本挖掘
      文本挖掘是抽取有效、新颖、有用、可理解的、散布在文本文件中的有价值知识,并且利用这些知识更好地组织信息的过程。1998年底,国家重点研究发展规划首批实施项目中明确指出,文本挖掘是“图像、语言、自然语言理解与知识挖掘”中的重要内容。
      文本挖掘是信息挖掘的一个研究分支,用于基于文本信息的知识发现。文本挖掘利用智能算法,如神经网络、基于案例的推理、可能性推理等,并结合文字处理技术,分析大量的非结构化文本源(如文档、电子表格、客户电子邮件、问题查询、网页等),抽取或标记关键字概念、文字间的关系,并按照内容对文档进行分类,获取有用的知识和信息。
      文本挖掘是一个多学科混杂的领域,涵盖了多种技术,包括数据挖掘技术、信息抽取、信息检索,机器学习、自然语言处理、计算语言学、统计数据分析、线性几何、概率理论甚至还有图论。

    文本挖掘技术的发展
      数据挖掘技术本身就是当前数据技术发展的新领域,文本挖掘则发展历史更短。传统的信息检索技术对于海量数据的处理并不尽如人意,文本挖掘便日益重要起来,可见文本挖掘技术是从信息抽取以及相关技术领域中慢慢演化而成的。
      随着网络时代的到来,用户可获得的信息包含了从技术资料、商业信息到新闻报道、娱乐资讯等多种类别和形式的文档,构成了一个异常庞大的具有异构性、开放性特点的分布式数据库,而这个数据库中存放的是非结构化的文本数据。结合人工智能研究领域中的自然语言理解和计算机语言学,从数据挖掘中派生了两类新兴的数据挖掘研究领域:网络挖掘和文本挖掘。
      网络挖掘侧重于分析和挖掘网页相关的数据,包括文本、链接结构和访问统计(最终形成用户网络导航)。一个网页中包含了多种不同的数据类型,因此网络挖掘就包含了文本挖掘、数据库中数据挖掘、图像挖掘等。
      文本挖掘作为一个新的数据挖掘领域,其目的在于把文本信息转化为人可利用的知识。

    文本挖掘预处理
      文本挖掘是从数据挖掘发展而来,但并不意味着简单地将数据挖掘技术运用到大量文本的集合上就可以实现文本挖掘,还需要做很多准备工作。文本挖掘的准备工作由文本收集、文本分析和特征修剪三个步骤组成,见图1。
      ◆ 文本收集
      需要挖掘的文本数据可能具有不同的类型,且分散在很多地方。需要寻找和检索那些所有被认为可能与当前工作相关的文本。一般地,系统用户都可以定义文本集,但是仍需要一个用来过滤相关文本的系统。
      ◆ 文本分析
      与数据库中的结构化数据相比,文本具有有限的结构,或者根本就没有结构;此外文档的内容是人类所使用的自然语言,计算机很难处理其语义。文本数据源的这些特殊性使得现有的数据挖掘技术无法直接应用于其上,需要对文本进行分析,抽取代表其特征的元数据,这些特征可以用结构化的形式保存,作为文档的中间表示形式。其目的在于从文本中扫描并抽取所需要的事实
      ◆ 特征修剪
      特征修剪包括横向选择和纵向投影两种方式。横向选择是指剔除噪声文档以改进挖掘精度,或者在文档数量过多时仅选取一部分样本以提高挖掘效率。纵向投影是指按照挖掘目标选取有用的特征,通过特征修剪,就可以得到代表文档集合的有效的、精简的特征子集,在此基础上可以开展各种文档挖掘工作。

    文本挖掘的关键技术
      经特征修剪之后,可以开展数据文本挖掘工作。文本挖掘工作流程见图2所示。从目前文本挖掘技术的研究和应用状况来看,从语义的角度来实现文本挖掘的还很少,目前研究和应用最多的几种文本挖掘技术有:文档聚类、文档分类和摘要抽取。
      ◆ 文档聚类
      首先,文档聚类可以发现与某文档相似的一批文档,帮助知识工作者发现相关知识;其次,文档聚类可以将一个文档聚类成若干个类,提供一种组织文档集合的方法;再次,文档聚类还可以生成分类器以对文档进行分类。
      文本挖掘中的聚类可用于:提供大规模文档集内容的总括;识别隐藏的文档间的相似度;减轻浏览相关、相似信息的过程。
      聚类方法通常有:层次聚类法、平面划分法、简单贝叶斯聚类法、K-最近邻参照聚类法、分级聚类法、基于概念的文本聚类等。
      ◆ 文档分类
      分类和聚类的区别在于:分类是基于已有的分类体系表的,而聚类则没有分类表,只是基于文档之间的相似度。
      由于分类体系表一般比较准确、科学地反映了某一个领域的划分情况,所以在信息系统中使用分类的方法,能够让用户手工遍历一个等级分类体系来找到自己需要的信息,达到发现知识的目的,这对于用户刚开始接触一个领域想了解其中的情况,或者用户不能够准确地表达自己的信息需求时特别有用。传统搜索引擎中目录式搜索引擎属于分类的范畴,但是许多目录式搜索引擎都采用人工分类的方法,不仅工作量巨大,而且准确度不高,大大限制了起作用的发挥。
      另外,用户在检索时往往能得到成千上万篇文档,这让他们在决定哪些是与自己需求相关时会遇到麻烦,如果系统能够将检索结果分门别类地呈现给用户,则显然会减少用户分析检索结果的工作量,这是自动分类的另一个重要应用。
      文档自动分类一般采用统计方法或机器学习来实现。常用的方法有:简单贝叶斯分类法,矩阵变换法、K-最近邻参照分类算法以及支持向量机分类方法等。
      ◆ 自动文摘
      互联网上的文本信息、机构内部的文档及数据库的内容都在成指数级的速度增长,用户在检索信息的时候,可以得到成千上万篇的返回结果,其中许多是与其信息需求无关或关系不大的,如果要剔除这些文档,则必须阅读完全文,这要求用户付出很多劳动,而且效果不好。
      自动文摘能够生成简短的关于文档内容的指示性信息,将文档的主要内容呈现给用户,以决定是否要阅读文档的原文,这样能够节省大量的浏览时间。简单地说自动文摘就是利用计算机自动地从原始文档中提取全面准确地反映该文档中心内容的简单连贯的短文。
      自动文摘具有以下特点:(1)自动文摘应能将原文的主题思想或中心内容自动提取出来。(2)文摘应具有概况性、客观性、可理解性和可读性。(3)可适用于任意领域。
      按照生成文摘的句子来源,自动文摘方法可以分成两类,一类是完全使用原文中的句子来生成文摘,另一类是可以自动生成句子来表达文档的内容。后者的功能更强大,但在实现的时候,自动生成句子是一个比较复杂的问题,经常出现产生的新句子不能被理解的情况,因此目前大多用的是抽取生成法。

    文本挖掘应用前景
      利用文本挖掘技术处理大量的文本数据,无疑将给企业带来巨大的商业价值。因此,目前对于文本挖掘的需求非常强烈,文本挖掘技术应用前景广阔。

    知识链接
      文本挖掘系统的评估办法
      评估文本挖掘系统是至关重要的,目前已有许多方法来衡量在这一领域的进展状况,几种比较公认的评估办法和标准如下:
      ◆ 分类正确率:通过计算文本样本与待分类文本的概率来得出分类正确率。
      ◆ 查准率:查准率是指正确分类的对象所占对象集的大小,
      ◆ 查全率:查全率是指集合中所含指定类别的对象数占实际目标类中对象数的比例。
      ◆ 支持度:支持度表示规则的频度。
      ◆ 置信度:置信度表示规则的强度。

    ----------------------------------------------------------------------------------------------------------------------------------------------

    案例:文本挖掘在互连网关键词分析中的应用

    沈浩老师以新浪体育国际足球新闻标题为例,生动的讲述了文本挖掘在互联网关键词分析中的应用。

     

        在数据分析技术中,文本分析的使用一直是一个较少被涉及的领域,特别是有关中文文字的文本挖掘。

    文本挖掘大致可由三部分组成:底层是文本数据挖掘的基础领域,包括机器学习、数理统计、自然语言处理;在此基础上是文本数据挖掘的基本技术,有五大类,包括文本信息抽取、文本分类、文本聚类、文本数据压缩、文本数据处理;在基本技术之上是两个主要应用领域,包括信息访问和知识发现,信息访问包括信息检索、信息浏览、信息过滤、信息报告,知识发现包括数据分析、数据预测。其中需要付出大量人力物力的是文本信息的提取及内容分类,尤其对于中文来说不同领域不同行业的关键词术语各不相同,因此,构建一个适用于不同行业的关键词库显得尤为重要。

    不过基于中文的文本挖掘也有非常多的使用,比如各大媒体的2011十大关键词盘点。比如前段时间零点E-lab研究室所绘制的中国唐诗及宋词的关键词构成,非常的有趣,将古人诗歌的高频或者说比较潮的词汇都捕捉到了。并且采用网络分析图的方法将各个关键词之间的联系清楚的展现出来,甚至部分读者能够根据该网络图自己推敲出一些经典的诗句。怎么样?能够分辨出那张图是分析唐诗的,哪张是宋词么?

    言归正传,笔者也在处理有关文本分析的内容,正好借此分享一下文本分析的方法。

    正如前文所述,中文的文本挖掘集中在关键词库的建立,在没有专门软件的帮助下,使用“人工智能”倒是一个权宜之计。而人为建立关键词库的要点就在于编码,要求编码人员对关键词有相当的经验及足够的敏感度,如是多人编码还需考虑到团队的个性差异及分工协作等要素。

    笔者选择将新浪体育网站中国际足球版面的新闻标题作为研究对象(不选国内足球的原因你懂……),希望通过文本挖掘的方法以小见大的分析发现新闻编辑的个人特点及标题撰写的“潜规则”。

    首先,笔者选择了201171日至20111220日的新闻标题作为研究对象,在这个时间段中包括了大型杯赛(美洲杯)、转会期、日常联赛等内容,应该说涵盖了足球活动中可能出现的大多数新闻报导,共有25,598条新闻标题。

    新闻大致分为三大类,即:图片、文字、视频。

    经过整理,笔者共筛选了500多个关键词,如:转会、队长、传奇、名单、大将、赞、新星、对手、训练、国脚、锋霸、点球、VS、主场、天王等等。这些关键词的筛选,笔者筛选关键词的依据主要有以下几点:

    l  与体育活动相关,可是场外或者场内

    l  属于日常用语,不能造词

    l  需要是通过词汇,即具有普适性,比如像“贝克汉姆带儿子逛街就不作为关键词,因为其他球员出现类似情况的概率很低。

    l  尽可能多的找,然后整理。比如“小小罗”C是同一个人,但是笔者将其作为两个关键词。

    废话少说,下面就晒一下对这些词的分析结果:

    概述篇下面列出三大类新闻标题的关键词排名,图片类以“庆祝“、”训练”、”进球”为代表;视频类新闻以“进球”、”破门”、”梅西”为代表,主要和球场活动有关,而与前两类有较大不同的是文字类新闻,排名靠前的分别是”梅西”、”宣布”、”首发”、”C罗”、”官方”等,包含内容较多,并且纵观整个文字新闻页面,使用的高频形容词是最多的。

    人物篇在排名前20的词汇中共出现三个人物名称:梅西”C穆帅。作为球员前两人在图片及视频中占了较大比重,而穆里尼奥是唯一跻身新闻关键词前20的教练员。

        

    技术篇在排名前20的词汇中,涉及足球比赛描述的词汇主要集中在视频中,其次是图片,而文字新闻中场外内容占了较大篇幅。

     

    写作篇那么,怎么写好新闻标题,或者怎样写出新浪体育的标题?为了解决这一问题,笔者将所有标题涉及的前100个新闻标题进行相关性的网络分析:

    经过整理后如下,怎么样,可以汇总一条新闻标题么?

    展开全文
  • 1. 这是js代码,看自己少什么加什么 <script> layui.use(['form','layedit','upload'], function(){ var layedit = layui.layedit, form = layui.form, upload = layui.upload; ...

    1. 这是js代码,看自己少什么加什么

    <script>
        layui.use(['form','layedit','upload'], function(){
            var layedit = layui.layedit,
                form = layui.form,
                upload = layui.upload;
            layedit.set({
                uploadImage: {
                    url: "{:url('subject/upload')}" //接口url
                    ,type: 'post' //默认post
                }
            });
            //建立编辑器
            var index = layedit.build('vod_content',{
                height:500,
            });
            //自定义验证规则
            form.verify({
                article_desc: function(value){
                    layedit.sync(index)
                }
            });
        });
    </script>
    

    2. 然后在到标签加上我圈的属性

    在这里插入图片描述

    3. 然后就ok了,不过相对来说layui只能提供很简单的需求,最终在解决了layui富文本的所有问题后,我使用了百度富文本…

    展开全文
  • 文本分类

    千次阅读 2018-09-07 16:56:06
    一、传统文本分类方法  文本分类问题算是自然语言处理领域中一个非常经典的问题了,相关研究最早可以追溯到上世纪50年代,当时是通过专家规则(Pattern)进行分类,甚至在80年代初一度发展到利用知识工程建立专家...

    一、传统文本分类方法 
    文本分类问题算是自然语言处理领域中一个非常经典的问题了,相关研究最早可以追溯到上世纪50年代,当时是通过专家规则(Pattern)进行分类,甚至在80年代初一度发展到利用知识工程建立专家系统,这样做的好处是短平快的解决top问题,但显然天花板非常低,不仅费时费力,覆盖的范围和准确率都非常有限。

    后来伴随着统计学习方法的发展,特别是90年代后互联网在线文本数量增长和机器学习学科的兴起,逐渐形成了一套解决大规模文本分类问题的经典玩法,这个阶段的主要套路是人工特征工程+浅层分类模型。训练文本分类器过程见下图: 
    这里写图片描述 
    整个文本分类问题就拆分成了特征工程和分类器两部分,玩机器学习的同学对此自然再熟悉不过了

    1.1 特征工程

    特征工程在机器学习中往往是最耗时耗力的,但却极其的重要。抽象来讲,机器学习问题是把数据转换成信息再提炼到知识的过程,特征是“数据–>信息”的过程,决定了结果的上限,而分类器是“信息–>知识”的过程,则是去逼近这个上限。然而特征工程不同于分类器模型,不具备很强的通用性,往往需要结合对特征任务的理解。

    文本分类问题所在的自然语言领域自然也有其特有的特征处理逻辑,传统分本分类任务大部分工作也在此处。文本特征工程分位文本预处理、特征提取、文本表示三个部分,最终目的是把文本转换成计算机可理解的格式,并封装足够用于分类的信息,即很强的特征表达能力。 
    1)文本预处理

    文本预处理过程是在文本中提取关键词表示文本的过程,中文文本处理中主要包括文本分词和去停用词两个阶段。之所以进行分词,是因为很多研究表明特征粒度为词粒度远好于字粒度,其实很好理解,因为大部分分类算法不考虑词序信息,基于字粒度显然损失了过多“n-gram”信息。

    具体到中文分词,不同于英文有天然的空格间隔,需要设计复杂的分词算法。传统算法主要有基于字符串匹配的正向/逆向/双向最大匹配;基于理解的句法和语义分析消歧;基于统计的互信息/CRF方法。近年来随着深度学习的应用,WordEmbedding + Bi-LSTM+CRF方法逐渐成为主流,本文重点在文本分类,就不展开了。而停止词是文本中一些高频的代词连词介词等对文本分类无意义的词,通常维护一个停用词表,特征提取过程中删除停用表中出现的词,本质上属于特征选择的一部分。

    经过文本分词和去停止词之后淘宝商品示例标题变成了下图“ / ”分割的一个个关键词的形式:

    夏装 / 雪纺 / 条纹 / 短袖 / t恤 / 女 / 春 / 半袖 / 衣服 / 夏天 / 中长款 / 大码 / 胖mm / 显瘦 / 上衣 / 夏 
    2)文本表示和特征提取

    文本表示:

    文本表示的目的是把文本预处理后的转换成计算机可理解的方式,是决定文本分类质量最重要的部分。传统做法常用词袋模型(BOW, Bag Of Words)或向量空间模型(Vector Space Model),最大的不足是忽略文本上下文关系,每个词之间彼此独立,并且无法表征语义信息。词袋模型的示例如下:

     ( 0, 0, 0, 0, .... , 1, ... 0, 0, 0, 0)
    
    • 1
    • 2

    一般来说词库量至少都是百万级别,因此词袋模型有个两个最大的问题:高纬度、高稀疏性。词袋模型是向量空间模型的基础,因此向量空间模型通过特征项选择降低维度,通过特征权重计算增加稠密性。 
    特征提取: 
    向量空间模型的文本表示方法的特征提取对应特征项的选择和特征权重计算两部分。特征选择的基本思路是根据某个评价指标独立的对原始特征项(词项)进行评分排序,从中选择得分最高的一些特征项,过滤掉其余的特征项。常用的评价有文档频率、互信息、信息增益、χ²统计量等。 
    特征权重主要是经典的TF-IDF方法及其扩展方法,主要思路是一个词的重要度与在类别内的词频成正比,与所有类别出现的次数成反比。 
    3)基于语义的文本表示 
    传统做法在文本表示方面除了向量空间模型,还有基于语义的文本表示方法,比如LDA主题模型、LSI/PLSI概率潜在语义索引等方法,一般认为这些方法得到的文本表示可以认为文档的深层表示,而word embedding文本分布式表示方法则是深度学习方法的重要基础,下文会展现。 
    1.2 分类器 
    分类器基本都是统计分类方法了,基本上大部分机器学习方法都在文本分类领域有所应用,比如朴素贝叶斯分类算法(Naïve Bayes)、KNN、SVM、最大熵和神经网络等等,传统分类模型不是本文重点,在这里就不展开了。 
    二、深度学习文本分类方法 
    上文介绍了传统的文本分类做法,传统做法主要问题的文本表示是高纬度高稀疏的,特征表达能力很弱,而且神经网络很不擅长对此类数据的处理;此外需要人工进行特征工程,成本很高。而深度学习最初在之所以图像和语音取得巨大成功,一个很重要的原因是图像和语音原始数据是连续和稠密的,有局部相关性。应用深度学习解决大规模文本分类问题最重要的是解决文本表示,再利用CNN/RNN等网络结构自动获取特征表达能力,去掉繁杂的人工特征工程,端到端的解决问题。接下来会分别介绍: 
    2.1 文本的分布式表示:词向量(word embedding) 
    分布式表示(Distributed Representation)其实Hinton 最早在1986年就提出了,基本思想是将每个词表达成 n 维稠密、连续的实数向量,与之相对的one-hot encoding向量空间只有一个维度是1,其余都是0。分布式表示最大的优点是具备非常powerful的特征表达能力,比如 n 维向量每维 k 个值,可以表征 n^k个概念。事实上,不管是神经网络的隐层,还是多个潜在变量的概率主题模型,都是应用分布式表示。下图是03年Bengio在 A Neural Probabilistic Language Model 的网络结构 
    这里写图片描述 
    这篇文章提出的神经网络语言模型(NNLM,Neural Probabilistic Language Model)采用的是文本分布式表示,即每个词表示为稠密的实数向量。NNLM模型的目标是构建语言模型: 
    这里写图片描述 
    词的分布式表示即词向量(word embedding)是训练语言模型的一个附加产物,即图中的Matrix C 
    尽管Hinton 86年就提出了词的分布式表示,Bengio 03年便提出了NNLM,词向量真正火起来是google Mikolov 13年发表的两篇word2vec的文章 Efficient Estimation of Word Representations in Vector Space 和 Distributed Representations of Words and Phrases and their Compositionality,更重要的是发布了简单好用的word2vec工具包,在语义维度上得到了很好的验证,极大的推进了文本分析的进程。下图是文中提出的CBOW 和 Skip-Gram两个模型的结构,基本类似于NNLM,不同的是模型去掉了非线性隐层,预测目标不同,CBOW是上下文词预测当前词,Skip-Gram则相反。 
    这里写图片描述 
    除此之外,提出了Hierarchical Softmax 和 Negative Sample两个方法,很好的解决了计算有效性,事实上这两个方法都没有严格的理论证明,有些trick之处,非常的实用主义。详细的过程不再阐述了,有兴趣深入理解word2vec的,推荐读读这篇很不错的paper:word2vec Parameter Learning Explained。额外多提一点,实际上word2vec学习的向量和真正语义还有差距,更多学到的是具备相似上下文的词,比如“good”“bad”相似度也很高,反而是文本分类任务输入有监督的语义能够学到更好的语义表示,有机会后续系统分享下。

    至此,文本的表示通过词向量的表示方式,把文本数据从高纬度高稀疏的神经网络难处理的方式,变成了类似图像、语音的的连续稠密数据。深度学习算法本身有很强的数据迁移性,很多之前在图像领域很适用的深度学习算法比如CNN等也可以很好的迁移到文本领域了,下一小节具体阐述下文本分类领域深度学习的方法。 
    2.2 深度学习文本分类模型

    词向量解决了文本表示的问题,该部分介绍的文本分类模型则是利用CNN/RNN等深度学习网络及其变体解决自动特征提取(即特征表达)的问题。

    1)fastText

    fastText 是上文提到的 word2vec 作者 Mikolov 转战 Facebook 后16年7月刚发表的一篇论文 Bag of Tricks for Efficient Text Classification。把 fastText 放在此处并非因为它是文本分类的主流做法,而是它极致简单,模型图见下:

    这里写图片描述 
    原理是把句子中所有的词向量进行平均(某种意义上可以理解为只有一个avg pooling特殊CNN),然后直接接 softmax 层。其实文章也加入了一些 n-gram 特征的 trick 来捕获局部序列信息。文章倒没太多信息量,算是“水文”吧,带来的思考是文本分类问题是有一些“线性”问题的部分,也就是说不必做过多的非线性转换、特征组合即可捕获很多分类信息,因此有些任务即便简单的模型便可以搞定了。 
    2)TextCNN 
    本篇文章的题图选用的就是14年这篇文章提出的TextCNN的结构(见下图)。fastText 中的网络结果是完全没有考虑词序信息的,而它用的 n-gram 特征 trick 恰恰说明了局部序列信息的重要意义。卷积神经网络(CNN Convolutional Neural Network)最初在图像领域取得了巨大成功,CNN原理就不讲了,核心点在于可以捕捉局部相关性,具体到文本分类任务中可以利用CNN来提取句子中类似 n-gram 的关键信息。 
    这里写图片描述 
    TextCNN的详细过程原理图见下: 
    这里写图片描述 
    TextCNN详细过程:第一层是图中最左边的7乘5的句子矩阵,每行是词向量,维度=5,这个可以类比为图像中的原始像素点了。然后经过有 filter_size=(2,3,4) 的一维卷积层,每个filter_size 有两个输出 channel。第三层是一个1-max pooling层,这样不同长度句子经过pooling层之后都能变成定长的表示了,最后接一层全连接的 softmax 层,输出每个类别的概率。

    特征:这里的特征就是词向量,有静态(static)和非静态(non-static)方式。static方式采用比如word2vec预训练的词向量,训练过程不更新词向量,实质上属于迁移学习了,特别是数据量比较小的情况下,采用静态的词向量往往效果不错。non-static则是在训练过程中更新词向量。推荐的方式是 non-static 中的 fine-tunning方式,它是以预训练(pre-train)的word2vec向量初始化词向量,训练过程中调整词向量,能加速收敛,当然如果有充足的训练数据和资源,直接随机初始化词向量效果也是可以的。

    通道(Channels):图像中可以利用 (R, G, B) 作为不同channel,而文本的输入的channel通常是不同方式的embedding方式(比如 word2vec或Glove),实践中也有利用静态词向量和fine-tunning词向量作为不同channel的做法。

    一维卷积(conv-1d):图像是二维数据,经过词向量表达的文本为一维数据,因此在TextCNN卷积用的是一维卷积。一维卷积带来的问题是需要设计通过不同 filter_size 的 filter 获取不同宽度的视野。

    Pooling层:利用CNN解决文本分类问题的文章还是很多的,比如这篇 A Convolutional Neural Network for Modelling Sentences 最有意思的输入是在 pooling 改成 (dynamic) k-max pooling ,pooling阶段保留 k 个最大的信息,保留了全局的序列信息。比如在情感分析场景,举个例子:

    “ 我觉得这个地方景色还不错,但是人也实在太多了 ” 
    虽然前半部分体现情感是正向的,全局文本表达的是偏负面的情感,利用 k-max pooling能够很好捕捉这类信息。 
    3)TextRNN

    尽管TextCNN能够在很多任务里面能有不错的表现,但CNN有个最大问题是固定 filter_size 的视野,一方面无法建模更长的序列信息,另一方面 filter_size 的超参调节也很繁琐。CNN本质是做文本的特征表达工作,而自然语言处理中更常用的是递归神经网络(RNN, Recurrent Neural Network),能够更好的表达上下文信息。具体在文本分类任务中,Bi-directional RNN(实际使用的是双向LSTM)从某种意义上可以理解为可以捕获变长且双向的的 “n-gram” 信息。

    RNN算是在自然语言处理领域非常一个标配网络了,在序列标注/命名体识别/seq2seq模型等很多场景都有应用,Recurrent Neural Network for Text Classification with Multi-Task Learning文中介绍了RNN用于分类问题的设计,下图LSTM用于网络结构原理示意图,示例中的是利用最后一个词的结果直接接全连接层softmax输出了 
    这里写图片描述 
    4)TextRNN + Attention

    CNN和RNN用在文本分类任务中尽管效果显著,但都有一个不足的地方就是不够直观,可解释性不好,特别是在分析badcase时候感受尤其深刻。而注意力(Attention)机制是自然语言处理领域一个常用的建模长时间记忆机制,能够很直观的给出每个词对结果的贡献,基本成了Seq2Seq模型的标配了。实际上文本分类从某种意义上也可以理解为一种特殊的Seq2Seq,所以考虑把Attention机制引入近来,研究了下学术界果然有类似做法。

    Attention机制介绍: 
    这里写图片描述
    这里写图片描述 
    Attention的核心point是在翻译每个目标词(或 预测商品标题文本所属类别)所用的上下文是不同的,这样的考虑显然是更合理的。 
    TextRNN + Attention 模型:

    我们参考了这篇文章 Hierarchical Attention Networks for Document Classification,下图是模型的网络结构图,它一方面用层次化的结构保留了文档的结构,另一方面在word-level和sentence-level。淘宝标题场景只需要 word-level 这一层的 Attention 即可。 
    这里写图片描述 
    加入Attention之后最大的好处自然是能够直观的解释各个句子和词对分类类别的重要性。

    5)TextRCNN(TextRNN + CNN) 
    我们参考的是中科院15年发表在AAAI上的这篇文章 Recurrent Convolutional Neural Networks for Text Classification 的结构: 
    这里写图片描述 
    利用前向和后向RNN得到每个词的前向和后向上下文的表示: 
    这里写图片描述 
    这样词的表示就变成词向量和前向后向上下文向量concat起来的形式了,即: 
    这里写图片描述 
    最后再接跟TextCNN相同卷积层,pooling层即可,唯一不同的是卷积层 filter_size = 1就可以了,不再需要更大 filter_size 获得更大视野,这里词的表示也可以只用双向RNN输出。 
    三、一点经验 
    理论和实践之间的Gap往往差异巨大,学术paper更关注的是模型架构设计的新颖性等,更重要的是新的思路;而实践最重要的是在落地场景的效果,关注的点和方法都不一样。这部分简单梳理实际做项目过程中的一点经验教训。

    模型显然并不是最重要的:不能否认,好的模型设计对拿到好结果的至关重要,也更是学术关注热点。但实际使用中,模型的工作量占的时间其实相对比较少。虽然再第二部分介绍了5种CNN/RNN及其变体的模型,实际中文本分类任务单纯用CNN已经足以取得很不错的结果了,我们的实验测试RCNN对准确率提升大约1%,并不是十分的显著。最佳实践是先用TextCNN模型把整体任务效果调试到最好,再尝试改进模型。

    理解你的数据:虽然应用深度学习有一个很大的优势是不再需要繁琐低效的人工特征工程,然而如果你只是把他当做一个黑盒,难免会经常怀疑人生。一定要理解你的数据,记住无论传统方法还是深度学习方法,数据 sense 始终非常重要。要重视 badcase 分析,明白你的数据是否适合,为什么对为什么错。

    关注迭代质量 - 记录和分析你的每次实验:迭代速度是决定算法项目成败的关键,学过概率的同学都很容易认同。而算法项目重要的不只是迭代速度,一定要关注迭代质量。如果你没有搭建一个快速实验分析的套路,迭代速度再快也只会替你公司心疼宝贵的计算资源。建议记录每次实验,实验分析至少回答这三个问题:为什么要实验?结论是什么?下一步怎么实验?

    超参调节:超参调节是各位调参工程师的日常了,推荐一篇文本分类实践的论文 A Sensitivity Analysis of (and Practitioners’ Guide to) Convolutional Neural Networks for Sentence Classification,里面贴了一些超参的对比实验,如果你刚开始启动文本分析任务,不妨按文章的结果设置超参,怎么最快的得到超参调节其实是一个非常重要的问题.

    一定要用 dropout:有两种情况可以不用:数据量特别小,或者你用了更好的正则方法,比如bn。实际中我们尝试了不同参数的dropout,最好的还是0.5,所以如果你的计算资源很有限,默认0.5是一个很好的选择。

    Fine-tuning 是必选的:上文聊到了,如果只是使用word2vec训练的词向量作为特征表示,我赌你一定会损失很大的效果。

    未必一定要 softmax loss: 这取决与你的数据,如果你的任务是多个类别间非互斥,可以试试着训练多个二分类器,也就是把问题定义为multi lable 而非 multi class,我们调整后准确率还是增加了>1%。

    类目不均衡问题:基本是一个在很多场景都验证过的结论:如果你的loss被一部分类别dominate,对总体而言大多是负向的。建议可以尝试类似 booststrap 方法调整 loss 中样本权重方式解决。

    避免训练震荡:默认一定要增加随机采样因素尽可能使得数据分布iid,默认shuffle机制能使得训练结果更稳定。如果训练模型仍然很震荡,可以考虑调整学习率或 mini_batch_size。

    转自https://blog.csdn.net/ch1209498273/article/details/78452452

    展开全文
  • 下载ueditor 这个直接在git上拉取,网站下载速度太慢 ...安装依赖 npm install 安装依赖(如果没有安装 grunt , 请先在全局安装 grunt) 在终端执行 grunt default 会在目录生成一个dist 使用这个就可以 ...

    在这里插入图片描述

    下载ueditor

    这个直接在git上拉取,网站下载速度太慢
    https://github.com/fex-team/ueditor

    安装依赖

    npm install 安装依赖(如果没有安装 grunt , 请先在全局安装 grunt)

    在终端执行 grunt default

    在这里插入图片描述

    会在目录生成一个dist

    使用这个就可以
    在这里插入图片描述

    TP5.1配置

    在这里插入图片描述

    把刚刚生成的dist/utf-8下的所有内容都放在public下的ueditor

    在这里插入图片描述

    然后在需要编辑器的地方引入俩个js即可

    在这里插入图片描述

    展现效果

    在这里插入图片描述

    对富文本进行配置

    里边你需要的配置
    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • 二进制文件、文本文件

    千次阅读 2018-08-11 14:19:21
    二进制文件和文本文件都是按照二进制存储的,只不过文本文件是把一个字节一个字节解读成字符,而二进制文件可以任意定义解读方式。 在windows上,用记事本就可以打开文本文件了,但要打开二进制文件需要对应的二...
  • 文本特征提取

    万次阅读 2019-03-06 07:23:18
    在自然语言处理中我们把文本数据变成向量数据,在向量数据中我们可以得到很多来自于文本数据当中的语言特性,这种方式叫做文本表示或文本特征构造。 文本特征的通用信息源 文本分类问题当中的对象 词:在英文文本...
  • 文本分类概述(nlp)

    万次阅读 多人点赞 2018-11-25 19:04:02
    文本分类问题:给定文档p(可能含有标题t),将文档分类为n个类别中的一个或多个 文本分类应用:常见的有垃圾邮件识别,情感分析 文本分类方向:主要有二分类,多分类,多标签分类 文本分类方法:传统机器学习...
  • 什么是文本

    千次阅读 2019-04-17 23:16:16
    计算机通过信息与数字的关系来...文本是一种字符与数字之间简单的一对一映射,它非常紧凑,由50个字符构成的文本在转换为数据时候也是50个字符。 区别:压缩后的视频文件、doc文档(含有描述结构和非文本的元素) ...
  • 文本格式数据的读写—Pandas的解析函数 一、pandas的解析函数 1、函数列表说明 函数 描述 read_csv 从文件、URL或文件型对象读取分隔好的数据,逗号是默认分隔符 read_table 从文件、URL或文件...
  • ​BrApps企业级低代码开发平台基于拖拽式的开发方式,提供丰富的服务组件来满足企业数字化应用的设计、构建、集成、部署和管理,赋能各团队来帮助他们构建全场景的数字化应用。 本文会以一个应用创建实例为大家...
  • 一、绝对定位 如果想为元素设置层模型中的绝对定位,需要设置position:absolute(表示绝对定位),这条语句的作用将元素从文档流中拖出来,然后使用left、right、top、bottom属性相对于其最接近的一个具有定位属性的...
  • 层模型--固定定位

    2016-07-30 20:43:53
    若要想把一个框固定在一个位置,不随着滑块的移动而改变在此界面中的位置,就要用position:fixed relative样式 #div1{ width:200px; height:200px; border:2px red solid;... 文本文本
  • 【Html】层模型--固定定位

    千次阅读 2015-12-10 04:59:37
    fixed:表示固定定位,与absolute定位类型类似,但它的相对移动的坐标是视图(屏幕内的网页窗口)本身。由于视图本身是固定的,它不会随浏览器窗口的滚动条滚动而变化,除非你在屏幕中移动浏览器窗口的屏幕位置,或...
  • position属性的3种可能情况分别是absolute、relative&fixed (1)absolute 绝对定位 div{ width:200px; height:200px; border:2px red solid; position:absolute; top:20px; right:100px;...(2)r
  • jquery 禁用/启用滚动条 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" ...meta name=
  • fixed:表示固定定位,与absolute定位类型类似,但它的相对移动的坐标是视图(屏幕内的网页窗口)本身。 由于视图本身是固定的,它不会随浏览器窗口的滚动条滚动而变化,除非你在屏幕中移动浏览器窗口的屏幕位置,...
  • CSS布局模型(三)——层模型

    千次阅读 2015-02-07 17:31:42
    什么是层模型? 什么是层布局模型?层布局模型就像是图像软件PhotoShop中非常流行的图层编辑功能一样,每个图层能够精确定位操作,但在网页设计领域,由于网页大小的活动性,层布局没能受到热捧。...
  • CSS布局模型

    2019-07-28 04:57:32
    CSS布局模型 CSS模型与盒子模型一样都是CSS最基本、最核心的概念。但是布局模型是建立在盒子模型基础上,又不同我们常说的CSS布局或者CSS布局模板。如果说布局模型是本,那么CSS布局就是末了,是外在的表型形式。...
  • 说明 顾名思义,语义化标签是带有自身意义的标签,在HTML 5...(即使我们用css样式的id和class形容这块内容的意义)。这些标签只是我们提供给浏览器的指令,只是定义一个网页的某些部分。... 语义化结构标签 ...section...
1 2 3 4 5 ... 20
收藏数 2,446,206
精华内容 978,482
关键字:

文本