(轉(zhuǎn)自)http://blog.csdn.net/sinat_26917383/article/details/54882554
另外相關(guān)博客:詞向量三部曲
在cips2016出來之前政供,筆者也總結(jié)過種類繁多,類似詞向量的內(nèi)容,自然語言處理︱簡述四大類文本分析中的“詞向量”(文本詞特征提炔几簟)事實(shí)證明离陶,筆者當(dāng)時(shí)所寫的基本跟CIPS2016一章中總結(jié)的類似,當(dāng)然由于入門較晚沒有CIPS2016里面說法權(quán)威衅檀,于是把CIPS2016中的內(nèi)容招刨,做一個(gè)摘錄。
CIPS2016 中文信息處理報(bào)告《第五章 語言表示與深度學(xué)習(xí)研究進(jìn)展哀军、現(xiàn)狀及趨勢》第三節(jié) 技術(shù)方法和研究現(xiàn)狀中有一些關(guān)于語言表示模型劃分的內(nèi)容P33-P35沉眶,其中:
語言表示方法大體上可以從兩個(gè)維度進(jìn)行區(qū)分。一個(gè)維度是按不同粒度進(jìn)行劃分杉适,語言具有一定的層次結(jié)構(gòu)谎倔,語言表示可以分為字、詞猿推、句子片习、篇章等不同粒度的表示。另一個(gè)維度是按表示形式進(jìn)行劃分彤守,可以分為離散表示和連續(xù)表示兩類毯侦。離散表示是將語言看成離散的符號(hào),而將語言表示為連續(xù)空間中的一個(gè)點(diǎn)具垫,包括分布式表示和分散式表示侈离。
CIPS2016 中文信息處理報(bào)告下載鏈接:http://cips-upload.bj.bcebos.com/cips2016.pdf
.
.
一、離散表示
1筝蚕、詞向量
一個(gè)詞可以表示為One-Hot 向量(一維為1 其余維為0
的向量)卦碾,也叫局部表示。離散表示的缺點(diǎn)是詞與詞之間沒有距離的概念起宽,這和事實(shí)不符洲胖。
一種改進(jìn)的方法是基于聚類的詞表示。其中一個(gè)經(jīng)典的方法是Brown 聚類算法坯沪,該算法是一種層次化的聚類算法绿映。在得到層次化結(jié)構(gòu)的詞類簇之后,我們可以用根節(jié)點(diǎn)到詞之間的路徑來表示該詞腐晾。
2叉弦、句向量
有了詞的表示之后,我們可以進(jìn)一步得到句子或篇章的表示藻糖。句子或篇章的離散表示通常采用詞袋模型淹冰、N 元模型等。
.
.
.
二巨柒、連續(xù)表示——分布式表示
這樣就可以通過共現(xiàn)矩陣的方式來進(jìn)行詞的表示樱拴,這類方法也叫分布式表示(Distributional Representations)
1柠衍、詞向量
潛在語義分析模型(Latent Semantic Analysis, LSA)、潛在狄利克雷分配模型(Latent Dirichlet Allocation晶乔,LDA)珍坊、隨機(jī)索引(random indexing)等。
2瘪弓、句向量
句子的表示方式對(duì)應(yīng)于共現(xiàn)矩陣垫蛆,另一列禽最,在LDA中句子-詞語矩陣中就是很好地句子表示方式腺怯。
.
.
.
★三、連續(xù)表示——分散式表示
另一種連續(xù)表示是分散式表示(Distributed Representations)川无,即將語言表示為稠密呛占、低維、連續(xù)的向量
1懦趋、詞向量
研究者最早發(fā)現(xiàn)學(xué)習(xí)得到詞嵌入之間存在類比關(guān)系晾虑。比如apple?apples ≈ car?cars, man?woman ≈ king – queen 等仅叫。這些方法都可以直接在大規(guī)模無標(biāo)注語料上進(jìn)行訓(xùn)練帜篇。詞嵌入的質(zhì)量也非常依賴于上下文窗口大小的選擇。通常大的上下文窗口學(xué)到的詞嵌入更反映主題信息诫咱,而小的上下文窗口學(xué)到的詞嵌入更反映詞的功能和上下文語義信息笙隙。
2、句向量
句子編碼主要研究如何有效地從詞嵌入通過不同方式的組合得到句子表示坎缭。其中竟痰,比較有代表性的方法有四種。
(1)神經(jīng)詞袋模型
簡單對(duì)文本序列中每個(gè)詞嵌入進(jìn)行平均/加總掏呼,作為整個(gè)序列的表示坏快。
這種方法的缺點(diǎn)是丟失了詞序信息。對(duì)于長文本憎夷,神經(jīng)詞袋模型比較有效莽鸿。但是對(duì)于短文本,神經(jīng)詞袋模型很難捕獲語義組合信息拾给。
(2)遞歸神經(jīng)網(wǎng)絡(luò)(Recursive Neural Network)
按照一個(gè)給定的外部拓?fù)浣Y(jié)構(gòu)(比如成分句法樹)祥得,不斷遞歸得到整個(gè)序列的表示。遞歸神經(jīng)網(wǎng)絡(luò)的一個(gè)缺點(diǎn)是需要給定一個(gè)拓?fù)浣Y(jié)構(gòu)來確定詞和詞之間的依賴關(guān)系鸣戴,因此限制其使用范圍啃沪。
(3)循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network)
將文本序列看作時(shí)間序列,不斷更新窄锅,最后得到整個(gè)序列的表示创千。
(4)卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network)
通過多個(gè)卷積層和子采樣層缰雇,最終得到一個(gè)固定長度的向量。
在上述四種基本方法的基礎(chǔ)上追驴,很多研究者綜合這些方法的優(yōu)點(diǎn)械哟,結(jié)合具體的任務(wù),已經(jīng)提出了一些更復(fù)雜的組合模型殿雪,例如雙向循環(huán)神經(jīng)網(wǎng)絡(luò)(Bi-directional Recurrent Neural Network)暇咆、長短時(shí)記憶模型(Long-Short Term Memory)等。
同時(shí)根據(jù)上面的內(nèi)容丙曙,句向量的表征在RNN爸业、CNN之間,到底哪個(gè)更好呢亏镰? 有一篇文章在這點(diǎn)上講得比較清楚扯旷,會(huì)在下面的延伸三:《NLP 模型到底選 RNN 還是 CNN?》提到索抓。
3钧忽、篇章表示
如果處理的對(duì)象是比句子更長的文本序列(比如篇章),為了降低模型復(fù)雜度逼肯,一般采用層次化的方法耸黑,先得到句子編碼,然后以句子編碼為輸入篮幢,進(jìn)一步得到篇章的表示大刊。具體的層次化可以采用以下幾種方法:
(1)層次化的卷積神經(jīng)網(wǎng)絡(luò)
即用卷積神經(jīng)網(wǎng)絡(luò)對(duì)每個(gè)句子進(jìn)行建模,然后以句子為單位再進(jìn)行一次卷積和池化操作洲拇,得到篇章表示奈揍。
(2)層次化的循環(huán)神經(jīng)網(wǎng)絡(luò)
即用循環(huán)神經(jīng)網(wǎng)絡(luò)對(duì)每個(gè)句子進(jìn)行建模,然后再用一個(gè)循環(huán)神經(jīng)網(wǎng)絡(luò)建模以句子為單位的序列赋续,得到篇章表示男翰。
(3)混合模型
先用循環(huán)神經(jīng)網(wǎng)絡(luò)對(duì)每個(gè)句子進(jìn)行建模,然后以句子為單位再進(jìn)行一次卷積和池化操作纽乱,得到篇章表示蛾绎。在上述模型中,循環(huán)神經(jīng)網(wǎng)絡(luò)因?yàn)榉浅_m合處理文本序列鸦列,因此被廣泛應(yīng)用在很多自然語言處理任務(wù)上租冠。
.
.
.
四、總結(jié)
基于深度學(xué)習(xí)的方法在自然語言處理中取得了很大的進(jìn)展薯嗤,因此顽爹,分散式表示也成為語言表示中最熱門的方法,不但可以在特定的任務(wù)中端到端地學(xué)習(xí)字骆姐、詞镜粤、句子捏题、篇章的分散式表示,也可以通過大規(guī)模未標(biāo)注文本自動(dòng)學(xué)習(xí)肉渴。
分散式表示可以非常方便地應(yīng)用在下游的各種自然語言處理任務(wù)上公荧,并且可以端到端地學(xué)習(xí),給研究者帶來了很大的便利同规。但是分散式表示對(duì)以下幾種情況還不能很好地處理循狰,需要進(jìn)一步解決。
語言中出現(xiàn)所有符號(hào)是否都需要使用統(tǒng)一的表示模型券勺?比如绪钥,無意義的符號(hào)、變量朱灿、數(shù)字等昧识。
新詞以及低頻詞的表示學(xué)習(xí)方法。目前的表示學(xué)習(xí)方法很難對(duì)這些詞進(jìn)行很好的建模盗扒,而這些詞都是極具信息量的,不能簡單忽略缀去。
篇章的語言表示侣灶。目前對(duì)篇章級(jí)別的文本進(jìn)行建模方法比較簡單,不足以表示篇章中的復(fù)雜語義缕碎。
語言表示的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)褥影。除了目前的基于向量的數(shù)據(jù)結(jié)構(gòu)之外是否有更好的表示結(jié)構(gòu),比如矩陣咏雌、隊(duì)列凡怎、棧等。
.
.
延伸一:句向量的表示方式
參考blog:Sentence Embedding/Nishant Nikhil
在實(shí)際應(yīng)用方面赊抖,可以參考google在2014發(fā)表的內(nèi)容统倒,對(duì)實(shí)際應(yīng)用非常有幫助:Distributed Representations of Sentences and Documents
該博客較多是對(duì)分散表示詞向量進(jìn)行一定的總結(jié)與歸納。
1氛雪、詞向量簡單相加/平均(類似神經(jīng)詞袋模型)
對(duì)詞向量的相加/平均房匆,但是譬如以下的兩句話質(zhì)心是一致的:
You are going there to teach not play.
You are going there to play not teach
這樣的方式,再來求句子距離报亩,其實(shí)是在求句子的質(zhì)心距離(centroid distance)浴鸿。
另外一種改良版本,用Word Movers’ Distance
相近詞之間求距離弦追,然后把這樣的相近距離相加岳链。
參考paper1:From Word Embeddings To Document Distances
.
.
2、深度學(xué)習(xí)方面
以上的方法并沒有關(guān)照到句子的序列信息劲件。
1掸哑、CNN
用CNN來句子表示(paper:Convolutional Neural Networks for Sentence Classification)左胞,操作流程是:
padding句子讓其長度一致 -> 使用詞表示技術(shù)成為方陣 -> 使用CNN -> 使用Max-overtime pooling -> 全連接層 -> 獲得句向量。
2举户、GRU
Dynamic Memory Networks for Visual and Textual Question Answering
通過GRU進(jìn)行編碼烤宙,生成上下文向量+更新記憶。
當(dāng)然還有用雙向GRUs(Efficient Summarization With Read-Again And Copy Mechanism)
.
.
3俭嘁、fasttext表示
可見NLP︱高級(jí)詞向量表達(dá)(二)——FastText(簡述躺枕、學(xué)習(xí)筆記)
.
.
延伸二:句向量表達(dá):Sentence 2 vec
跟眼神一中詞向量簡單相加減類似,是通過PCA/SVD的加權(quán)得到了句向量供填,同時(shí)作者在實(shí)驗(yàn)過程中拐云,發(fā)現(xiàn)這一表征方式,可以跟LSTM表征的效果媲美近她。
github地址:https://github.com/peter3125/sentence2vec
paper地址:《A SIMPLE BUT TOUGH-TO-BEAT BASELINE FOR SENTENCE EMBEDDINGS》
# testembedding_size= 4? # dimension of the word embeddingw1= Word('Peter', [0.1, 0.2, 0.3, 0.4])w2= Word('was', [0.2, 0.1, 0.3, 0.4])w3= Word('here', [0.1, 0.4, 0.1, 0.4])sentence1= Sentence([w1, w2, w3])sentence2= Sentence([w2, w3, w1])sentence3= Sentence([w3, w1, w2])# calculate and display the resultprint(sentence_to_vec([sentence1, sentence2, sentence3], embedding_size))
1
2
3
4
5
6
7
8
9
10
11
12
.
延伸三:NLP 模型到底選 RNN 還是 CNN叉瘩?
本文來源于文章《AI技術(shù)講座精選:NLP 模型到底選 RNN 還是 CNN?》粘捎,不過實(shí)質(zhì)上并沒有得出非常建設(shè)性的答案薇缅。
paper地址:https://arxiv.org/pdf/1702.01923.pdf
CNN 是分層架構(gòu),RNN 是連續(xù)結(jié)構(gòu)攒磨。一般靠常規(guī)直覺來判斷:
傾向于為分類類型的任務(wù)選擇 CNN泳桦,例如情感分類,因?yàn)榍楦型ǔJ怯梢恍╆P(guān)鍵詞來決定的娩缰;
對(duì)于順序建模任務(wù)灸撰,我們會(huì)選擇 RNN,例如語言建模任務(wù)拼坎,要求在了解上下文的基礎(chǔ)上靈活建模浮毯。
在實(shí)踐中,得到的結(jié)論:
CNN 和 RNN 為文本分類任務(wù)提供補(bǔ)充信息。至于哪個(gè)架構(gòu)的執(zhí)行效果更好一點(diǎn),取決于對(duì)整個(gè)序列的語義理解的重要程度肠鲫。
目前來看,RNN 在文本級(jí)別的情感分類表現(xiàn)得很好(Tang et al., 2015)惦蚊,對(duì)于LSTM,封閉的 CNN
在語言建模任務(wù)上同比 LSTM 更勝一籌
RNN 表現(xiàn)較好并且在大范圍內(nèi)的任務(wù)中都較為穩(wěn)健讯嫂。除了以下種情況:當(dāng)前的任務(wù)本質(zhì)上是一項(xiàng)在一些情感探測和問答匹配設(shè)置中識(shí)別關(guān)鍵詞的任務(wù)蹦锋。
隱藏層尺寸hidden size和批尺寸batch size會(huì)使 DNN 的性能變得非常不穩(wěn)定,波動(dòng)較大欧芽,從實(shí)踐來看這兩個(gè)參數(shù)對(duì)結(jié)果的影響非常大莉掂。
.
延伸四:對(duì)詞向量干預(yù),可以提高效率
paper:All-but-the-Top: Simple and Effective Postprocessing for Word Representations
本文來源于paperweekly千扔,《本周值得讀(2017.02.06-2017.02.10)》
本文提出了一種對(duì)已有的詞向量進(jìn)行預(yù)處理的方法憎妙,用來對(duì)學(xué)習(xí)到的詞向量降噪库正。基于詞向量自身的幾何結(jié)構(gòu) — 均值非零以及各項(xiàng)不同性厘唾,本文提出了一個(gè)反直觀的處理方法:從所有的詞向量中移除均值褥符,以及移除部分導(dǎo)致各項(xiàng)不同性的方向。雖然這種處理方式忽略了詞向量中的部分信息抚垃,但是它可以使多種通過不同方式訓(xùn)練出來的詞向量加強(qiáng)詞向量中包含的語義信息喷楣。經(jīng)過預(yù)處理之后的詞向量在一系列intrinsic衡量方式上(similarity, analogy, concept categorization)得到了一致性地提高。同時(shí)鹤树,我們通過了不同的應(yīng)用上進(jìn)行了測試铣焊,試驗(yàn)結(jié)果表明該預(yù)處理已經(jīng)在諸多neural network中有所體現(xiàn),進(jìn)一步證實(shí)了對(duì)詞向量進(jìn)行預(yù)處理的重要性罕伯。
.
延伸五:NLP+Skip-Thoughts-Vectors︱基于TensorFlow的帶語義特征的句向量編碼方式
本篇轉(zhuǎn)載于新智元曲伊,題為《TensorFlow 自動(dòng)句子語義編碼,谷歌開源機(jī)器學(xué)習(xí)模型
Skip-Thoughts》
筆者覺得是高層次的
github地址:https://github.com/tensorflow/models/tree/master/skip_thoughts
Skip-Thoughts 模型概要
Skip-Thoughts 模型是一個(gè)句子編碼器追他。它學(xué)習(xí)將輸入的句子編碼成固定維度的向量表示坟募,這些向量表示能夠?qū)υS多任務(wù)有用,例如檢測釋義湿酸,或?qū)Ξa(chǎn)品評(píng)論進(jìn)行積極或消極的分類等等婿屹。有關(guān)模型架構(gòu)和更多示例應(yīng)用的詳細(xì)信息,可以參閱Ryan Kiros 等人的 NIPS 論文 Skip-Thought Vectors推溃。
一個(gè)訓(xùn)練好的 Skip-Thoughts 模型會(huì)在嵌入的向量空間中對(duì)相互臨近的相似句子進(jìn)行編碼。以下示例展示了對(duì)電影評(píng)論數(shù)據(jù)集中的一些句子的余弦相似性的最近鄰域届腐。
我們描述了一種通用铁坎、分布式句子編碼器的無監(jiān)督學(xué)習(xí)方法。使用從書籍中提取的連續(xù)文本犁苏,我們訓(xùn)練了一個(gè)編碼器-解碼器模型硬萍,試圖重建編碼段落周圍的句子。語義和語法屬性一致的句子因此被映射到相似的向量表示围详。我們接著引入一個(gè)簡單的詞匯擴(kuò)展方法來編碼不再訓(xùn)練預(yù)料內(nèi)的單詞朴乖,令詞匯量擴(kuò)展到一百萬詞。同時(shí)建立word2vec到skip-thoughts向量之間的映射關(guān)系助赞。
在訓(xùn)練模型后买羞,我們用線性模型在8個(gè)任務(wù)上提取和評(píng)估我們的向量,包括:語義相關(guān)性雹食,釋義檢測畜普,圖像句子排序,問題類型歸類群叶,以及4個(gè)基準(zhǔn)情緒和主觀性數(shù)據(jù)集吃挑。最終的結(jié)果是一個(gè)非專門設(shè)計(jì)的編碼器钝荡,能夠生成高度通用性的句子表示,在實(shí)踐中表現(xiàn)良好舶衬。
Skip-Thought 模型是 NIPS 2015論文 Skip-Thought Vectors 中描述的模型的一個(gè) TensorFlow 實(shí)現(xiàn)埠通,學(xué)習(xí)對(duì)句子的語義屬性進(jìn)行編碼。
引用:Ryan Kiros, Yukun Zhu, Ruslan Salakhutdinov, Richard S. Zemel, Antonio Torralba, Raquel Urtasun, Sanja Fidler. Skip-Thought Vectors. In NIPS, 2015.
論文下載地址:https://papers.nips.cc/paper/5950-skip-thought-vectors.pdf
編碼句子示例
該示例的句子來自電影評(píng)論數(shù)據(jù)集(Movie Review Data)逛犹。
ipython# Launch iPython.In [0]:# Imports.from__future__importabsolute_importfrom__future__importdivisionfrom__future__importprint_functionimportnumpyasnpimportos.pathimportscipy.spatial.distanceassdfromskip_thoughtsimportconfigurationfromskip_thoughtsimportcombined_encoderIn [1]:# Set paths to the model.VOCAB_FILE ="/path/to/vocab.txt"EMBEDDING_MATRIX_FILE ="/path/to/embeddings.npy"CHECKPOINT_PATH ="/path/to/model.ckpt-9999"# The following directory should contain files rt-polarity.neg and# rt-polarity.pos.MR_DATA_DIR ="/dir/containing/mr/data"In [2]:# Set up the encoder. Here we are using a single unidirectional model.# To use a bidirectional model as well, call load_encoder() again with# configuration.ModelConfig(bidirectional_encoder=True) and paths to the# bidirectional model's files. The encoder will use the concatenation of# all loaded models.encoder = combined_encoder.CombinedEncoder()encoder.load_encoder(configuration.ModelConfig(),? ? ? ? ? ? ? ? ? ? vocabulary_file=VOCAB_FILE,? ? ? ? ? ? ? ? ? ? embedding_matrix_file=EMBEDDING_MATRIX_FILE,? ? ? ? ? ? ? ? ? ? checkpoint_path=CHECKPOINT_PATH)In [3]:# Load the movie review dataset.data = []withopen(os.path.join(MR_DATA_DIR,'rt-polarity.neg'),'rb')asf:? data.extend([line.decode('latin-1').strip()forlineinf])withopen(os.path.join(MR_DATA_DIR,'rt-polarity.pos'),'rb')asf:? data.extend([line.decode('latin-1').strip()forlineinf])In [4]:# Generate Skip-Thought Vectors for each sentence in the dataset.encodings = encoder.encode(data)In [5]:# Define a helper function to generate nearest neighbors.defget_nn(ind, num=10):encoding = encodings[ind]? scores = sd.cdist([encoding], encodings,"cosine")[0]? sorted_ids = np.argsort(scores)? print("Sentence:")? print("", data[ind])? print("\nNearest neighbors:")foriinrange(1, num +1):? ? print(" %d. %s (%.3f)"%? ? ? ? ? (i, data[sorted_ids[i]], scores[sorted_ids[i]]))In [6]:# Compute nearest neighbors of the first sentence in the dataset.get_nn(0)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
輸出:
Sentence: simplistic , sillyandtedious.Nearest neighbors:1.trite , banal , cliched , mostly inoffensive.(0.247)2.banalandpredictable.(0.253)3.witless , pointless , tastelessandidiotic.(0.272)4.loud , silly , stupidandpointless.(0.295)5.gratingandtedious.(0.299)6.idioticandugly.(0.330)7.black-and-whiteandunrealistic.(0.335)8.hopelessly inane , humorlessandunder-inspired.(0.335)9.shallow , noisyandpretentious.(0.340)10....unlikable , uninteresting , unfunny ,andcompletely , utterly inept.(0.346)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
延伸六:Doc2Vec的情感分析以及相似性
Tutorial for Sentiment Analysis using Doc2Vec in gensim (or “getting 87% accuracy in sentiment analysis in under 100 lines of code”)
github:https://github.com/linanqiu/word2vec-sentiments
也可以用doc2vec來做相似性分析端辱,其他辦法有:
第一種方法,使用docsim圾浅;第二種辦法掠手,使用doc2vec;第三種方式:使用LSH狸捕。
博客里面也有code
詳細(xì)可見:用docsim/doc2vec/LSH比較兩個(gè)文檔之間的相似度
.
延伸七:能夠表征相似的:基于CNN的短文本表達(dá)模型及相似度計(jì)算的全新優(yōu)化模型
來源:LSF-SCNN:一種基于CNN的短文本表達(dá)模型及相似度計(jì)算的全新優(yōu)化模型
LSF-SCNN喷鸽,即基于詞匯語義特征的跳躍卷積模型 (Lexical Semantic Feature based Skip Convolution neural network ),基于卷積神經(jīng)網(wǎng)絡(luò)模型引入三種優(yōu)化策略:詞匯語義特征 (Lexical Semantic Feature, LSF)灸拍、跳躍卷積 (Skip Convolution, SC)和K-Max均值采樣 (K-Max Average Pooling, KMA) 做祝,分別在詞匯粒度、短語粒度鸡岗、句子粒度上抽取更加豐富的語義特征混槐,從而更好的在向量空間構(gòu)建短文本語義表達(dá)模型,并廣泛的適用于問答系統(tǒng) (question answering)轩性、釋義識(shí)別 (paraphrase identification) 和文本蘊(yùn)含 (textual entailment)等計(jì)算成對(duì)兒出現(xiàn)的短文本的相似度的任務(wù)中声登。
LSF特征怎樣計(jì)算得到?
問題和答案中的每一個(gè)單詞都會(huì)有一個(gè)LSF特征揣苏,具體來說是一個(gè)[0,t]上的整數(shù)值悯嗓。LSF的計(jì)算過程可通過下面一個(gè)例子說明,當(dāng)我們想要求解問題中g(shù)eneral一詞的LSF特征時(shí)卸察,第一步我們需要計(jì)算general與答案中每一個(gè)詞的余弦相似度并選取其中的最大值脯厨,因此chief被選取出來。第二步坑质,余弦相似度值的最大值0.79將通過一個(gè)映射函數(shù)映射為一個(gè)[0合武,t]區(qū)間的整數(shù),當(dāng)我們假定t=10涡扼,最終計(jì)算得到general的LSF特征為3稼跳。這是合理的,general和chief一定程度上是近義詞壳澳。
.
延伸八:473個(gè)模型試驗(yàn)告訴你文本分類中的最好編碼方式
論文地址:https://arxiv.org/pdf/1708.02657.pdf
來源機(jī)器之心:學(xué)界 473個(gè)模型試驗(yàn)告訴你文本分類中的最好編碼方式
本論文實(shí)證研究了在文本分類模型中漢語岂贩、日語、韓語(CJK)和英語的不同編碼方式。該研究討論了不同層面的編碼萎津,包括 UTF-8 bytes卸伞、字符級(jí)和詞匯級(jí)。對(duì)于所有的編碼層面锉屈,我們都提供了線性模型荤傲、fastText (Joulin et al., 2016) 和卷積網(wǎng)絡(luò)之間的對(duì)比。對(duì)于卷積網(wǎng)絡(luò)颈渊,我們使用字符字形(character glyph)圖像遂黍、one-hot(或 one-of-n)編碼和嵌入方法比較了不同的編碼機(jī)制】∷裕總的來說雾家,該實(shí)驗(yàn)涉及 473 個(gè)模型,并使用了四種語言(漢語绍豁、英語芯咧、日語和韓語)的 14 個(gè)大規(guī)模文本分類數(shù)據(jù)集。該研究所得出來的一些結(jié)論:基于 UTF-8 字節(jié)層面的 one-hot 編碼在卷積網(wǎng)絡(luò)中始終生成優(yōu)秀結(jié)果竹揍;詞層面的 N 元線性模型即使不能完美地分詞敬飒,它也有強(qiáng)大的性能;fastText 使用字符層面的 N 元模型進(jìn)行編碼取得了最好的性能芬位,但當(dāng)特征太多時(shí)容易過擬合无拗。
通過比較以上表格中的誤差率,作者得出以下結(jié)論:
1昧碉、fastText模型對(duì)中英染、日、韓文本(CJK語言文本)在character級(jí)編碼的處理結(jié)果更好被饿;而對(duì)英語文本則在word級(jí)編碼的處理結(jié)果更好税迷;
2、對(duì)于fastText和線性模型锹漱,CJK語言的word級(jí)編碼在沒有完美分割的情況下效果相當(dāng);
3慕嚷、卷積網(wǎng)絡(luò)的最佳編碼機(jī)制是byte級(jí)獨(dú)熱編碼(byte-level one-hot encoding)哥牍。
這表明卷積網(wǎng)絡(luò)能夠從低級(jí)別的表示中理解文本,并提供了一致的和統(tǒng)一的方式來處理多種語言喝检。
4嗅辣、fastText相比于卷積網(wǎng)絡(luò)更傾向于過擬合,而相比于線形模型也并沒有表現(xiàn)出更多的表示能力(representation
capacity)挠说。
當(dāng)然澡谭,盡管作者在此列了473種模型進(jìn)行對(duì)比,但仍不是全部损俭。例如深度學(xué)習(xí)模型本文只用了卷積網(wǎng)絡(luò)模型蛙奖,但其實(shí)還有別的一些有意思的模型潘酗,例如周期性網(wǎng)絡(luò)(recurrent networks)等。作者似乎計(jì)劃在之后會(huì)對(duì)周期性網(wǎng)絡(luò)進(jìn)行研究雁仲,同時(shí)還會(huì)改進(jìn)卷積網(wǎng)絡(luò)模型仔夺,看會(huì)有什么樣的效果。