轉(zhuǎn)載自http://mp.weixin.qq.com/s/0j7605kNtMgvGmAYGWBRWg
【嵌牛導讀】:在自然語言處理中滴肿,另外一個重要的應用領(lǐng)域汛闸,就是文本的自動撰寫氓扛。關(guān)鍵詞、關(guān)鍵短語分别、自動摘要提取都屬于這個領(lǐng)域中的一種應用爹耗。不過這些應用,都是由多到少的生成或链。這里我們介紹其另外一種應用:由少到多的生成惫恼,包括句子的復寫,由關(guān)鍵詞澳盐、主題生成文章或者段落等祈纯。
【嵌牛鼻子】:文本生成;RNN
【嵌牛提問】:什么是RNN呢叼耙?又如何使用 RNN 模型實現(xiàn)文本自動生成呢腕窥?
【嵌牛正文】:
1. 基于關(guān)鍵詞的文本自動生成模型
基于關(guān)鍵詞生成一段文本的一些處理技術(shù)。其主要是應用關(guān)鍵詞提取筛婉、同義詞識別等技術(shù)來實現(xiàn)的簇爆。下面就對實現(xiàn)過程進行說明和介紹。
2. 場景
在進行搜索引擎廣告投放的時候爽撒,我們需要給廣告撰寫一句話描述入蛆。一般情況下模型的輸入就是一些關(guān)鍵詞。比如我們要投放的廣告為鮮花廣告硕勿,假設廣告的關(guān)鍵詞為:“鮮花”哨毁、“便宜”。對于這個輸入我們希望產(chǎn)生一定數(shù)量的候選一句話廣告描述源武。
對于這種場景扼褪,也可能輸入的是一句話想幻,比如之前人工撰寫了一個例子:“這個周末,小白鮮花只要99元话浇,并且還包郵哦脏毯,還包郵哦!”幔崖。需要根據(jù)這句話復寫出一定數(shù)量在表達上不同食店,但是意思相近的語句。這里我們就介紹一種基于關(guān)鍵詞的文本(一句話)自動生成模型岖瑰。
3. 原理
模型處理流程如圖1所示叛买。
01首先根據(jù)輸入的數(shù)據(jù)類型不同,進行不同的處理蹋订。如果輸入的是關(guān)鍵詞,則在語料庫中選擇和輸入關(guān)鍵詞相同的語句刻伊。如果輸入的是一個句子露戒,那么就在語料庫中選擇和輸入語句相似度大于指定閾值的句子。
02對于語料庫的中句子的關(guān)鍵詞提取的算法捶箱,則使用之前章節(jié)介紹的方法進行智什。對于具體的算法選擇可以根據(jù)自己的語料庫的形式自由選擇。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖2
03 語句相似度計算丁屎,這里按照圖2左邊虛線框中的流程進行計算:
04 首先對待計算的兩個語句進行分詞處理荠锭,對于分詞后的語句判斷其是否滿足模板變換,如果滿足則直接將語句放入候選集晨川,并且設置相似度為0证九。如果不滿足則進入到c)步進行計算。
05 判斷兩個語句是否滿足模板變換的流程圖共虑,如圖2中右邊虛線框所標記的流程所示:(1)首先判斷分詞后愧怜,兩個句子的詞是不是完全一樣,而只是位置不同妈拌,如果是則滿足模板變換的條件拥坛。(2)如果詞不完全相同,就看看對不同的詞之間是否可以進行同義詞變換尘分,如果能夠進行同義詞變換猜惋,并且變換后的語句兩個句子去公共詞的集合,該集合若為某一句話的全部詞集合培愁,則也滿足模板變換條件著摔。(3)如果上述兩個步驟都不滿足,則兩個句子之間不滿足模板變換竭钝。
06 對兩個句子剩余的詞分別兩兩計算其詞距離梨撞。假如兩個句子分別剩余的詞為雹洗,句1:“鮮花”、“多少錢”卧波、“包郵”时肿。句2:“鮮花”、“便宜”港粱、“免運費”螃成。那么其距離矩陣如下表所示:
07 得到相似矩陣以后,就把兩個句子中相似的詞替換為一個查坪,假設我們這里用“包郵”替換掉“免運費”寸宏。那么兩個句子的詞向量就變?yōu)椋壕?:<鮮花、多少錢偿曙、包郵>氮凝,句2:<鮮花、便宜望忆、包郵>罩阵。
08 對于兩個句子分別構(gòu)建bi-gram統(tǒng)計向量,則有:(1)句1:< begin,鮮花>启摄、<鮮花,多少錢>稿壁、<多少錢,包郵>、<包郵,end>歉备。(2)句2:< begin,鮮花>傅是、<鮮花,便宜>、<便宜,包郵>蕾羊、<包郵,end>喧笔。
這兩個句子的相似度由如下公式計算:
所以上面的例子的相似度為:1.0-2.0*2/8=0.5。
完成候選語句的提取之后肚豺,就要根據(jù)候選語句的數(shù)量來判斷后續(xù)操作了溃斋。如果篩選的候選語句大于等于要求的數(shù)量,則按照句子相似度由低到高選取指定數(shù)量的句子吸申。否則要進行句子的復寫梗劫。這里采用同義詞替換和根據(jù)指定模板進行改寫的方案。
4. 拓展
本節(jié)處理的場景是:由文本到文本的生成截碴。這個場景一般主要涉及:文本摘要梳侨、句子壓縮、文本復寫日丹、句子融合等文本處理技術(shù)走哺。其中本節(jié)涉及文本摘要和句子復寫兩個方面的技術(shù)。文本摘要如前所述主要涉及:關(guān)鍵詞提取哲虾、短語提取丙躏、句子提取等择示。句子復寫則根據(jù)實現(xiàn)手段的不同,大致可以分為如下幾種晒旅。
基于同義詞的改寫方法栅盲。這也是本節(jié)使用的方式,這種方法是詞匯級別的废恋,能夠在很大程度上保證替換后的文本與原文語義一致谈秫。缺點就是會造成句子的通順度有所降低,當然可以結(jié)合隱馬爾科夫模型對于句子搭配進行校正提升整體效果鱼鼓。
基于模板的改寫方法拟烫。這也是本節(jié)使用的方式。該方法的基本思想是迄本,從大量收集的語料中統(tǒng)計歸納出固定的模板硕淑,系統(tǒng)根據(jù)輸入句子與模板的匹配情況,決定如何生成不同的表達形式嘉赎。假設存在如下的模板喜颁。
rzv n, a a ——> a a, rzv n
那么對于(輸入):
這/rzv, 鮮花/n, 真/a, 便宜/a
就可以轉(zhuǎn)換為(輸出):
真/a, 便宜/a, 這/rzv, 鮮花/n
該方法的特點是易于實現(xiàn),而且處理速度快曹阔,但問題是模板的通用性難以把握,如果模板設計得過于死板隔披,則難以處理復雜的句子結(jié)構(gòu)赃份,而且,能夠處理的語言現(xiàn)象將受到一定的約束奢米。如果模板設計得過于靈活抓韩,往往產(chǎn)生錯誤的匹配。
基于統(tǒng)計模型和語義分析生成模型的改寫方法鬓长。這類方法就是根據(jù)語料庫中的數(shù)據(jù)進行統(tǒng)計谒拴,獲得大量的轉(zhuǎn)換概率分布,然后對于輸入的語料根據(jù)已知的先驗知識進行替換涉波。這類方法的句子是在分析結(jié)果的基礎上進行生成的英上,從某種意義上說,生成是在分析的指導下實現(xiàn)的啤覆,因此苍日,改寫生成的句子有可能具有良好的句子結(jié)構(gòu)。但是其所依賴的語料庫是非常大的窗声,這樣就需要人工標注很多數(shù)據(jù)相恃。對于這些問題,新的深度學習技術(shù)可以解決部分的問題笨觅。同時結(jié)合知識圖譜的深度學習拦耐,能夠更好地利用人的知識耕腾,最大限度地減少對訓練樣本的數(shù)據(jù)需求。
R