導航:首頁 > 編程語言 > 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文本分類詞向量相關的資料

熱點內容
windows7系統共享文件 瀏覽:62
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

友情鏈接