导航:首页 > 编程语言 > java文本分类词向量

java文本分类词向量

发布时间:2023-04-26 13:56:14

⑴ 短文本分类概述

​ 随着信息技术的发展,最稀缺的资源不再是信息本身,而是对信息的处理能力。且绝大多数信息表现为文本形式,如何在如此大量且复杂的文本信息中如何获取最有效的信息是信息处理的一大目标。文本分类可以镇物帮助用户准确定位所需信息和分流信息。同时,互联网的快速发展催生了大量的书评影评、网络聊天、产品介绍等形式的短文本,其包含大量有价值的隐含信息,迫切需要自动化工具对短文本进行分类处理。

​ 基于人工智能技术的文本分类系统依据文本的语义可实现将大量文本自动分类。多种统计理论和机器学习方法被用于文本自动分类。但其存在最大的问题是特征空间的高维性和文档表示向量的稀疏性。中文词条的总数高达二十多万,如此高维特征空间对所有的算法都是偏大的。亟需一种有效的特征抽取方法,降低特征空间的维数,提高分类的效率和精度。

​ 文本分类方法主要分为两大类,分别是基于传统机器学习的方法和基于深度学习的方法。基于传统机器学习的文本分类方法主要是是对文本进行预处理、特征提取,然后将处理后的文本向量化,最后通过常见的机器学习分类算法来对训练数据集进行建模,传统的文本分类方法中,对文本的特征提取质量对文本分类的精度有很大的影响。基于深度学习的方法则是通过例如CNN等深度学习模型来对数据进行训练,无需人工的对数据进行特征抽取,对文本分类精度影响更多的是数据量以及训练的迭代次数。

​ 短文本相对于长文本,词汇个数少且描述信息弱,具有稀疏性和不规范性, 传统机器学习方法的文本表示是高纬度高稀疏的,特征表达能力很弱,而且神经网络很不擅长对此类数据的处理;此外需要人工进行特征工程,成本很高,不能很好的满足短文本分类的需求。而深度学习最初在之所以图像和语音取得巨大成功,一个很重要的原因是图像和语音原始数据是连续和稠密的,有局部相关性。应用深度学习解决大规模文本分类问题最重要的是解决文本表示,再利用CNN/RNN等网络结构自动获取特征表达能力,去掉繁杂的人工特征工程。



​ 短文本分类算法广泛应用于各个行业领域,如新闻分类、人机写作判断、垃圾邮件识别、用户情感分类、文案智能生成、商品智能推荐等。

​场景一:商品智能推荐,根据用户购买的商品名称作为预测样本进行文本分类,得到用户交易类别,结合其他数据构建用户画像,针对不同特征的用户画像预测用户下一步的购买行为,智能推荐商品及服务。

​场景二:文案智能生成,基于优质文案作为训练集,得到文本分类模型,当用户输入关键词时,智能推荐适配文案。

​场景三:给新闻自动分类或打标签,多个标签。

场景四:判断文章是人写还是机器写的。

​场景五:判断影评中的情感是正向、负向、中立,相类似应用场景很广泛。

​ 使用深度学习的词向量技术,把文本数据从高纬度高稀疏的神经网络难处理的方式,变成了类似图像、语音的连续稠密数据,将词语转化为稠密向量,解决了文本表示问御闭液题。词向量作为机器学习、深度学习模型的特征进行输入,对最终模型的效果作用比较大。

​ 同时,利用CNN/RNN等深度学习网络及其变体解决自动特征提取(即特征表达)的问题,对应的文本分类模型如下:态袜

​ 1) FastText

​ FastText是Facebook开源的词向量与文本分类工具,模型简单,训练速度快。FastText 的原理是将短文本中的所有词向量进行平均,然后直接接softmax层,同时加入一些n-gram 特征的 trick 来捕获局部序列信息。相对于其它文本分类模型,如SVM,Logistic Regression和Neural Network等模型,FastText在保持分类效果的同时,大大缩短了训练时间,同时支持多语言表达,但其模型是基于词袋针对英文的文本分类方法,组成英文句子的单词是有间隔的,而应用于中文文本,需分词去标点转化为模型需要的数据格式。

​ 2)TextCNN

​ TextCNN相比于FastText,利用CNN (Convolutional Neural Network)来提取句子中类似 n-gram 的关键信息,且结构简单,效果好。

​ 3)TextRNN

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

4)TextRNN + Attention

CNN和RNN用在文本分类任务中尽管效果显著,但都有一个缺点,直观性和可解释性差。而注意力(Attention)机制是自然语言处理领域一个常用的建模长时间记忆机制,能够直观的给出每个词对结果的贡献,是Seq2Seq模型的标配。实际上文本分类从某种意义上也、可以理解为一种特殊的Seq2Seq,所以可以考虑将Attention机制引入。

​ Attention的核心点是在翻译每个目标词(或预测商品标题文本所属类别)所用的上下文是不同的,这样更合理。加入Attention之后能够直观的解释各个句子和词对分类类别的重要性。

5)TextRCNN(TextRNN + CNN)

​ 用前向和后向RNN得到每个词的前向和后向上下文的表示,这样词的表示就变成词向量和前向后向上下文向量concat起来的形式,最后连接TextCNN相同卷积层,pooling层即可,唯一不同的是卷积层 filter_size = 1。

​ 总结:实际应用中,CNN模型在中文文本分类中应用效果已经很不错了。研究表明,TextRCNN对准确率提升大约1%,不是十分显著。最佳实践是先用TextCNN模型把整体任务效果调试到最好,再尝试改进模型。



参考: 文本分类解决方法综述

⑵ 如何用词向量做文本分类

先确定主题,然后根据主题将属性挖掘出来。用属性的关联度作为距离,来对文本进行分类

word2vec算出的词向量怎么衡量好坏

作者:Fiberleif
链接:http://www.hu.com/question/37489735/answer/73314819
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

目前常用的衡量word embedding质量好坏的task主要分为两类:
word analogy & document classification
1.word
analogy task
假设给了一对单词 (a , b) 和一个单独的单词c,
task会找到一个单词d,使得c与d之间的关系相似于a与b之间的关系,举个简单的例子:(中国,北京)和猜含慧 日本,应该找到的单词应该是东京,因为北京是中国的首都,而东京也是日本的首都。 在给定word
embedding的前提下,task一般是通过在词向量空间寻找离(b-a+c)最近的词向量来找到d。
2.document
classification task
这是一种通过使用词向量来计算文本向量(可以老磨被用来进行文本分类的工作)的方法,为了得到文本向量,task通常采用了一种很简单的方法:取文本中所有词的词向量的平均值来代表该文本的文本向量,进而通过文本分类的准确度来反向评价训练出的词向量的质量。

对于给定的word embedding,以上的方法确实可以大致地评价词向量的质量好坏,但我们不应该局限于它们,就像楼上所言,我们应该以word embedding对于实际任务的收益为评价标准,如果脱离了实际任务,很难讲不同的word embedding谁比谁更“好”,因为word embedding更像是穗答一个解决问题所使用的工具而不是一个问题的终点。

⑷ CNN和RNN在文本分类过程中的区别整理

用CNN卷积的情况,这里面有几个关键点:
一个是文本跟图片不一样,图片有长宽岁大,然后还有深度(RGB)。对应到文本上,枣世假设文章总共N个词,每个词嵌入维度K维,那么输入是N *
K的,N可以理解为高度,K作为长度,深度为1。那么卷积的时候的特征抽取器(filter)高度h一般设置多大呢?凳雀肢
一般可以从3开始,表示捕获住trigram特征。
更多的是使用几种不同的filter(比如有高度各为2,3,5的)。 特征抽取器(filter)的长度一般设置为词向量的维度,这样保证每个filter抽取出来一个N-h+1个特征点,而不是一个平面(想想为什么)。
最重要的,在文本上work的pooling层一般是max-pooling,对每个filter应用整个序列上的max-pooling得到一个特征点(也有用k-max-pooling得到k个点),组合多个filter就能得到一系列特征,最后一个全连接层做分类。
这里为什么是max-pooling而不是min-pooling呢?一般来说,pooling后我们引入非线性是用Relu,relu对于小于0的直接就不激活了。
然后我们对比图像的深度,文本一般深度只有一个,如何增加深度以及为什么增加呢?
一般我们的词向量都是先预训练出来的,然后在一个特定任务上使用,梯度会回传回来进一步finetune,如果语料不是特别大,这个finetune过程只会对部分词进行更新,有些词就一直不动,这样在测试阶段,出现那些没finetune到的词就会有所偏差。我们可以同时使用两份词向量(相当于通道数为2,深度加深为2),一份finetune一份静态地不更新,来缓解前面提到的问题。

二)
对于RNN做文本分类,相当于把每个词作为一个时间节点,把词向量作为每个单元的输入特征,一般会组合前向以及后向来构成双向特征,计算后每个单元有个状态特征以及输出特征,文本分类一般组合每一个单元的输出特征求个平均喂给全连接层来做分类。
求平均这个操作可以替换为更通用的注意力机制,复杂度更高点,效果更好。
复杂点的模型会分层来做,句子界别的rnn然后attention,最后文档级别在前一层的基础上再rnn+attention,效果据说能更进一步提升。

⑸ NLP之文本分类

作为NLP领域最经典的使用场景之一,文本分类积累了许多的实现方法。这里我们根据是否使用深度学习方法将文本分类主要分为一下两个大类:

随着统计学习方法的发展,特别是在90年代后互联网在线文本数量增长和机器学习学科的兴起,逐渐形成了一套解决大规模文本分类问题的经典玩法,这个阶段的主要套路是人工特征工程+浅层分类模型。整个文本分类问题就拆分成了 特征工程 分类器 两部分。

这里的特征工程也就是将文本表示为计算机可以识别的、能够代表该文档特征的特征矩阵的过程。在基于传统机器学习的文本分类中,我们通常将特征工程分为 文本预处理、特征提孙扮取、文本表示 等三个部分。

文本预处理过程是提取文本中的关键词来表示文本的过程 。中文文本预处理主要包括 文本分词 去停用词 两个阶段。
文本分词 ,是因为很多研究表明特征粒度为词粒度远好于字粒度(其实很好理解,因为大部分分类算法不考虑词序信息,基于字粒度显然损失了过多“n-gram”信息)。具体到中文分词,不同于英文有天然的空格间隔,需要设计复杂的分词算法。传统分词算法主要有 基于字符串匹配的正向/逆向/双向最大匹配 基于理解的句法和语义分析消歧 基于统计的互信息/CRF方法 。近年来随着深度学习的应用, WordEmbedding + Bi-LSTM+CRF方法 逐渐成为主流,本文重点在文本分类,就不展开了。
停止词 文本中一些高频的代词、连词、介词等对文本分类无意义的词 ,通常维护一个停用余凯高词表,特征提取过程中删除停用表中出现的词,本质上属于特征选择的一部分。

特征提取包括 特征选择 特征权重计算 两部分。
特征选择的基本思路 根据某个评竖尺价指标独立的对原始特征项(词项)进行评分排序,从中选择得分最高的一些特征项,过滤掉其余的特征项 。常用的评价有:文档频率、互信息、信息增益、χ²统计量等。
特征权重计算 主要是经典的TF-IDF方法及其扩展方法。 TF-IDF的主要思想 一个词的重要度与在类别内的词频成正比,与所有类别出现的次数成反比

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

大部分机器学习方法都在文本分类领域有所应用,比如朴素贝叶斯分类算法(Naïve Bayes)、KNN、SVM、最大熵和神经网络等等。

FastText 是Facebook AI Research在16年开源的一种文本分类器。 其 特点 就是 fast 。相对于其它文本分类模型,如 SVM Logistic Regression 等模型,fastText能够在保持分类效果的同时,大大缩短了训练时间。

FastText方法包含三部分, 模型架构 层次SoftMax N-gram特征

FastText模型架构和 Word2Vec 中的 CBOW 模型很类似,因为它们的作者都是Facebook的科学家Tomas Mikolov。不同之处在于,FastText 预测标签 ,而CBOW 模型 预测中间词

TextCNN 是利用卷积神经网络对文本进行分类的算法,它是由 Yoon Kim 在2014年在 “ Convolutional Neural Networks for Sentence Classification ” 一文中提出的。详细的原理图如下。

特征 :这里的特征就是词向量,有 静态(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 个最大的信息,保留了全局的序列信息。

参考文献

⑹ 短文本分类 (一): 构建词向量

我的目标是利用tenserflow得到一个可以对新闻标题进行准确分类的分类器。

首先我需要有新闻标题的原始数据,因此我从今日头条抓取了近十万条新闻标题用于接下来的训练工作。

得到原始标题数据后,我需要对其进行分词构建语料库,分词我使用 jieba 这个第三方库。

之后要通过语料库用Word2vec算法对分词进行训练,这里我使用 gensim 的 word2vec 。

梳理下准备条件:

我抓取的数据存放在MYSQL,因此我将查询出标题进皮陆行分词后写入语料文件: yuliao.txt 。

虽然 jieba 分词已经很不错了,但是对于某些热门前乎新词和人名等还是不够准确,所以有必要自定义一些词汇提供给 jieba 。

我在 user_dict.txt 中定义了一燃悔顷些 jieba 没有正确分出来的词:

然后加载到我们的程序中:

执行 load_data 方法便会生成语料文件。

导入 gensim ,加载我们的语料文件,开始训练模型:

训练好模型保存为文件,下次可以直接从文件导入,不必再进行训练。

我们看下模型的效果,运行 print_most_similar 测试方法,输出:

效果还可以,如果语料再多一点会更好。

训练好的模型相近意思的词在向量空间中的位置也是相似的,这样我们依据词向量做分类训练,本质上是将相近意思的句子归类。

当然最终我们要得到某个词的向量表示形式:

⑺ 利用神经网络进行文本分类算法综述(持续更新中)

传统的文本分类一般都是使用词袋模型/Tf-idf作为特征+机器学习分类器来进行分类的。随着深度学习的发展,越来越多的神经网络模型被用来进行文本分类。本文将对这些神薯漏虚经网络模型做一个简单的介绍。

本文介绍了一种词向量模型,虽然算不得文本分类模型,但由于其可以说是fasttext的基础。因此也简单提一下。

作者认为cbow和skipgram及大部分词向量模型都没有考虑到单词的多态性,而简单的将一个单词的多种形态视为独立的单词。例如like的不同形式有likes,liking,liked,likes,这些单词的意思其实是相同的,但cbow/skipgram模型却认为这些单词是各自独立的,没有考虑到其形态多样性。

因此作者提出了一个可以有效利用单词字符级别信息的n-gram词向量模型,该模型是以skipgram模式实现的。例如单词 where,其n-gram表示为<wh, whe, her, ere, re>, where。其中<>分别表示前后缀。在原始的skipgram模型中,输入仅仅只是where的onehot向量,而在此模型中输入则变成了<wh, whe, her, ere, re>, where的onehot编码的加和,有效的利用了字符级别的信息,因此效果更加好。

而在loss方面,文中采用了负采样+binary LogisticRegression的策略。即对每一个目标单词都预测为正负中的一种。

在本文中作者提供了一数燃个基于神经网络的文本分类模型,这个模型是基于cbow的,与cbow非常类似。

和CBOW一样,fastText模型也只有三层:输入层、隐含层、输出层(Hierarchical Softmax),输入都是多个经向量表示的单词,输出都是一个特定的target,隐含层都是对多个词向量的叠加平均。不同的是,CBOW的输入是目标单词的上下文,fastText的输入是多个单词及其n-gram特征的embeding表示方式,这些特征用来表示单个文档;CBOW的输入单词被onehot编码过,fastText的输入特征是被embedding过;CBOW的输出是目标词汇,fastText的输出是文档对应的类标。输出层的实现同样使用了层次softmax,当然如果自己实现的话,对于类别数不是很多的任务,个人认为是可以直接使用softmax的。

最后,贴一个Keras的模型fasttext简化版。

基于词向量表示,本文提出利用卷积神经网络来进行文本分类。其算法如上图所示:

在本文中,作者尝试了多种不同的词向量模式:

在上一篇文章中CNN网络的输入一般是预训练好的词向量,而在本文中作者提出一种直接将embedding训练与分类任务结合在一起,且能有效提取/保留词序信息,也即有效训练出n-gram的模型方法,其实也可以理解为一种利用CNN来进行embedding的搜碰方法。

此外,另一个问题是输入序列长度变化问题(在上一篇文章textCNN中通过padding解决的?),在本文作者提出使用一个动态可变的pooling层来解决这个问题,使得卷积层输出的大小是相同的。关于可变pooling其实与图像识别中的 空间金字塔池化 (Spatial Pyramid Pooling) 是类似的。

这篇文章有点将fastText与TextCNN结合在一起的感觉,将n-gram embedding与分类任务结合在了一起进行训练,通过CNN来进行Embedding。

Text Categorization via Region Embedding》

在本篇文章中作者提出了一个tv-embedding(即two-view embedding),它也属于region embedding(也可以理解为ngram embedding)。这种方法与上面的bow-CNN表示相似,使用bow(bag of words)的方式来表示一个区域的词句,然后通过某个区域(region,左右邻域的单词或词句)来预测其前后的区域(单词或词句),即输入区域是view1,target区域是view2。tv-embedding是单独训练的,在使用的时候与CNN中的embedding组合在一起(形成多个channel?)。作者认为,word2vec方法预训练得到的embedding向量是普适性的,而通过特定任务的数据集的训练得到tv-embedding具有任务相关的一些信息,更有利于提升我们的模型效果。

吐槽一下,这篇文章没太看懂,也可能是英语太差,作者文章中没有那种一眼就能让人理解的网络图,像textCNN的图就非常一目了然,看图就知道是怎么做的了。

本文提出了一个使用监督学习加半监督预训练的基于LSTM的文本分类模型。文章作者与上面相同,所以用到的很多技术可以说与上面也是同出一辙。因此简单说下本文的一些思路。

作者认为已有的直接使用LSTM作为文本分类模型并直接将LSTM的最后一个输出作为后续全连接分类器的方法面临两个问题:(1)这种方式一般都是与word embedding整合在一起(即输入onehot经过一个embedding层再进入LSTM),但是embedding训练不稳定,不好训练;(2)直接使用LSTM最后一个输出来表示整个文档不准确,一般来说LSTM输入中后面的单词会在最后输出中占有较重的权重,但是这对于文章表示来说并不总是对的。因此作者对这两点进行了改进:

本文其实可以看作是作者将自己前面的tv-embedding半监督训练与RCNN的一个融合吧,大有一种一顿操作猛如虎,一看人头0-5的感觉(因为作者的实验结果跟一般的CNN相比其实也抢不了多少)。

本文的作者也是前面两篇使用CNN来进行文本分类处理的文章的作者。因此在本文中,结合了前面两篇文章提出的一些方法,并使用了一个深层的卷积神经网络。具体的细节包括:

更多详细的关于DPCNN的细节可以查看 从DPCNN出发,撩一下深层word-level文本分类模型 。

本文提出了一种基于CNN+Attention的文本分类模型。作者认为已有的基于CNN的文本分类模型大都使用的是固定大小的卷积核,因此其学习到的表示也是固定的n-gram表示,这个n与CNN filter大小相关。但是在进行句子的语义表示时,不同句子发挥重要作用的ngram词语常常是不同的,也即是变化的。因此,模型能根据句子来自适应的选择每个句子最佳的n-gram对于提升模型的语义表示能力是非常关键的。本文便是由此思路提出了一种自适应的来选择不同n-gram表示的模型。

本文模型在主题结构上参照了CV中的DenseNet,借由DenseNet中的稠密连接来提取到丰富的n-gram特征表示。举例来说,在layer3的特征不仅能学习到f(x1, x2, x3),还能学习到f(x1(x2,x3))这种更多层次,更加丰富的特征。网络的结构主要包括三部分:DenseCNN主网络,Attention mole和最后的全连接层分类网络。下面对这三部分进行简单的说明:

本文通过Dense connection + Attention来自动获取对于文本语义最重要的n-gram特征,结果很好。但是缺点是,这个网络比较适合较短的文本,文中对输入文本进行了padding补齐,对于不同数据集最大长度分别为50,100等,但这对于较长的文本明显是不足的。因此对于较长的文本或许HAN这种借用RNN来不限制输入长短的网络会更好。

本文提出了一种结合循环神经网络(RNN)和卷积神经网络来进行文本分类的方法,其结构如上图所示,该网络可以分为三部分:

虽然说是RNN与CNN的结合,但是其实只用到了CNN中的pooling,多少有一点噱头的意思。文中还提到了RCNN为什么比CNN效果好的原因,即为什么RCNN能比CNN更好的捕捉到上下文信息:CNN使用了固定大小window(也即kernel size)来提取上下文信息,其实就是一个n-gram。因此CNN的表现很大程度上受window大小的影响,太小了会丢失一些长距离信息,太大了又会导致稀疏性问题,而且会增加计算量。

在众多自然语言处理任务中,一个非常突出的问题就是训练数据不足,且标注难度大。因此文本提出了一种多任务共享的RNN模型框架,其使用多个不同任务数据集来训练同一个模型共享参数,已达到扩充数据集的作用。

文中作者提出了三个模型,如上图所示:

三个模型的训练方式相同:

本文提出了一个层次LSTM+Attention模型。作者认为,虽然一篇文章有多个句子组成但真正其关键作用的可能是其中的某几个,因此对各个句子施加了注意力机制,以使得对文章语义贡献较多的句子占有更多的权重。同样的,组成一个句子的单词有多个,但是发挥重要作用的可能就那么几个,因此使用注意力机制以使得重要单词发挥更大的作用,这些便是本文的核心思想。整个网络可分为三层,两个LSTM层分别用来进行word encode和sentence encode,最顶上为一个全连接分类层。若加上两层注意力层,则可认为网络为5层。下面简单聊聊这五层网络的结构:

总体来说,本文看起来还是比较有意思的,符合人阅读文章的习惯,我们写文章的时候也是有中心词和中心句的。但是由于这个层级结构是否会导致训练慢或者不好训练还不得而知。最后,文中还提出对文章按长短先进行排序,长度相似的进入一个batch,这将训练速度加快了3倍。

本文提出了一个基于图神经网络的文本分类方法。该方法的主要思想是将所有文章及其包含的词汇都放到一个图网络里面去,图网络中的节点分为两种类型:单词节点和文章节点。其中连接单词节点和文章节点的边的权重使用TF-IDF来表示,而单词与单词之间边的权重则是使用点互信息(PMI)来表示。点互信息与传统语言模型中的条件概率计算方式非常相似。只不过PMI采用的是滑窗方式而条件概率是直接在所有语料中进行统计,可以认为是将所有语料当做一个大窗口,这时就又与PMI相同了。

A表示图网络的邻接矩阵,表示如下:

GCN同样也是可以含有多层隐藏层的,其各个层的计算方式如下:

其中A'为归一化对称邻接矩阵, W0 ∈ R^(m×k) 为权重矩阵,ρ是激活函数,例如 ReLU ρ(x) = max(0,x) 如前所述,可以通过叠加多个GCN层来合并更高阶的邻域信息:

其中j表示层数。
损失函数定义为所有已标记文档的交叉熵误差:

文中提到Text GCN运行良好的原因有两个方面:

但是其也有一些缺:

总的来说,文章的idea还是挺有意思的,效果也还不错。初识GCN可能还是有一点难以理解,可以参考如下资料进行进一步学习:
基于图卷积网络的文本分类算法
如何理解 Graph Convolutional Network(GCN)?

⑻ 文本分类-FastText

一、预处理过程
①文本分字或分词
②构建字/词春枯表
③每个文本的字/词表示为One_hotRepresentation词向量形式,每个文本表示为矩阵。

二、 模型介绍及核心思想

三、 模型架构

例如:
我 来到 达观数据 参观
相应的bigram特征为:我/来到 来到/达观数据 达观数消森档据/参观
相应的trigram特征为:我/来到/达观数据 来到/达观数据/参观

例如:如[[4],[20]]->[[0.25,0.1],[0.6,-0.2]]。其中[4,20]表示“大家好”这个短文本,其中“大家”、“好”在词汇表中的索引分别是4、20。然后经过变换后就变成了[0.25,0.1]、[0.6,-0.2]。

③处理过程理解:
可以理解为先把词汇索引转为One_hot Representation词向量,然后再将One-Hot Encoder转化为Distributed Representation词向量形式(低维度的稠密向量),其中w为权值矩阵。

叠加构成这篇文档的所有词及n-gram的词向量,然后取平均。激活函数采用线性函拿乱数。

标准的Softmax回归中,要计算y=j时的Softmax概率:P(y=j),我们需要对所有的K个概率做归一化,这在|y|很大时非常耗时。而分层Softmax它的基本思想是使用树的层级结构替代扁平化的标准Softmax,使得在计算P(y=j) 时,只需计算一条路径上的所有节点的概率值,无需在意其它的节点。

下图是一个分层Softmax示例(假设有k个类别):

其中yj为P(y=j),树的结构是根据类标的频数构造的霍夫曼树。

于是,从根节点走到叶子节点 ,实际上是在做了3次二分类的逻辑回归。通过分层的Softmax,计算复杂度一下从|K|降低到log|K|。

4、模型优缺点

① fastText的分类效果常常不输于传统的非线性分类器

例如:
假设我们有两段文本:
文本一:我 来到 达观数据
文本二:俺 去了 达而观信息科技

这两段文本意思几乎一模一样,如果要分类,肯定要分到同一个类中去。但在传统的分类器中,用来表征这两段文本的向量可能差距非常大。传统的文本分类中,你需要计算出每个词的权重,比如tf-idf值, “我”和“俺” 算出的tf-idf值相差可能会比较大,于是,VSM(向量空间模型)中用来表征这两段文本的文本向量差别可能比较大。而fastText是用单词的embedding叠加获得的文档向量,词向量的重要特点就是向量的距离可以用来衡量单词间的语义相似程度,于是,在fastText模型中,这两段文本的向量应该是非常相似的,于是,它们很大概率会被分到同一个类中。

② 训练速度很快

fastText原理及实践
keras:Embedding层详解
word2vec 中的数学原理详解
史上最全词向量讲解(LSA/word2vec/Glove/FastText/ELMo/BERT)
自然语言处理 | FastText:快速的文本分类器

⑼ PaddlePaddle中文文本分类实践

当我有个文本文件,里面的内容

那么我现在想做的是通过文本分类的model。得到我输入龋齿,告诉我应该到哪个科室的效果。

做的过程的如下:

我使用的方法是调用nlp..com上的词法分析接口。
分出来词之后,去重形成词典。

根据上面的词典,调用词向量表示的接口,构造词表,但是过程中可能发现某些词调用的时候,获取不到向量。
建议的做法是分词的时候分的详细一点。

paddlepaddle提供的文本分类的模型,要进行适中仿当的修改,才可以接受自己定义的数据,词典和词表。
官网的model
这个model里面,写的是支持自定义的数据集。但是实际探索的过程中,总结一下更具体的用法。

格式应该是

这里要特别注意的就是分类和内容之间,一定是\t分隔的。
并且内容里面,要先分好词。当然如果是英文的训练数据,就不卖陪纤用先走分词这步了。
等待训练的数据,要放到一个路径中。

word词典,model可以根据训练数据构建
词频大于5的。会被加到word_dict里,后面是词频。

lable词典,model也是可以自动构建的

要注意的是word_dict里面别忘记第一行加<UNK>

然后就可以输入命令,开始训练了

但是这个时候,会发现步骤二的词向量没有用到,并且如果训练数据量小的话,训练的效果并不好。那么自定义的词向量就登场了

词乱纳向量的文件,是二进制保存的,行是每个词的向量。用行的index表示词的id

⑽ 卷积神经网络 文本分类时,预训练word2vec的词向量

1.P(A)=1/4,P(B|A)=1/颤洞庆3,P(A|B)=1/2,可得P(AB)=1/12,P(B)=1/6
P(X=0,Y=0)=P(A非B非)=1-P(A+B)=1-[P(A)+P(B)-P(AB)]=2/茄握3
P(X=1,Y=0)=P(AB非颤嫌)=P(A)-P(AB)=1/6
P(X=0,Y=1)=P(BA非)=P(B)-P(AB)=1/12
P(X=1,Y=1)=P(AB)=1/12 联合分布就可得出.
2.E(X)=1/4,E(Y)= 1/6,E(XY)=1/12,COV(X,Y)=E(XY)-E(X)E(Y)=1/24
D(X)=E(X2)-[E(X)]2=3/16,D(Y)=E(Y2)-[E(Y)]2=5/36
ρ=COV(X,Y)=COV(X,Y)/[√D(X)√D(Y)]=1/√15

阅读全文

与java文本分类词向量相关的资料

热点内容
ps前往文件夹 浏览:694
信捷plc编程用哪个软件 浏览:939
vba导入文件 浏览:690
更新后版本英文怎么说 浏览:267
桌面云配置文件分离 浏览:505
iphone5如何升级4g网络 浏览:5
团购是在哪个app 浏览:897
打开多个word文档图片就不能显示 浏览:855
腾讯新闻怎么切换版本 浏览:269
app安装失败用不了 浏览:326
桌面文件鼠标点开会变大变小 浏览:536
手机误删系统文件开不了机 浏览:883
微信兔子甩耳朵 浏览:998
android蓝牙传文件在哪里 浏览:354
苹果6s软解是真的吗 浏览:310
c语言代码量大 浏览:874
最新网络卫星导航如何使用 浏览:425
以下哪些文件属于图像文件 浏览:774
zycommentjs 浏览:414
确认全血细胞减少看哪些数据 浏览:265

友情链接