




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
基于神經(jīng)網(wǎng)絡的吟詩作對技術(shù)研究與應用摘要自古以來,中華民族每年都有吟詩作對的傳統(tǒng)習俗,是中國的傳統(tǒng)文化。在吟詩作對時講究平仄要協(xié)調(diào),對仗要工整,朗誦起來要有很強的美感,被很多人所喜愛。如何在運用機器語言來實現(xiàn)這一特殊的語言形式受到了廣泛的關(guān)注。因此本文便是自然語言處理方面的技術(shù),在RNN的基礎(chǔ)上進行“吟詩作對”的研究與應用,設(shè)計與實現(xiàn)了一個根據(jù)指定序列生成目標序列的模型。因此根據(jù)實際需求是一項序列的自動生成工作。通過給定的輸入序列,生成輸出序列。在這種情況下,有人提出了一種編碼和解碼的模型。編碼就是將文字以根據(jù)實際情況用相等長度的向量表示,解碼就是將編碼的序列再進行轉(zhuǎn)化。本文采用雙向循環(huán)神經(jīng)網(wǎng)絡進行編碼,采用循環(huán)神經(jīng)網(wǎng)絡進行解碼,在進行詞向量處理的時候也要將上下文的關(guān)系考慮進去,同時考慮上下聯(lián)對應位置的字的相關(guān)性,因此在解碼階段采用了注意力機制來完成這一規(guī)則。同時為了防止神經(jīng)網(wǎng)絡出現(xiàn)過擬合的情況在實驗過程中加入Dropout機制,提高生成模型的效果。最后通過用靜態(tài)頁面的方法,輸入上聯(lián)經(jīng)過模型自動生成下聯(lián)。本文經(jīng)過RNN的模型在實際應用中得到了很好的效果,自動生成的下聯(lián)可以與上聯(lián)的格式相同、文字相對應。關(guān)鍵詞:循環(huán)神經(jīng)網(wǎng)絡;對聯(lián)生成;dropout;注意力機制
ThemethodandapplicationofrecitingpoemsandcomposingpairsbasedonNeuralNetworkabstractSinceancienttimes,theChinesenationhasthetraditionalcustomofrecitingpoemsandcomposingrighteveryyear,whichisthetraditionalcultureofChina.Whenrecitingpoems,weshouldpayattentiontothecoordinationofthelevelandthetone,thealignmentshouldbeneat,andtherecitationshouldhaveastrongaestheticfeeling,whichislovedbymanypeople.Howtousemachinelanguagetorealizethisspeciallanguageformhasbeenwidelyconcerned.Therefore,thispaperisthetechnologyofnaturallanguageprocessing.OnthebasisofRNN,theresearchandapplicationof"recitingpoemsandmakingpairs"iscarriedout,andamodelofgeneratingtargetsequencesaccordingtospecifiedsequencesisdesignedandimplemented.Therefore,accordingtotheactualneedsisasequenceofautomaticgenerationwork.Theoutputsequenceisgeneratedbythegiveninputsequence.Inthiscase,acodinganddecodingmodelisproposed.Encodingistorepresentthetextwithvectorsofequallengthaccordingtotheactualsituation.Decodingistotransformtheencodedsequenceagain.Inthispaper,two-wayrecurrentneuralnetworkisusedtocode,andrecurrentneuralnetworkisusedtodecode.Inthewordvectorprocessing,thecontextrelationshipshouldalsobetakenintoaccount,andthewordcorrelationofthecorrespondingpositionoftheupperandlowerlinksshouldbeconsidered.Therefore,attentionmechanismisusedtocompletethisruleinthedecodingstage.Atthesametime,inordertopreventtheneuralnetworkfromoverfitting,thedropoutmechanismisaddedintheexperimentalprocesstoimprovetheeffectofmodelgeneration.Finally,byusingthemethodofstaticpage,theinputuplinkisautomaticallygeneratedbythemodel.Inthispaper,theRNNmodelhasbeenappliedinpracticeandgoodresultshavebeenachieved.Theautomaticallygeneratedlowerlinkcanbeinthesameformatastheupperlinkandcorrespondtothetext.Keywords:cyclicneuralnetwork;coupletgeneration;dropout;attentionmechanism
目錄第一章緒論 第一章緒論在當今世界正在邁入人工智能時代。在最開始的時候,由于智能問題的復雜性、計算機的硬件設(shè)施比較落后、數(shù)據(jù)的缺少等問題,導致了人工智能的發(fā)展緩慢。但是隨著科技的發(fā)展以及大數(shù)據(jù)、神經(jīng)網(wǎng)絡的快速發(fā)展。人工智能在各個方面得到的應用有了很好的效果,并且部分已經(jīng)融入到社會的生產(chǎn)生活當中,有的方面已經(jīng)取得了驚人的成績,甚至在某些領(lǐng)域有的完成了人們不能親自做的事情。在大數(shù)據(jù)時代的來臨,自然語言處理的應用到各個層面,而且它也正在嘗試著學習人類的表達方式,同時也讓人工智能領(lǐng)域的發(fā)展可以得到一個很大的提升。自然語言處理主要包括先認識語言然后再學習語言這兩個部分。而在中國語言生成的最具有代表意義的就是詩歌和對聯(lián),并且是各位專業(yè)學者經(jīng)常作為的研究對象。1.1選題背景、目的及意義在中國自古以來都有吟詩作對的傳統(tǒng)文化習俗,特別是在每年的春節(jié)家家戶戶都會在家門口貼對聯(lián),在元宵節(jié)猜燈謎,吟詩作對一番。其中有嚴格的格式,要求上下聯(lián)字數(shù)相等,對應位置詞語關(guān)系緊密,同時在進行吟詩作對之時還需要講究平仄協(xié)調(diào),格式嚴謹,是中華民澤非常特色的藝術(shù)展現(xiàn)方法,很多人都喜歡。而且經(jīng)過時間的熏陶,形成了比較成熟完整的體系,而且應用廣泛,與人民的生活也有著十分緊密的聯(lián)系,也作為社會形態(tài)的一份獨特的存在。對聯(lián)的最早開始于秦漢時期懸掛桃符的日常生活中,五代時又讓在桃符上刻字,在后蜀的時候孟旭讓辛寅遜在桃符板上寫一些祝福的話語。在之后一段時間在明清時代得到了非常迅速的發(fā)展,到現(xiàn)在也已經(jīng)有了一千多年的時間了。三千年前,中國早期時代的人們開始使用對偶句了。后來在商朝和周朝這兩個方面用的對偶句和后來的詩詞歌賦中所用的駢儷句,都為對聯(lián)的產(chǎn)生做了一些鋪墊。隨著時間的推移,到后來的朝代經(jīng)過人民智慧的結(jié)晶出現(xiàn)了越來越嚴密和精準的格式要求同時也保留著一些格律詩的一部分準則。因此在很久以前人們經(jīng)常在娛樂之時常用來把吟詩作對當做是文人墨客會友的一種常見的娛樂項目,以文會友。而且對聯(lián)從古至今都有很多的用處,從最早時候的懸掛桃符開始,來尋求平安等,后來人民就把對聯(lián)的話寫在了桃木板上,后來在五代朝代等以后,出現(xiàn)了一些對聯(lián),在每個時代來說都出現(xiàn)與之相對應的對聯(lián)如下表1-1所示每個朝代所出現(xiàn)的對聯(lián)形式。表1-1每個朝代出現(xiàn)的對聯(lián)朝代對聯(lián)后蜀新年納余慶,嘉節(jié)號長春北宋千門萬戶曈曈日,總把新桃換舊符明朝風格多樣,種類在上表中出現(xiàn)的對聯(lián)都有其特殊的意義在后蜀代表著當時出現(xiàn)的一些事件,而在北宋年間的對聯(lián)則是當時過年時候所出現(xiàn)過年的場景。在明朝的時候則不在用之前的桃木板子了,換成了紅紙,也就出現(xiàn)了現(xiàn)在的對聯(lián)。而在明朝的時候朱元璋微服出巡之時讓每家每戶門前都加上一副對聯(lián),來進行觀賞取樂,這也就出現(xiàn)了過年貼對聯(lián)的傳統(tǒng)習俗。隨著時間的推移,對聯(lián)的形式和種類也多種多樣,不論是在喜事還是在白事上都會出現(xiàn),只不過在內(nèi)容上差別很大。而且其中一種叫做楹聯(lián)的不僅在國內(nèi)廣受關(guān)注,在國外也很受歡迎。為了讓對聯(lián)這種特殊的文學形式,在社會發(fā)展時代如此之快的形式之下,也需要讓每一個人都能重視起來。尤其是當今大數(shù)據(jù)人工智能時代,必須通過現(xiàn)代的技術(shù)來實現(xiàn)我們傳統(tǒng)文化的繼承,在自然語言處理領(lǐng)域關(guān)于對聯(lián)的生成問題對于我們炎黃子孫來說必須要弘揚祖國的傳統(tǒng)文化,而且傳統(tǒng)文化的繼承問題也應該隨著科技的進步而進步,讓所有人都知道傳統(tǒng)文化也可以在不同的領(lǐng)域的到應用與發(fā)展,因此在本文當中采用神經(jīng)網(wǎng)絡來對對聯(lián)這一形式進行應用處理。因此讓計算機在人們生活中越來越能理解人們的語言文化藝術(shù)方面得到更好應用,體現(xiàn)的越來越必要。而且對聯(lián)這一特殊的文化形式如果讓計算機能夠識別,而且通過讓對聯(lián)的愛好者和初學者能夠更加簡單方便的學習其相關(guān)的知識的話,既方便了人們的學習相關(guān)的知識,同時也對中華民族的傳統(tǒng)文化也讓更多人學習。在本文就以對聯(lián)為研究,通過計算機生成訓練隊模型來生成對聯(lián)制作可視化界面進行運用。1.2國內(nèi)外研究現(xiàn)狀1.2.1基于詞向量的生成方法把自然語言的問題轉(zhuǎn)化為機器所能識別的問題,就需要將語言轉(zhuǎn)化為2進制,讓計算機能夠認識這種語言。在這里,需要將字典里的每個漢字表示成一個向量。在自然語言處理中,最先出現(xiàn)的方式是one-hot方法,這種方法的向量維度是字典大小,每個字都有數(shù)據(jù)自己的向量,在它自己的向量里面只有一個數(shù)字為1,其余的數(shù)字全為0,這個1就是這個字在實際中設(shè)置的字典中的地方。舉個例子,“祖”表示為[001000...],“國”表示為[000001...],這種方法表示的向量非常稀疏,如果采用稀疏方式記錄會非常簡潔,給每個字都有自己的編號。但在實際操作的時候,這樣的表達形式會出現(xiàn)一些問題,主要有這兩個問題:(1)如果在實驗中所設(shè)計的字典很大的話,計算機的計算范圍有限不能進行操作。(2)字與字之間的相似性關(guān)系不能表現(xiàn)出來,即有“詞匯鴻溝”現(xiàn)象。為了克服上述缺點,于是另一種詞向量的表示方式產(chǎn)生了,即Distributedepresentation。DistributedRepresentation的想法是在1986年Hinton在發(fā)表的論文中有了的[1]。相比于one-hot表示方式,Distributedrepresentation還能體現(xiàn)不同詞之間的語義關(guān)聯(lián),因此在自然語言的處理上得到了廣泛的應用。如果采用不同訓練詞向量的方法,那么所得到的結(jié)果也不同,當前來說人們常用的有word2vec和glove。1.2.2基于統(tǒng)計機器翻譯的生成方法在自然語言生成中,詩歌和對聯(lián)生成在微軟研究院周明等人看成是統(tǒng)計機器翻譯StatisticalMachineTranslation,SMT)問題[2][3]。這種方法吧詩歌和對聯(lián)的翻譯過程,根據(jù)前一句翻譯后一句,根據(jù)給出的上聯(lián)翻譯下聯(lián)。在用戶輸入上一句的時候,接著根據(jù)用戶輸入第一句,接著根據(jù)統(tǒng)計機器翻譯的模型來生成第二句。實驗部分,通過人工和自動兩個方面對實驗結(jié)果進行評估。在人為評估的話按照一定的方式方法進行評估,對于機器評估的話人們常用BLEU[4]來評估。因為機器進行解碼的時候不僅只考慮當前的數(shù)據(jù),而且還會與其有關(guān)的句子進行考慮,所以用這種方法在句子的意思方面會與比較好的結(jié)果,并且不依賴于人工設(shè)計評估函數(shù),模型通過語料進行自動學習。但在實際的生活中,人們的目標往往只有開始的一句有關(guān),并不會考慮其他的,生成的結(jié)果不能滿足需求,也沒有主題意思。除此之外,此系統(tǒng)對用戶的輸入也有嚴格的限制要求。1.2.3基于深度學習的生成方法隨著深度學習技術(shù)的出現(xiàn)和發(fā)展,深度學習已經(jīng)融入到很多方面,如語音識別、圖像處理、機器翻譯等等。同樣在詩歌和對聯(lián)的得到了很大的成功。后來人們根據(jù)現(xiàn)有的神經(jīng)網(wǎng)絡進行符合實際需求的改進來滿足對聯(lián)的自動生成問題。其中最多的是循環(huán)神經(jīng)網(wǎng)絡的生成方法RNN-basedPoemGenerator,RNNPG)[5]、基于神經(jīng)機器翻譯的生成方法[6](AttentionbasedNeuralMachineTranslationNetworkANMT)、基于規(guī)劃的生成方法[7](PlanningbasedPoetryGeneration,PPG)、基于記憶網(wǎng)絡的生成方法[8]等,這些方法對自然語言處理有很大的價值。1.2.3.1基于循環(huán)神經(jīng)網(wǎng)絡的生成方法在2014年Zhang等人提出的基于循環(huán)神經(jīng)網(wǎng)絡生成方法RNNPG,算是比較早的將機器學習的技術(shù)應用到古代詩歌的產(chǎn)生上去[9]。圖1-1展示了RNNPG系統(tǒng)框圖。RNNPG系統(tǒng)首先根據(jù)用戶輸入的關(guān)鍵詞,得出第一句.RNNPG的大概生成過程是這樣的當有人輸入主要的詞語來生成開頭句,有一定的約束規(guī)范,其主要目的是確保格式是正確的,其余的則是根據(jù)已經(jīng)生成的來生成后面的以此類推。RNNPG模型由三個核心部分組成:CSM、RCM和RGM。其中CSM是一個基于卷積神經(jīng)網(wǎng)絡(ConvolutionalNeuralNetworks,CNN)的模塊,用于提出句子特征,并生成向量。RCM是一個基于循環(huán)神經(jīng)網(wǎng)絡(RecurrentNeuralNetwork,RNN)的模塊,依照之前線索產(chǎn)生句子的語義向量。RGM也是神經(jīng)網(wǎng)絡的一部分,通過之前的信息和RCM的輸出結(jié)果共同作用之下來產(chǎn)生下一個字。在實際的操作過程則需要進行加權(quán)處理來輸出結(jié)果,重復生成完整的目標。圖1-1RNNPG系統(tǒng)框圖與傳統(tǒng)方法不同,RNNPG是一種基于深度學習的方法,它可以從訓練數(shù)據(jù)中學習文本特征的動態(tài)學習不需要人工提取特征、設(shè)計規(guī)則模板和評價函數(shù),生成詩歌效果也比較高。RNNPG使詩歌的生成更加簡單和靈活。RNNPG的不足在于只用重點的詞語來生成的詩,主題的話只是與它相關(guān),不受其他行的影響。在生成的過程中,主題容易漂移,詩的最終主題不明確與傳統(tǒng)方法相比,RNNPG是一種基于深度學習的方法,它可以從訓練數(shù)據(jù)中學習文本特征的動態(tài)學習不需要人工提取特征、設(shè)計規(guī)則模板和評價函數(shù),也不需要生成詩歌這首歌唱得更好。RNNPG使詩歌的生成更加簡單和靈活1.2.3.2基于規(guī)劃的生成方法Wang等人[10]提出一種基于規(guī)劃的詩歌生成器(PPG)。該工作同樣采用基于注意力機制的編碼-解碼框架,方法創(chuàng)新地將寫作時運用的提綱技巧引入到機器生成問題中,在模型生成時引入規(guī)劃信息大大防止了主題漂移的問題。PPG方法由規(guī)劃模型和生成模型組成。規(guī)劃模型用于得到規(guī)劃信息,過程為首先根據(jù)用戶輸入的文本信息獲取多個關(guān)鍵詞作為規(guī)劃信息。生成模型用于生成詩歌,過程為將規(guī)劃模型得到的規(guī)劃信息融入到生成模型中,通過ANMT的生成方法來生成每一行詩句,直到整首詩生成完成。如圖1-2所示為PPG方法生成的詩歌示例。與前面的方法相比,PPG的方法創(chuàng)新地將人類創(chuàng)作的提綱技巧引入到機器寫作問題中,大大防止了主題漂移的問題,開啟了基于主題的詩歌生成新篇章。盡管PPG方法取得了相當不錯的結(jié)果,甚至可以與人類作詩相媲美,但是PPG方法也存在著可以改進的地方。PPG方法生成的詩歌受規(guī)劃信息導向,規(guī)劃信息的好壞很大程度上決定詩歌生成的好壞,規(guī)劃信息由多個關(guān)鍵詞來組成,每個關(guān)鍵詞導向著每行詩句的生成,關(guān)鍵詞的獲取大大影響著最終詩歌生成的效果,所以改進可從規(guī)劃信息的獲取角度考慮。其次,PPG方法亦可以從模型訓練語料方面進行改進,聯(lián)合其他任務對語料進行擴充,引入其他外界信息,如此可以增強模型的泛化能力,提高表現(xiàn)結(jié)果。圖1-2PPG方法生成的詩歌示例1.3本文工作1.3.1本文主要內(nèi)容在本文當中主要是針對神經(jīng)網(wǎng)絡自動生成對聯(lián)訓練的模型進行設(shè)計和實現(xiàn)。按照模型生成的相關(guān)工作在本文中需要做了很多相關(guān)的工作,首先我們在進行模型建立之前,需要獲得大量的數(shù)據(jù),因此在本文中通過在對聯(lián)和詩歌的相關(guān)網(wǎng)站下載足夠的數(shù)量,如果只嚴格按照對聯(lián)的進行下載的話數(shù)據(jù)量不能滿足本文的需求,而且詩歌的格式與內(nèi)容上有很多的相似之處,因此可以下載一些作為訓練的數(shù)據(jù)。然后通過采用序列到序列的模型進行模型的構(gòu)建,在編碼階段采用的雙向循環(huán)神經(jīng)網(wǎng)絡,因為對聯(lián)這種特殊的格式下聯(lián)的生成結(jié)果不僅與上下文相關(guān),而且與上聯(lián)相應位置的字相對應。而在解碼階段根據(jù)對聯(lián)的實際要求采用的單向循環(huán)神經(jīng)網(wǎng)絡。通過生成的模型在本文中用HTML設(shè)計前臺的界面,然后用FLASk框架設(shè)計后臺,編寫接口進行模型效果的展示。經(jīng)過設(shè)計與驗證之后,通過生成的對聯(lián)與上聯(lián)進行比對按照對聯(lián)平仄押韻的格式進行評測,本文中的模型效果十分好。1.3.1論文結(jié)構(gòu)安排在本文內(nèi)容的安排上,一共分為五章。第一章:緒論。首先介紹了對聯(lián)從古至今對人們的重要意義以及現(xiàn)在人們關(guān)于自動生成對聯(lián)的關(guān)注情況,然后介紹詞向量的相關(guān)內(nèi)容,然后根據(jù)當今神經(jīng)網(wǎng)絡的發(fā)展在對聯(lián)生成的應用,最后介紹本文的論文組織結(jié)構(gòu)。第二章:任務描述與數(shù)據(jù)預處理。本章主要介紹的是在實現(xiàn)模型的所需的工作包括數(shù)據(jù)的選擇,神經(jīng)網(wǎng)絡如何選擇,以及模型的搭建以及模型檢驗。還有數(shù)據(jù)的預處理過程。第三章:基于RNN吟詩作對的方法。本章介紹相關(guān)理論知識的詳細介紹,以及模型實現(xiàn)的過程。第四章:基于吟詩作對方法的應用。本章主要介紹的是演示系統(tǒng)的設(shè)計和功能的介紹,還有演示系統(tǒng)的實現(xiàn)自己測試的結(jié)果??偨Y(jié)與展望:對實驗中創(chuàng)建的模型進行概括,有一些不足的地方提出來,并且對今后的預想提出來。
第二章任務描述與數(shù)據(jù)預處理本章節(jié)主要是對本文在實驗過程中所需要完成的任務的詳細介紹和本文建立的模型進行數(shù)據(jù)預處理的過程。任務描述對聯(lián)作為中華民族的文化瑰寶,在很多中國的傳統(tǒng)禮儀上都是不可缺少的一部分,而且在近年來在自然語言處理領(lǐng)域受到人們的關(guān)注。本文基于RNN的吟詩作對研究與應用的基礎(chǔ)上設(shè)計并實現(xiàn)了通過用戶輸入上聯(lián)通過模型自動生成下聯(lián)的任務,主要是以下幾個方面。1)獲取訓練集的建立。本文所設(shè)計并實現(xiàn)的吟詩作對模型,根據(jù)上聯(lián)生成與之對應的下聯(lián),那么首先的任務需要相應的數(shù)量的對聯(lián),來建立數(shù)據(jù)集。本文所需要的數(shù)據(jù)集來源于對聯(lián)網(wǎng)站的數(shù)據(jù),將這些數(shù)據(jù)下載下來保存到本地,然后其格是每一行代表著的是對聯(lián)的上聯(lián)或者是對聯(lián)的下聯(lián)。在下載的數(shù)據(jù)當中也有一些詩歌的一部分內(nèi)容,詩歌的格式與對聯(lián)的內(nèi)容要求有很多的相似之處,這樣的話可以獲得大量的數(shù)據(jù)使得模型更加可靠。當數(shù)據(jù)集下載完成之后,我們根據(jù)實際的需求需要訓練詞向量,為了不使用分詞的方法,直接進行詞向量的訓練,本文中將獲取的9130個漢字每個字作為一行放入到文件里面。這樣的話可以直接訓練。2)吟詩作對模型的建立。本文是在RNN的基礎(chǔ)上,因為對聯(lián)這種特殊的格式要求因此在本文中采用的是雙向循環(huán)神經(jīng)網(wǎng)絡,框架的選擇當然是當前比較熱門的框架編碼-解碼模型(Encode-Decode)來設(shè)計實現(xiàn)的。本文在編碼-解碼的模型上進行進一步的設(shè)計使得更加符合實際需求,具體的網(wǎng)絡選擇在實際的模型生成上根據(jù)實際的情況進行選擇,依次在編碼階段采用雙向循環(huán)神經(jīng)網(wǎng)絡來進行編碼使得對聯(lián)這樣特殊形式的關(guān)聯(lián)性得到很好地體現(xiàn),在解碼階段則采用的是單向循環(huán)神經(jīng)網(wǎng)絡并且加入注意力機制來增強模型的實際效果。3)應用系統(tǒng)的實現(xiàn)。本文采用通過輸入上聯(lián)自動生成下聯(lián)的模式,采用的python的Flask框架來進行設(shè)計,在前臺用的Html的技術(shù)制作的靜態(tài)頁面讓用戶通過已有的上聯(lián)進行輸入處理,點擊生成按鈕將上聯(lián)的數(shù)據(jù)上傳到模型中去然后進行展示結(jié)果。數(shù)據(jù)預處理本論文的數(shù)據(jù)來源主要為各個對聯(lián)網(wǎng)站、論壇的數(shù)據(jù),對聯(lián)的內(nèi)容豐富,包括了各種風格,另外的是來源于古代的詩詞歌賦,從詩詞中截取格式內(nèi)容與對聯(lián)相符合的部分作為本文的數(shù)據(jù)來源,雖然古詩和對聯(lián)的格式并非完全一致,但是作為本文的訓練數(shù)據(jù)還是可以的,在本文中對聯(lián)和詩詞共計770491條數(shù)據(jù)。將收集到的對聯(lián)數(shù)據(jù)分為訓練集和測試集。本文收集得到的數(shù)據(jù),在實際的收集過程中就進行了一下預處理,把收集過來的數(shù)據(jù)一行只有一句話,這一句話不是對聯(lián)的上聯(lián),就是對聯(lián)的下聯(lián),每個字之間也有一定的間隔,每個字就是一個獨立的詞,這樣的話就不需要進行分詞了。本文下載的數(shù)據(jù)按照每一行進行排版,雖然不需要進行分詞的處理,但是計算機無法直接識別因此需要將數(shù)據(jù)轉(zhuǎn)化為計算機可以識別的二進制序列,因此本文需要訓練詞向量,首先需要準備一個詞典用來訓練詞向量。在本文中采用word2vec的方法進行訓練詞向量,當然在進行訓練之前需要進項構(gòu)建一個詞典,本文在網(wǎng)上下載的9130個字就作為本文的詞典。并且每一個字就作為一行因此無需進行分詞處理,直接進行詞向量的訓練。關(guān)于word2vec詞向量的原理是將每一次選一行進行掃描。將生成一個向量,其中每個字中只有一個值為1,其余的全為0.在之前的文章中提到過例子。而對于Word2vec模型其實就是簡化的神經(jīng)網(wǎng)絡,區(qū)別就在于它的隱藏層沒有激活函數(shù),也就是常說的線性單元。輸入層和輸出層都是采用的Softmax回歸函數(shù)。
第三章基于RNN的吟詩作對方法技術(shù)基礎(chǔ)知識介紹本文屬于自然語言處理的問題,采用的技術(shù)也是神經(jīng)網(wǎng)絡的內(nèi)容。在20世紀末,隨著神經(jīng)網(wǎng)絡的發(fā)展出現(xiàn)的循環(huán)神經(jīng)網(wǎng)絡,并且已經(jīng)廣泛的應用到文本分類、文本生成、智能語音識別、自動摘要等領(lǐng)域,并且都取得了很好的效果。特別是本文采用的序列到序列模型,本模型是在2014年谷歌公司提出來的,自從提出以來在機器翻譯、文本生成等領(lǐng)域都取得了很大的進步。在今后的深度學習中包含了諸多及技術(shù)的都在有了很大的發(fā)展。本章主要是對研究的相關(guān)技術(shù)做介紹,依次介紹循環(huán)神經(jīng)網(wǎng)絡、Dropout、注意力機制、序列到序列模型。3.1.1標準循環(huán)神經(jīng)網(wǎng)絡標準循環(huán)神經(jīng)網(wǎng)絡(RNN)是SarathaSathasivam在半個世紀以前提出的霍普爾德網(wǎng)絡[11]。但是在它剛剛出現(xiàn)的時候并沒有得到很好的應用,但是在最近幾年得到了廣泛的應用,因為GPU的出現(xiàn)提高了學習效率和神經(jīng)網(wǎng)絡的不斷發(fā)展取得了很大的進步。特別是RNN在處理序列得到了非常好的效果,使得它在自然語言領(lǐng)域取得了非常好的成果,在各個方面都得到了很好的應用。傳統(tǒng)的神經(jīng)網(wǎng)絡模型中的三個層,在輸入和隱藏之間是全連接的,同樣在隱藏和輸出之間也是這樣的,在每一層的所有節(jié)點,他們之間沒有連接,都是屬于自己的獨立個體。這是最簡單的全連接神經(jīng)網(wǎng)絡,其特點是結(jié)構(gòu)簡單非常清晰,但是有很多問題不能夠應用到。比如用這個網(wǎng)絡進行預測一個詞之后的下一個詞,顯然這種不能夠滿足需求,而對于這種關(guān)系可以采用RNN來解決這個問題。實際上,由于RNN的結(jié)構(gòu)特點就是來處理序列數(shù)據(jù)的。圖2-1傳統(tǒng)神經(jīng)網(wǎng)絡圖2-2循環(huán)神經(jīng)網(wǎng)絡RNN之說以說是循環(huán)的,是因為序列的當前的輸出結(jié)果與之前的輸出結(jié)果有關(guān),在網(wǎng)絡結(jié)構(gòu)中最明顯的特征就是隱藏層節(jié)點之間的連接,隱藏層的輸入由輸入層和上一時刻隱藏層的輸出組成,簡單來說就是保留一部分前面的信息,并把這些信息用于當前的計算中去。雖說,RNN能夠處理不同長度的序列,但是如果序列太長的話,而且沒有選擇保留的話會讓模型非常的不好,而且效果也不好,所以一般只假設(shè)當前狀態(tài)只與它之前若干個狀態(tài)相關(guān)。圖2-3RNN折疊結(jié)構(gòu)圖圖2-4RNN展開結(jié)構(gòu)圖從圖2-4RNN展開結(jié)構(gòu)圖可以看出,當前的輸入來源由2個部分組成,一部分上一時刻的隱藏層的輸出,另外的就是正在輸入的xt,也就是說隱藏層的節(jié)點與多種連接方式可以進行,這個的輸出結(jié)果也是一會將要進行的隱藏單元的輸出。在某一時刻輸出的結(jié)果會反過來到隱藏單元,這就是所謂的反向傳播。如果將RNN展開成一個全連接的神經(jīng)網(wǎng)絡,句子的長度就是展開的網(wǎng)絡的層數(shù),每一層就代表著一個字。RNN網(wǎng)絡的計算過程如下:1)xt2)st為隱藏層的當前時刻的狀態(tài),St=f(Uxt這里f是非線性的激活函數(shù),一般是ReLU[12]或tanh,在計算s0的時候,由于它沒有上一步的隱藏層狀態(tài),一般取0向量。3)OtOt=softmax(VS3.1.2長短時記憶網(wǎng)絡長短時記憶網(wǎng)絡(LongShortTermMemory,LSTM)的設(shè)計專門用于解決RNN的長期依賴問題,而RNN能被成功應用的關(guān)鍵就是LSTM[13]。LSTM是由Hochreiter和Schmidhuber于1997年提出的,它是一種特別的循環(huán)體結(jié)構(gòu)[14]。LSTM和RNN主要區(qū)別在于隱藏層,LSTM的隱藏層比RNN更為復雜,用來解決長期依賴問題。LSTM的隱藏層與普通的網(wǎng)絡有一點不同,就是遺忘門的應用。LSTM的門結(jié)構(gòu)讓細胞單元有選擇的記憶之前的信息,從而來改變當前的輸出狀態(tài)。該網(wǎng)絡的門用的方法是sigmoid和按位相乘的過程,這樣做的目的主要是選擇,簡單來說就是選擇多少信息的問題。而對于sigmoid它只有0和1,前者是拒絕通過,后者是可以通過。圖2-5LSTM模型結(jié)構(gòu)示意圖LSTM通過門結(jié)構(gòu)解決RNN梯度消失和梯度爆炸問題,讓每個細胞單元保存有用的歷史信息,解決了長期依賴的問題。如圖2-5LSTM模型結(jié)構(gòu)示意圖,其工作原理:1)決定從細胞狀態(tài)中丟棄什么信息。這個決定通過一個稱為忘記門的層完成。該門會讀取h_(t-1)和xt,結(jié)果會在0到1之間,給每個在細胞狀態(tài)C_(t-1)中的數(shù)字。1表示留下來,0表示ft=(Wf*h(t-1),x2)決定讓多少信息加入到cell狀態(tài)中來,其中分為兩步:一是sigmoid層決定哪些信息需要更新;一個tanh層生成一個新的結(jié)果,這個結(jié)果作為候選作為可能更新的那一部分,然后將這兩個部分整合到一起,產(chǎn)生一個新的細胞狀態(tài)。it=(Wi*[h(t-1),xtC't上面兩個門,“遺忘門”和“輸入門”已經(jīng)選擇好了留下來的東西,神魔東西要放棄,這時就要在cellstate上進行操作了:Ct3)根據(jù)sigmoid層所給出的信息得到結(jié)果,將結(jié)果通過tanh操作過之后并和sigmod門的結(jié)果相乘,得到目標:ot=(Wo*[h(t-1),xtht3.1.3雙向循環(huán)神經(jīng)網(wǎng)絡在一個方向的循環(huán)神經(jīng)網(wǎng)絡,一般來講隱藏層的狀態(tài)都是從前向后的,通過之前得結(jié)果來影響之后的結(jié)果。但是,在有些時候并不能滿足一些輸出的信息不僅僅要與歷史信息相關(guān)還要與未來的信息相關(guān),此時的單向循環(huán)神經(jīng)網(wǎng)絡已經(jīng)不能夠滿足目標需求,因此在本文就要采取雙向循環(huán)神經(jīng)網(wǎng)絡。雙向神經(jīng)網(wǎng)絡是由兩個單向的循環(huán)神經(jīng)網(wǎng)絡疊加而成的神經(jīng)網(wǎng)絡,一個從前面到后面進行傳遞一個從后面向前面進行傳遞,兩個相反方向的傳遞將之前的信息和后來的信息集中到當前的輸出來。如圖2-6所示的雙向循環(huán)神經(jīng)網(wǎng)絡結(jié)構(gòu)圖。圖2-6雙向循環(huán)神經(jīng)網(wǎng)絡結(jié)構(gòu)圖雙向循環(huán)神經(jīng)網(wǎng)絡在每時每刻都是由兩個相反方向的單向循環(huán)神經(jīng)網(wǎng)絡進行傳入,每一個的單向循環(huán)神經(jīng)網(wǎng)絡都會有一個結(jié)果,一個從前向后傳遞的信息代表著歷史的信息,從后向前傳代表著未來的信息,將兩個信息進行合并作為雙向循環(huán)神經(jīng)網(wǎng)絡最后的輸出。雙向循環(huán)神經(jīng)網(wǎng)絡可以由標準的循環(huán)網(wǎng)絡,也可以是長短時記憶網(wǎng)絡。雙向標準循環(huán)神經(jīng)網(wǎng)絡的隱藏輸出htht前=RNN(hht后=RNN(hht=[h雙向長短時記憶循環(huán)神經(jīng)網(wǎng)絡的隱藏層htht前=LSTM(hht后=LSTM(hht=[h3.2Dropout機制Dropout在神經(jīng)網(wǎng)絡中廣泛的應用,它是由Hinton等人提出來的[15]。這個機制提出來的目的主要是在機器學習的時候有時候設(shè)置的參數(shù)太多了,而且實驗中沒有那么多的數(shù)據(jù)可以用來訓練,這樣的出來的結(jié)果有很大的可能會出現(xiàn)過擬合的現(xiàn)象。爾而過擬合講的就是模型的損失函數(shù)非常的小,而且準確率也是非常的高,但是當用測試集去測試時,這時候損失函數(shù)變得非常的大,這樣生成的模型是無法使用的。而且過擬合對于機器學習來說,這是非常常見的一種毛病。在這個時候就需要阻止這種情況的發(fā)生。這就是Dropout發(fā)揮作用的時候了,它主要是不讓特征檢測器一起發(fā)揮作用的,以此來提高網(wǎng)絡的效果。在實際的應用中,通過減少一半的特征檢測器,來減少可能出現(xiàn)的過擬合。加入Dropout這種機制減少網(wǎng)絡中隱藏層節(jié)點的相互作用,達到很好的效果。Dropout用簡單的話說就是,在神經(jīng)網(wǎng)絡中正向進行的時候,當某一個神經(jīng)元達到一定的值就停下來,不在繼續(xù)。這樣的話讓生成的模型能滿足絕大多數(shù)的要求,不會過分依賴部分的內(nèi)容如圖2-7所示。(a)原始神經(jīng)網(wǎng)絡(b)Dropout后神經(jīng)網(wǎng)絡圖2-7Dropout機制示意圖Dropout在實際中的工作,如果要用到這樣一個神經(jīng)網(wǎng)絡,如圖2-8所示.圖2-8標準的神經(jīng)網(wǎng)絡輸入一個x得到的結(jié)果是y,一般來說過程是這樣的:把x在網(wǎng)絡中正向傳出去,然后把得到的誤差結(jié)果反向傳到網(wǎng)絡中進行學習,讓后讓網(wǎng)絡進行學習使用Dropout之后,過程變成如下:首先選擇網(wǎng)絡中一般的隱藏神經(jīng)單元讓這些單元不工作,當然輸入和輸出是不用改變的(圖2-9中那些虛線部分是不讓工作的神經(jīng)元)圖2-9部分臨時刪除的神經(jīng)元2)經(jīng)過x訓練過之后調(diào)整過之后的網(wǎng)絡繼續(xù)向前進行,把得到的損失結(jié)果在修改后的網(wǎng)絡反過來傳。當一定數(shù)據(jù)訓練完畢之后,在剩余的神經(jīng)元上按照隨機下降進行更新參數(shù)(w,b)。3)接下來就是重復以下過程:將不工作的神經(jīng)元進行恢復,這時候工作的神經(jīng)元已經(jīng)有了新的狀態(tài)。然后繼續(xù)從隱藏層選擇一般進行不工作,選擇完畢之后同樣選一批數(shù)據(jù)進行訓練,訓練之后更新。3.3注意力機制 注意力機制一開始來說來源于人們的視覺。簡單說,當人看東西的時候不會全部都看,會選擇自己好奇或者感興趣的那一部分,如果這個東西是移動著的時候,人們對目光也會隨著這個東西進行轉(zhuǎn)移,這也就是說不同的人即使是在同一個地方,他們所關(guān)注的內(nèi)容也是不同的。舉一個簡單的例子來說,當人們在說一件事情的時候,通?;蛘f道一些東西或者人物,這時相關(guān)性會不斷的改變,同時話題也會有所改變。正如上邊說的這種情形,注意力機制有兩種方向,一個是空間注意力,一個是時間注意力。加入注意力機制的動機有以下兩個方面:序列輸入時,如果序列在不斷的增加,這時候不僅計算機無法承受其過長的序列,而且模型的表現(xiàn)效果也會越來越差,這就是模型設(shè)計時存在的缺陷,而且不會會根據(jù)實際的情況進行改變,整個模型的效果也會下降。2)編解碼器的結(jié)構(gòu)沒有辦法進行合理的工作,后續(xù)的工作無法進行。Attention機制首先會讓編碼器的結(jié)果進行有規(guī)則的展示出來,如果用集合c={c1,c2…cm}表示,如果在集合當中的每個元素都代表著某個時刻的輸入信息的話,輸出結(jié)果就是當前的時刻,某個上下文分別表示對應的注意力,在經(jīng)過softmax得到最后的得分。Attention機制的另外一種模型Softattention機制的作用主要是給上下文的信息進行評分,它的作用就像是在解碼前的預處理作用就是告訴編碼器那些內(nèi)容比較重要,這也就是注意力機制的具體含義。這個就能很好的體現(xiàn)注意機制的內(nèi)容了。Attention的出現(xiàn)就是為了兩個目的:1.對計算機而言,能夠減少數(shù)據(jù)的計算負擔,把數(shù)據(jù)的維度降下去。2.更有效的保留最有效的數(shù)據(jù)提高結(jié)果的質(zhì)量。而對于注意力機制的應用而言,他主要用于解碼器的類型,學習到一些關(guān)聯(lián)度比較強的數(shù)據(jù),從而更好的掌握這種關(guān)系,讓實驗中的模型更加符合實際的需求,同時也能將一些注意不到的,關(guān)聯(lián)性比較強的隱藏關(guān)系找到,這樣的效果會更好。正是由于注意力機制的優(yōu)勢讓很多問題的解決顯得非常高效。3.4序列到序列模型3.4.1經(jīng)典的序列到序列模型序列到序列模型(seq2seq)也就是人們說的編碼-解碼模型,這個模型的提出是谷歌公司在《Sequencetosequencelearningwithneuralnetworks》中提出[16]。序列到序列模型提出以來在深度學習領(lǐng)域獲得了很大的影響。該模型被廣泛的應用到機器翻譯、文本生成、語音識別、圖像識別等領(lǐng)域都是采用的序列到序列模型。序列到序列面模型有兩個部分,一個是解碼器,另一個是編碼器,編碼器的作用是獲取輸入序列的特征,然后將句子編碼成能夠映射出句子導致內(nèi)容的固定長度的向量。解碼器的話就是把之前得到的結(jié)果處理還原把還原后的結(jié)果進行給出。圖2-9為序列到序列模型結(jié)構(gòu)示意圖。圖2-10序列到序列模型結(jié)構(gòu)示意圖假設(shè)序列到序列模型的輸入序列為S=(x1,x2…xn),輸出的目標序列為T=(y1,C=f(x1,x2yi=q(C,y1,y其中f代表編碼器,q代表解碼器,從公式中可以看出解碼器的輸出與之前的輸出有關(guān),在解碼是很多人都用雙向RNN、雙向LSTM來獲取文本的信息,而在解碼階段則用單向的循環(huán)神經(jīng)網(wǎng)絡,因為解碼階段無法獲得之后的信息,所以本文中要采用單向模型。3.4.2基于注意力機制的序列到序列模型經(jīng)典的序列到序列模型的應用十分廣泛,但是也存在著些問題。最大的缺點在于編碼器和解碼器之間只有一個固定的語義向量C進行聯(lián)系,每時每刻的語義向量的值都是固定的,并且這個語義向量無法將整個序列的信息表示,這樣的解碼器在歷史的信息和固定的語義向量C進行輸出,這樣的導致一些強相關(guān)的輸入信息不能夠很好的表現(xiàn)出來,使得結(jié)果不能滿足需求。在這種情況下,一種基于注意力機制的序列到序列模型提出來了,Bahdanau等人將注意力機制應用于序列到序列模型中[17],來克服之前提到的不足。如下圖所示的添加注意力機制的模型。在圖中可以看出Encode和Decoder之間不是固定的語義向量,不同的語義向量表示了每個時刻相關(guān)度最高的輸入信息。如圖2-11所示。圖2-11添加注意力機制模型示意圖假設(shè)基于注意力機制的序列到序列模型輸入的源序列為S=(x1,x2…xn),輸出的目標序列為T=(y_1,y_2…y_n),此時模型的計算過程可以表示為yi=q(Ci其中CiCi=j=1n其中αijαij=exp?(e其中,eij=F(Si 其中,Si-1表示解碼器第i-1時刻的隱藏層狀態(tài),函數(shù)F(a,b)表示(a,b)的相似度。注意力權(quán)值的計算的過程在圖2-11圖2-10注意力權(quán)值計算過程3.5基于序列到序列的對聯(lián)自動生成實現(xiàn)本文將對聯(lián)生成模型的具體操作,其中包含對聯(lián)生成模型的構(gòu)建過程,還有模型的實現(xiàn)。模型的實現(xiàn)采用的經(jīng)典的序列到序列的生成方法。由于生成的句子主要由前面已經(jīng)存在的詞來預測下一個詞,前后詞之間有一定的相關(guān)性,循環(huán)神經(jīng)網(wǎng)絡的同層節(jié)點相互關(guān)聯(lián)能夠?qū)⑦@種之前的聯(lián)系體現(xiàn)出來,而且同層節(jié)點共享權(quán)值,因此本文在實驗過程中選用的是RNNEncoder-Decoder。常用的RNN結(jié)構(gòu)需要將輸入壓縮成一個固定長度的向量,但是在實際中很難處理一些較長的句子,特別是在訓練過程中遇到的,這個問題在Cho等人在2014年的論文[18]已經(jīng)提出來了。根據(jù)實際情況本文編碼階段采用的是雙向RNN結(jié)構(gòu),在解碼階段本文采用GRU結(jié)構(gòu),目的是為了讓每次輸出語句充分利用輸入的信息產(chǎn)生對輸出序列的影響,本文在解碼階段采用了注意力機制。3.5.1輸入處理本文的主要任務的基本模式就是,用戶輸入上聯(lián)輸出對應的下聯(lián),這里的輸入上聯(lián)是漢字組成的序列。首先必須讓計算機能夠識別的文字,把文字轉(zhuǎn)化為一個向量就是所謂的詞向量,在之前的章節(jié)已經(jīng)講到了,但是對于對聯(lián)這種特別的形式,普通的有一些不同,一般的來說只需要考慮詞語之間與訓練序列中的前后關(guān)系。而對于對聯(lián)不僅需要考慮詞語之間的關(guān)系,還需要考慮上下聯(lián)中對應的位置詞語之間的關(guān)系。因此在訓練詞向量的時候?qū)⑸舷侣?lián)對應位置考慮在內(nèi),也就是加入到上下文中,這樣的詞向量稱為對聯(lián)字向量。舉一個簡單的例子,有對聯(lián)“一粒米中藏世界,半邊鍋內(nèi)煮乾坤”,比如本文預測下聯(lián)的第三個字“鍋”。按照常用的方法通常會用到上下文中前n個詞語,如果取n=2,那么就要取“半”、“邊”、“內(nèi)”、“煮”,也就“鍋”字前兩個字和后兩個字。假設(shè)s(i)為待預測的字所在的位置,p(i)為對應上聯(lián)或者下聯(lián)中相應位置的字的話,那么在預測“鍋”的時候輸入的上下文應該分別為p(i-1)、p(i)、s(i+1)、和p(i+1),即“?!薄ⅰ懊住?、“內(nèi)”、“中”,上下文中不僅要有本聯(lián)中的與待測字相鄰的字也要有上聯(lián)中對應的字,如下圖3-1所示的預測詞語過程。圖3-1預測詞語過程3.5.2編碼階段根據(jù)對聯(lián)這種特殊的形式,本文在編碼階段使用的是雙向循環(huán)神經(jīng)網(wǎng)絡的改進網(wǎng)絡,也就是本文之前提到的長短時循環(huán)記憶網(wǎng)絡。在之前的章節(jié)中已經(jīng)做該網(wǎng)絡與了詳細的敘述,該網(wǎng)絡與RNN沒有本質(zhì)上的區(qū)別,差異主要是在隱藏層狀態(tài)的函數(shù)。在本次使用的網(wǎng)絡中有兩點的改進:(1)位置不同的詞影響力的不同,距離越遠的影響力也就越小,可以通過加權(quán)來體現(xiàn),距離越近的權(quán)值也就越大,影響力也就越大。(2)在出現(xiàn)誤差的時候,由于誤差可能是由于一個詞導致的,也可能是多個,因此在本文中只對當前的權(quán)值進行更新。該網(wǎng)絡在序列數(shù)據(jù)上得到了廣泛的應用,在自然語言處理,機器翻譯等都取得了很好的成績。在LSTM中首先就是要確定那些信息要拋棄,這個決定通過一個稱為忘記門層完成。該門會讀取ht-1和xt,會出來一個在0和1之間的值給每個細胞Ct-1一個值,1是留下來,0是不要。圖3-2決定丟棄信息接下來確定新的信息存放在細胞中,在這個過程中包括2個部分:第一,sigmoid層稱“輸入門層”決定什么值將要更新。接著用tanh層生成新的候選值,同時也要加上Ct,最后結(jié)合起來更新一下就行了。第二,將兩個信息來產(chǎn)生的更新。如圖3-3圖3-3確定更新的信息當所有的工作完成之后需要更新細胞的狀態(tài),Ct-1更新為C圖3-4更新細胞的狀態(tài)再更新細胞的狀態(tài)之后,需要進行一個過濾過程。當然,需用用sigmoid確定輸出的結(jié)果,然后用tanh處理得到一個值,將這個值與sigmoid門做乘法,確定輸出的結(jié)果。在語言模型中,當遇到一個主語時,可能就需要一個形容詞相關(guān)的信息。如圖3-5所示輸出信息。圖3-5輸入信息對于本文來說,采用的是雙向的LSTM,一個從前向后一個則是相反。正向和反向的實際上沒有很大的差距,只是輸入序列的有所不同,正向得到的隱藏向量序列記做(h1,…h(huán)t,)方向向右,反向得到的隱藏序列記為(h1,3.5.3解碼階段解碼階段的任務主要是根據(jù)輸入的信息的中間語義以及前面生成的歷史信息來生成此時需要輸出的詞語,在解碼階段依然是LSTM網(wǎng)絡,與基礎(chǔ)的Decoder不同的是,基礎(chǔ)的每一個中間語義都是固定不變的,對字與字之間的關(guān)聯(lián)性影響非常小,但是如果在上聯(lián)中只有對應的字有作用,上聯(lián)中其它位置的字影響較小,此時在采用這種方法顯然不能滿足要求。為了更好地體現(xiàn)上聯(lián)每個字對下聯(lián)每個字的影響程度的不同,在實驗設(shè)計是的解碼階段加入了attention機制。AM模型可以說是在NLP領(lǐng)域中的很大的突破,并且在很多場景得到證實。在解碼階段加入attention,在生成每一個中間語義向量都是不相同的,根據(jù)當前生成字的變化而變化的。在加入AM模型中的Encoder-Decoder框架,本文采用了一種模型配置,Encoder和Decoder均采用了RNN結(jié)構(gòu),圖3-6為基于RNN-RNN結(jié)構(gòu)的編碼解碼框架。絕大多數(shù)的AM模型都是采取RNN-RNN的框架。對于RNN的解碼器來說假如要生成Yi,在時刻i要知道隱藏層輸出值Hi,這時可以用i時刻隱藏層的狀態(tài)節(jié)點Hi依次和輸入句子中對應的RNN隱藏層節(jié)點狀態(tài)的hi進行對比,然后將通過函數(shù)F(hi,Hi)來得到圖3-6基于RNN-RNN結(jié)構(gòu)的編碼解碼框架上是AM的基本思想,在不同的領(lǐng)域會有不同的用法。在生成目標單詞語的時候,AM模型決定生成這個詞語的時候收到的輸入詞語的影響程度不同,所以AM模型也可以稱之為影響力模型,對于本文的對聯(lián)生成而言相對應位置上的字更加緊密的聯(lián)系,所以AM模型顯得非常符合本文的需求。3.6模型訓練與結(jié)果分析3.6.1模型訓練在模型訓練過程中使用的是經(jīng)過處理之后的數(shù)據(jù),在本文中選取的訓練集的數(shù)據(jù)為70多萬條數(shù)據(jù)用來進行訓練模型,用4000條數(shù)據(jù)作為測試集進行測試,并且在本文當中所需要的字典來源于詞典中9130個字作為詞向量的訓練,根據(jù)對聯(lián)當中每個字之間存的關(guān)聯(lián)性在訓練中進行選擇。在訓練的參數(shù)設(shè)計階段,本文中采用1024個隱藏單元,層數(shù)為4層,Dropout參數(shù)設(shè)置經(jīng)過多次修改后設(shè)置為0.2,批訓練大小根據(jù)電腦硬件的條件進行設(shè)置,本文中的批訓練大小為64,在實驗過程中設(shè)置的學習效率為通常人們設(shè)計的0.001。而對于對聯(lián)這種特殊的形式以及本文訓練集數(shù)量的龐大,因此在訓練次數(shù)設(shè)計上盡可能的大,這樣的話損失率才有可能到達實驗的期望值,在訓練模型時每100次保存一次。因此在本次的實驗中我們在實際的操作中訓練模型需要用到的系統(tǒng)環(huán)境以及訓練的參數(shù)的設(shè)置,根據(jù)實際情況如下表3-1所示.表3-1系統(tǒng)環(huán)境與訓練參數(shù)系統(tǒng)環(huán)境環(huán)境參數(shù)電腦系統(tǒng)Win1064位編寫語言Python編寫軟件Pycharm電腦CPUI5每批次對聯(lián)數(shù)量64Python環(huán)境3.65TensorFlow版本1.123.6.2結(jié)果分析對聯(lián)有一定的特殊格式要求,其中最為關(guān)鍵的一點就是對仗工整。其中有6要素和6禁忌。其中的6要素有:字數(shù)相等、內(nèi)容相當,詞性相當,結(jié)構(gòu)相稱,節(jié)奏相應,平仄相諧。其中對聯(lián)字數(shù)是必須要相同的,如果字數(shù)不相同的話那就不是對聯(lián),而且對聯(lián)的內(nèi)容要相關(guān),相關(guān)不僅僅只有正相關(guān)還有反相關(guān),所謂的正相關(guān)從相同的角度進行相互的補充,而反相關(guān)則是從相反的角度進行相互反襯、對照。如果上下聯(lián)之間的關(guān)系沒有任何的關(guān)聯(lián)可言的話,會讓人感覺到特別的別扭與生硬,絲毫沒有對聯(lián)的文學效果更別說這是對聯(lián)了。而且還有一點是對聯(lián)的詞性相當、結(jié)構(gòu)相稱,其主要是上下聯(lián)對應位置的詞語性質(zhì)應該相同或者相似,就比如來說名詞對應的應該是名詞,動詞對應的應該是動詞。還有一點是平仄相諧,其實就是平仄相對和平仄交替,也就是說漢字的拼音一聲調(diào)與漢字的二聲調(diào)為平調(diào),漢字是三聲調(diào)與漢字的四聲調(diào)為仄調(diào)。就本實驗來說輸入上聯(lián)生成的下聯(lián)的結(jié)果如表3-2所示。表3-2對聯(lián)模型測試表上聯(lián)下聯(lián)天街小雨潤如酥地面春風暖似冰悠悠乾坤共老浩浩日月同輝民安國泰逢盛世人壽年豐慶新春萬馬爭飛躍千帆競發(fā)揚在這里以最后一個進行分析,首先字數(shù)方面,上聯(lián)是五個字,下聯(lián)也是五個字,字數(shù)相同,逐字分析,第一個字“萬”字,與下聯(lián)的“千”字都為數(shù)量詞性相對,上聯(lián)第二個字“馬”字與下聯(lián)的第二個字“帆”字都為名詞,上聯(lián)第三個字“爭”字與下聯(lián)的第三個字“競”字都為動詞,上聯(lián)第四個詞“飛躍”與下聯(lián)的第四個詞“發(fā)揚”都為動詞。因此在結(jié)構(gòu)上相對應,內(nèi)容上相關(guān)聯(lián)。而對于平仄押韻來說,上聯(lián)的平仄規(guī)律為:仄平平平仄;下聯(lián)的平仄規(guī)律為:平仄仄仄平。此時符合對聯(lián)的格式如下表3-3所示:表3-3結(jié)果分析上聯(lián)下聯(lián)上聯(lián)平仄情況下聯(lián)平仄情況萬千仄平馬帆平仄爭競平仄飛發(fā)平仄躍揚仄平從表中我們可以看出,模型生成的對聯(lián)結(jié)果在內(nèi)容和格式上是十分不錯的,滿足對聯(lián)的格式要求,同時在含義上也是十分滿足對聯(lián)的格式要求,平仄也相對稱。因此本模型的測試結(jié)果非常棒。第四章基于吟詩作對方法的應用4.1系統(tǒng)設(shè)計本章節(jié)基于上文實現(xiàn)并經(jīng)過測試的吟詩作對的可視化界面的設(shè)計,采用python的Flask框架,F(xiàn)lask框架是一個輕量級的web框架,其特點是靈活性高開發(fā)成本低,比較符合本文的要求。對于前臺的設(shè)計本文只有一個輸入框和一個按鈕,下面是一個框?qū)⑼暾膶β?lián)進行展示,方便人們更加直觀的體會到模型生成的效果,然后寫出前后臺交互的接口,通過接口讓前后臺的數(shù)據(jù)進行交互,通過用戶的輸入點擊生成在下方生成對聯(lián)的下聯(lián),吟詩作對系統(tǒng)的流程圖,如圖4-1所示。圖4-1吟詩作對系統(tǒng)流程圖從流程圖中可以看出,吟詩作對系統(tǒng)的設(shè)計流程比較簡單,用戶通過自己想生成的對聯(lián),在本文給出的前端頁面進行手動輸入,點擊生成按鈕,系統(tǒng)將會把輸入框內(nèi)的漢字傳遞給已經(jīng)訓練好的模型進行處理,生成相應的詞向量,然后根據(jù)詞向量之間的相關(guān)性進行生成下聯(lián),然后將用戶輸入的上聯(lián)與模型自動生成的下聯(lián)在系統(tǒng)中顯示出來。4.2系統(tǒng)實現(xiàn)系統(tǒng)的實現(xiàn)部分主要有兩個內(nèi)容:一個是將實驗生成的模型進行應用,,另一個則是讓用戶能夠操作并且能夠看見的頁面,正如前面提到的,在本文中采用的python的Flask框架進行設(shè)計,根據(jù)實際需求進行前端頁面的設(shè)計,其可視化的界面如圖4-2所示。圖4-2前端頁面展示圖在系統(tǒng)的設(shè)計中調(diào)用實驗中的模型代碼,如圖4-3所示,系統(tǒng)的讓用戶操作的代碼如圖4-4所示。在實現(xiàn)可視化的界面以整個界面作為展示,在以后可以適當?shù)恼{(diào)整其大小插入到需要的網(wǎng)頁上,作為網(wǎng)站內(nèi)容的一部分。圖4-3模型調(diào)用代碼展示圖4-4前臺設(shè)計部分代碼展示總結(jié)與展望在本文中首先對已經(jīng)存在對聯(lián)的研究工作的部分進行介紹,包括一些國外類似的例子,以及本次實驗的目的。介紹了數(shù)據(jù)預處理階段詞向量的相關(guān)內(nèi)容。介紹了序列生成任務常用的網(wǎng)絡結(jié)構(gòu)。本文在第二章中介紹了在完成本文中的額任務敘述以及數(shù)據(jù)預處理的過程。本文在第三章對聯(lián)生成任務所使用的網(wǎng)絡結(jié)構(gòu),包括編碼階段選用的相關(guān)神經(jīng)網(wǎng)絡的相關(guān)知識介紹以及解碼階段的AM機制的運用。在本文的最后部分運用前臺與后臺的技術(shù)通過編寫接口的方式讓數(shù)據(jù)進行傳輸,檢驗模型的效果,并且根據(jù)對聯(lián)的格式要求進行評判模型的好壞。但是在本文的數(shù)據(jù)來源上我們選用了部分的詩歌作為我們的訓練集,雖然在格式和內(nèi)容上有很多的相似之處但是也存在這部分差異可能會導生成的對聯(lián)在分析的時候降低模型的效果。因此在今后的實驗中數(shù)據(jù)集如果全部嚴格采用對聯(lián)。得出來的結(jié)果會更加的精準效果也會更好。參考文獻[1]HintonGE.Learningdistributedrepresentationsofconcepts.[C]//EighthConferenceoftheCognitiveScienceSociety,1986.[2]LongJiangandMingZhou.Generatingchinesecoupletsusingastatisticalmtapproach[C].InProceedingsofthe22ndInternationalConferenceonComputationalLinguistics-Volume1,pages377–384.AssociationforComputationalLinguistics.2008.[3]ZhouM,JiangL,HeJ.GeneratingChinesecoupletsandquatrainusingastatisticalapproach[C]//Proceedingsofthe23rdPacificAsiaConferenceonLanguage,InformationandComputation,Volume1.2009,1.[4]KishorePapineni,SalimRoukos,ToddWard,andWei-JingZhu.2002.Bleu:amethodforautomaticevaluationofmachinetranslation.InProceedingsofthe40thannualmeetingonassociationforcomputationallinguistics,pages311–318.AssociationforComputationalLi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟件工程教程(微課版)課件 第10章 軟件項目管理
- 創(chuàng)新物流文員工作總結(jié)
- 膝關(guān)節(jié)鏡換護理查房
- 蛋與蛋制品安全與衛(wèi)生
- 蛋糕烘焙裱花培訓課件
- 蜂膠臨床應用研究
- 《關(guān)于教育的讀后感》
- 腦脊液外漏的護理教案
- 酒店前廳培訓報告
- 小王子繪本故事深度解讀教案設(shè)計
- 計算機網(wǎng)絡知到智慧樹章節(jié)測試課后答案2024年秋貴州財經(jīng)大學
- 酒店2025年應急疏散演練計劃
- 第一單元第2課《生活之美》課件-七年級美術(shù)下冊(人教版)
- 2025年高考作文備考之題目解析及4篇范文:“生活是否還需要游戲”
- 2025年中國秸稈發(fā)電行業(yè)市場前瞻與投資預測分析報告
- 2025年七下道德與法治教材習題答案
- 新教科版一年級科學下冊第二單元第5課《它們吃什么》課件
- 坡面土壤侵蝕過程模擬-深度研究
- 互聯(lián)網(wǎng)護理服務典型案例
- 礦泉水購銷合同范本2025年
- PLC培訓課件教學課件
評論
0/150
提交評論