解決方案:如何使用 RNN 模型實(shí)現文本自動(dòng)生成
優(yōu)采云 發(fā)布時(shí)間: 2022-11-27 22:53解決方案:如何使用 RNN 模型實(shí)現文本自動(dòng)生成
在自然語(yǔ)言處理中,另一個(gè)重要的應用領(lǐng)域是文本的自動(dòng)書(shū)寫(xiě)。關(guān)鍵詞、關(guān)鍵短語(yǔ)、自動(dòng)摘要提取都是該領(lǐng)域的應用示例。但是,這些應用程序是從多到少產(chǎn)生的。這里介紹另外一個(gè)應用:從less到more的生成,包括句子復制,從關(guān)鍵詞、話(huà)題等生成文章或段落。
基于關(guān)鍵詞的自動(dòng)文本生成模型
本章第一節介紹了一些基于關(guān)鍵詞生成一段文本的處理技巧。主要是應用關(guān)鍵詞抽取、同義詞識別等技術(shù)實(shí)現的。下面對實(shí)現過(guò)程進(jìn)行描述和介紹。
場(chǎng)景
在投放搜索引擎廣告時(shí),我們需要為廣告寫(xiě)一句話(huà)描述。通常,模型的輸入是一些 關(guān)鍵詞。比如我們要投放的廣告是鮮花廣告,假設廣告的關(guān)鍵詞是:“鮮花”,“便宜”。對于此輸入,我們希望生成一定數量的候選單句廣告描述。
對于這種場(chǎng)景,也可以輸入一個(gè)句子。比如之前手動(dòng)寫(xiě)的一個(gè)例子:“這個(gè)周末,小白花只要99元,還包郵!”。需要根據這句話(huà)重寫(xiě)一定數量的表達不同但意思相近的句子。這里我們介紹一種基于關(guān)鍵詞的文本(一句話(huà))自動(dòng)生成模型。
原則
模型處理流程如圖1所示。
圖1 候選句提取完成后,需要根據候選句的個(gè)數判斷后續操作。如果篩選出的候選句子大于或等于要求的個(gè)數,則按照句子相似度從低到高選擇指定個(gè)數的句子。否則,復制句子。這里采用了根據指定模板進(jìn)行同義詞替換重寫(xiě)的方案。
完成
實(shí)現候選語(yǔ)句計算的代碼如下:
Map result = new HashMap();
if (type == 0) {//輸入為關(guān)鍵詞
result = getKeyWordsSentence(keyWordsList);
}else {
result = getWordSimSentence(sentence);
}
//得到候選集數量大于等于要求的數量則對結果進(jìn)行裁剪
if (result.size() >= number) {
result = sub(result, number);
}else {
//得到候選集數量小于要求的數量則對結果進(jìn)行添加
result = add(result, number);
}
實(shí)現句子相似度過(guò)濾計算的代碼如下。
for (String sen : sentenceList) {
//對待識別語(yǔ)句進(jìn)行分詞處理
List wordsList1 = parse(sentence);
List wordsList2 = parse(sen);
//首先判斷兩個(gè)語(yǔ)句是不是滿(mǎn)足目標變換
boolean isPatternSim = isPatternSimSentence(wordsList1, wordsList2);
if (!isPatternSim) {//不滿(mǎn)足目標變換
//首先計算兩個(gè)語(yǔ)句的bi-gram相似度
double tmp = getBigramSim(wordsList1, wordsList2);
//這里的篩選條件是相似度小于閾值,因為bi-gram的相似度越小,代表兩者越相似
if (threshold > tmp) {
result.put(sen,tmp);
<p>
" />
}
}else {
result.put(sen,0.0);
}
}</p>
擴張
本節涉及的場(chǎng)景是:文本到文本的生成。該場(chǎng)景一般會(huì )涉及到文本摘要、句子壓縮、文本復制、句子融合等文本處理技術(shù)。其中,該部分涉及文本摘要和句子復制兩項技術(shù)。前文提到,文本摘要主要涉及:關(guān)鍵詞抽取、詞組抽取、句子抽取等。句子復制根據實(shí)現手段的不同大致可分為以下幾種。
基于統計模型和語(yǔ)義分析的生成模型重寫(xiě)方法。這類(lèi)方法是根據語(yǔ)料庫中的數據進(jìn)行統計,得到大量的轉換概率分布,然后根據已知的先驗知識替換輸入語(yǔ)料庫。這種方法的句子是根據分析結果生成的。從某種意義上說(shuō),生成是在分析的指導下實(shí)現的。因此,可以重寫(xiě)生成的句子以具有良好的句子結構。但是它所依賴(lài)的語(yǔ)料庫非常龐大,需要對大量數據進(jìn)行人工標注。對于這些問(wèn)題,新的深度學(xué)習技術(shù)可以解決部分問(wèn)題。同時(shí)結合知識圖譜的深度學(xué)習,它可以更好地利用人類(lèi)知識,最大限度地減少對訓練樣本的數據需求。RNN模型實(shí)現文本自動(dòng)生成
6.1.2節介紹了一些基于短文本輸入得到長(cháng)文本的處理技術(shù)。這里主要使用了RNN網(wǎng)絡(luò ),利用其處理序列數據的能力來(lái)實(shí)現文本序列數據的自動(dòng)填充。下面對其實(shí)現細節進(jìn)行說(shuō)明和介紹。
場(chǎng)景
在做廣告的過(guò)程中,我們可能會(huì )遇到這樣的場(chǎng)景:一句話(huà)生成描述文字,文字長(cháng)度在200到300個(gè)字符之間。對于某些主題,輸入也可能是 關(guān)鍵詞。
這時(shí)候,我們就需要一種算法,根據少量的文本輸入,生成大量的文本。這里有一個(gè)算法:RNN算法。我們在5.3節中介紹了這個(gè)算法,并利用這個(gè)算法實(shí)現了拼音到漢字的轉換。其實(shí)這兩種場(chǎng)景的模式是一樣的,都是從給定的文本信息中生成其他的文本信息。不同的是前者是生成當前元素對應的漢字,這里是生成當前元素對應的下一個(gè)漢字。
原則
和 5.3 節一樣,我們這里仍然使用 Simple RNN 模型。因此,整個(gè)計算流程圖如圖3所示。
圖 3
編碼
實(shí)現特征訓練計算的代碼如下:
public double train(List x, List y) {
alreadyTrain = true;
double minError = Double.MAX_VALUE;
for (int i = 0; i < totalTrain; i++) {
//定義更新數組
double[][] weightLayer0_update = new double[weightLayer0.length][weightLayer0[0].length];
double[][] weightLayer1_update = new double[weightLayer1.length][weightLayer1[0].length];
double[][] weightLayerh_update = new double[weightLayerh.length][weightLayerh[0].length];
List hiddenLayerInput = new ArrayList();
List outputLayerDelta = new ArrayList();
double[] hiddenLayerInitial = new double[hiddenLayers];
//對于初始的隱含層變量賦值為0
Arrays.fill(hiddenLayerInitial, 0.0);
hiddenLayerInput.add(hiddenLayerInitial);
double overallError = 0.0;
//前向網(wǎng)絡(luò )計算預測誤差
overallError = propagateNetWork(x, y, hiddenLayerInput,
outputLayerDelta, overallError);
if (overallError < minError) {
minError = overallError;
<p>
" />
}else {
continue;
}
first2HiddenLayer = Arrays.copyOf(hiddenLayerInput.get(hiddenLayerInput.size()-1), hiddenLayerInput.get(hiddenLayerInput.size()-1).length);
double[] hidden2InputDelta = new double[weightLayerh_update.length];
//后向網(wǎng)絡(luò )調整權值矩陣
hidden2InputDelta = backwardNetWork(x, hiddenLayerInput,
outputLayerDelta, hidden2InputDelta,weightLayer0_update, weightLayer1_update, weightLayerh_update);
weightLayer0 = matrixAdd(weightLayer0, matrixPlus(weightLayer0_update, alpha));
weightLayer1 = matrixAdd(weightLayer1, matrixPlus(weightLayer1_update, alpha));
weightLayerh = matrixAdd(weightLayerh, matrixPlus(weightLayerh_update, alpha));
}
return -1.0;
}</p>
實(shí)現預測計算的代碼如下:
public double[] predict(double[] x) {
if (!alreadyTrain) {
new IllegalAccessError("model has not been trained, so can not to be predicted!!!");
}
double[] x2FirstLayer = matrixDot(x, weightLayer0);
double[] firstLayer2Hidden = matrixDot(first2HiddenLayer, weightLayerh);
if (x2FirstLayer.length != firstLayer2Hidden.length) {
new IllegalArgumentException("the x2FirstLayer length is not equal with firstLayer2Hidden length!");
}
for (int i = 0; i < x2FirstLayer.length; i++) {
firstLayer2Hidden[i] += x2FirstLayer[i];
}
firstLayer2Hidden = sigmoid(firstLayer2Hidden);
double[] hiddenLayer2Out = matrixDot(firstLayer2Hidden, weightLayer1);
hiddenLayer2Out = sigmoid(hiddenLayer2Out);
return hiddenLayer2Out;
}
擴張
文本的生成根據輸入法的不同可以分為以下幾種:
文本到文本生成。也就是說(shuō),輸入是文本,輸出也是文本。圖片到文字。也就是說(shuō),輸入是圖像,輸出是文本。數據到文本。也就是說(shuō),輸入是數據,輸出是文本。其他。即輸入的形??式不是上面三種,但輸出的也是文本。因為這類(lèi)輸入很難泛化,所以歸類(lèi)為other。
其中,第二類(lèi)和第三類(lèi)最近發(fā)展非???,尤其是隨著(zhù)深度學(xué)習、知識圖譜等前沿技術(shù)的發(fā)展?;趫D像生成文字描述的實(shí)驗結果不斷被刷新?;贕AN(反神經(jīng)網(wǎng)絡(luò ))的圖像文本生成技術(shù)實(shí)現了非常大的地圖,不僅可以根據圖片生成非常好的描述,還可以根據文本輸入生成相應的圖片。
從數據生成文本目前主要應用于新聞寫(xiě)作領(lǐng)域。中文和英文都有很大的進(jìn)步。英文的以美聯(lián)社為代表,中文的以騰訊為代表。當然,這兩者都不是純粹基于數據的,而是結合了以上四種情況的新聞寫(xiě)作。
從技術(shù)上講,目前主流的實(shí)現方式有兩種:一種是基于符號,以知識圖譜為代表,這類(lèi)方式更多地利用了人類(lèi)的先驗知識,對文本的處理收錄
了更多的語(yǔ)義元素。另一種是基于統計(connection),即根據大量文本學(xué)習不同文本之間的組合規則,然后根據輸入作為輸出推斷出可能的組合方式。隨著(zhù)深度學(xué)習與知識圖譜的結合,兩者之間存在明顯的融合現象,這應該是實(shí)現未來(lái)技術(shù)突破的重要節點(diǎn)。
解決方案:網(wǎng)文自動(dòng)*敏*感*詞*特點(diǎn)
詳細介紹
自動(dòng)網(wǎng)頁(yè)文章*敏*感*詞*是一款可以自動(dòng)生成文章的實(shí)用工具。在這里,文章自動(dòng)*敏*感*詞*體積小,用戶(hù)可以免費使用!用戶(hù)可以輕松寫(xiě)文章、小說(shuō)等,喜歡就下載網(wǎng)頁(yè)文字自動(dòng)*敏*感*詞*試試吧?。?!
自動(dòng)網(wǎng)頁(yè)文本*敏*感*詞*的特點(diǎn)
1、寫(xiě)小說(shuō)、日記、散文,一切皆有可能。
2.支持撤銷(xiāo)、重做、快捷標點(diǎn)、自動(dòng)排版、夜間模式、常用詞、字數統計等常用功能。
3.支持小黑屋,強制碼字,不打擾。
4.支持回收站,不用擔心誤刪。
5.支持調整隨意調整章節順序。
" />
6.更*敏*感*詞*等你發(fā)現,快下載體驗吧!
網(wǎng)頁(yè)文字自動(dòng)生成功能
1.所有生成文章均支持手機復制粘貼,直接復制即可隨時(shí)分享!
2.非常有趣的軟件,很多不同類(lèi)型的文章可以幫你解決所有問(wèn)題!
3.幫你快速解決自己的寫(xiě)作問(wèn)題,輕松搞定各類(lèi)文章!
自動(dòng)網(wǎng)頁(yè)文本*敏*感*詞*的優(yōu)點(diǎn)
1.支持快速生成各類(lèi)文章
2、頁(yè)面布局清晰,方便用戶(hù)查看
" />
3.設計精美,不用擔心手機內存丟失
自動(dòng)網(wǎng)頁(yè)文本*敏*感*詞*的亮點(diǎn)
1、文章*敏*感*詞*可以生成各類(lèi)原創(chuàng )文章,應用于不同領(lǐng)域,為不同領(lǐng)域的用戶(hù)帶來(lái)收益或利益最大化。不用擔心重復或相似,它適用于自定義原創(chuàng )文章*敏*感*詞*,您可以隨意使用。
2、一款通過(guò)你輸入的話(huà)題和附加內容,一鍵生成廢話(huà)文章和營(yíng)銷(xiāo)號文章的APP。軟件整合了廢話(huà)文章和各大營(yíng)銷(xiāo)號的常用套路文章。操作簡(jiǎn)單,內容有趣,非常適合發(fā)布空間和觀(guān)看平臺。
3、文章*敏*感*詞*還包括文章自動(dòng)處理(混排和隨機插入)、在線(xiàn)詞庫、在線(xiàn)作文素材庫、在線(xiàn)詞典、長(cháng)尾詞合集、文章合集、短網(wǎng)址轉換、文件編碼轉換、隨機字符串插入和其他增強功能。
對自動(dòng)網(wǎng)絡(luò )文章*敏*感*詞*的評論
網(wǎng)頁(yè)文字自動(dòng)*敏*感*詞*是一款免費自動(dòng)生成小說(shuō)的軟件,用戶(hù)可以在這里免費使用!喜歡的朋友趕緊下載試試吧?。?!


