2017-05-24 20 views
3

我們已經構建了一個系統,可以分析一些數據並以簡單英語輸出一些結果(即無圖表等)。目前的實施依賴於大量的模板和一些隨機化,以儘可能多的文本。自然語言生成 - 如何超越模板

我們希望切換到更高級的東西,希望生成的文本重複性更低,聽起來更少機器人。我在谷歌上搜索了很多,但我找不到具體的東西。有任何想法嗎?

編輯:提供給NLG機制的數據是JSON格式。這裏是一個關於網站分析數據的例子。 json文件可能包含一個度量指標(例如訪問量),它是最近X天的價值,是否預期最後一個值,以及哪個維度(例如國家或銷售渠道)影響其變化。

當前的實現可以給這樣的事情:

在英國總體訪問主要來自ABC的電子郵件廣告系列達到10K(+ 20%DOD)和預期值以上10%。用戶主要登陸XXX頁面,而各個設備的增長保持一致。

我們正在尋找一種方法來減少對模板的依賴,聲音更加自然,並增加詞彙量。

+0

那麼什麼樣的數據是你的工作與,這些結果是什麼樣子?你是否想要聽起來更自然的句子,還是僅僅將詞彙混合起來? – patrick

+0

@patrick編輯我的文章 – Stergios

+0

這是一個相當廣泛的問題,所以我不確定它是否適合堆棧溢出。這就是說,爲什麼,特別是,你想擺脫模板?沒有更多的模板能夠幫助聽起來更自然,增加詞彙量,同時保持易維護性和可測試性? –

回答

1

您是否嘗試過神經網絡,尤其是LSTM和GRU架構?這些模型是預測單詞序列的最新發展。生成自然語言意味着生成一個單詞序列,以使它對於序列中的輸入和較早的單詞有意義。這相當於預測時間序列。 LSTM設計用於預測時間序列。因此,它通常用於預測單詞序列,給定輸入序列,輸入單詞或任何其他可嵌入矢量的輸入。

Tensorflow,Keras和Torch等深度學習庫都具有序列實現的順序,可以通過預測給定輸入的單詞序列來生成自然語言。

請注意,通常這些模型需要大量的訓練數據。

您需要滿足兩個條件,以便從這種模式中受益:

  1. 你應該能夠代表你的輸入作爲載體。
  2. 您需要相對大量的輸入/目標對。
+0

創建如此大量的輸入/目標對實際上並不可行。我還需要少一些黑盒子。 – Stergios

2

你在找什麼是一個熱門的研究領域和一個相當艱鉅的任務。目前沒有辦法產生100%有意義的多樣和自然的句子。一種生成句子的方法是使用n-gram。使用這些方法,您可以生成看起來更加自然和多樣的句子,這些句子看起來不錯,但可能無意義且語法錯誤。 更新的方法是使用深度學習。無論如何,如果你想生成有意義的句子,也許你最好的辦法是使用你當前的基於模板的方法。 你可以找到基於NLG這裏介紹的n-gram的基礎: Generating Random Text with Bigrams

這個工具的聲音,以實現一些自然語言生成最有名的技術:simplenlg