自然语言生成

自然語言生成（NLG）是自然語言處理的一部分，從知識庫或等等機器表述系統去生成自然語言。這種形式表述當作心理表述的模型時，心理語言學家會選用這個術語。

自然語言生成系統可以說是一種將資料轉換成自然語言表述的翻譯器。不過產生最終語言的方法不同於編譯程式，因為自然語言多樣的表達。NLG出現已久，但是商業NLG技術直到最近才變得普及。

自然語言生成可以視為自然語言理解的反向： 自然語言理解系統須要釐清輸入句的意涵，從而產生機器表述語言；自然語言生成系統須要決定如何把概念轉化成語言。

一個簡單的例子是套用信函的生成系統。這種系統通常沒有運用文法的知識，但是可以生成信函給消費者，例如告訴消費者信用卡的額度已達。換言之，簡單的系統運用版型，跟Word文件的郵件合併程式沒什麼差別，但是更複雜的NLG系統會靈活地產生文本。

正如自然語言處理的其它領域，自然語言生成可以使用明確的語言模型（例如文法）或者運用根據真人所寫的文本分析而成的統計模型。

示例
「蘇格蘭花粉預報系統」就是一個基於版型的簡單自然語言生成系統。該系統利用蘇格蘭幾個區域花粉預報的六個輸入數目，生成簡短的花粉等級文本作為輸出。

例如使用2005年7月1日的歷史資料，該軟體的輸出：
星期五花粉等級已從昨天的中級到今天的高級，全國大部分地區的數值在6到7。不過北部是中級，數值為4。
對比實際的預報（氣象員手擬）如下：
蘇格蘭大部分地區花粉量還是很高，為6級，東南部更是7級。只有北方島嶼及蘇格蘭東北角情況舒緩，花粉量中等。

步驟
生成文本的過程可以簡單到取用已準備好的章句，再用連結的文字組合起來。在簡單的領域如占星機器或個人化商業信件，成果可能令人滿意。不過複雜的自然語言生成系統必須經過規劃以及合併資訊的步驟，從而生成看似自然並且避免重複的文本。自然語言生成典型的步驟，例如戴爾與瑞特所提出的如下：

：決定在文本裡置入哪些資訊。用上一節花粉預報軟體為例，是否要明確提到東南部花粉級數為7。

：所傳達資訊的整體組織。例如決定先描述高花粉量地區，再提及低花粉量地區。

：合併類似的句子，讓文本更可讀、更自然。例如合併下兩個句子「星期五花粉等級已從昨天的中級到今天的高級」和「全國大部分地區的花粉等級在6到7」成為「星期五花粉等級已從昨天的中級到今天的高級，全國大部分地區的數值在6到7。」

：選用表達概念的文字。例如決定要用「中等」還是「中級」。

：產生能辨認物體或地區的。例如用「北方島嶼和蘇格蘭東北角」指涉蘇格蘭的某個地區。這個任務也包括決定代名詞以及其它的。

：根據句法學、構詞學、正寫法的規則產生實際的文本。

應用
大眾媒體向來以報導會說笑話的NLG系統為重點（參見「」），不過從商業的角度，最成功的NLG應用是從資料庫或資料集產生文字摘要的「資料轉文本」系統，這些系統通常除了文字生成外，也進行資料分析，特別是幾個已經建成的從氣象資料產生氣象報告文的系統。此類系統最早是加拿大的FoG，於1990年代開始製作英、法語的氣象報告，其成功引領了其它研究和商業系統。近年的一個研究顯示，使用者有時候偏好電腦產生的氣象報告，因為使用的術語比較一致。另一個研究顯示統計的技巧可以用來生成高品質的氣象報告。

1990年代自然語言生成開始用於財金和商業摘要。例如AC尼爾森研發的SPOTLIGHT系統，分析大量零售資料然後自動產生可讀的英文。

更近的NLG也用於摘要電子醫療記錄，已有商業應用問世，研究人員已顯示NLG摘要的醫療資料可以有效輔助醫療專業人員做決定。

內容生成系統可以輔助真人作者，讓寫作過程更有效率。例如利用搜索引擎應用界面，基於建立的內容生成工具，模擬作者根據各種搜尋結果形成內容，有如剪貼的寫作場景。相關度的驗證，對於過濾不相關的搜尋結果至為重要，方法基於匹配問題與可能答案的語法樹。另一種方法利用真人寫的文本建立高層次結構的版型，然後自動寫成維基百科新的條目。

評量
自然語言生成的研究人員需要測試他們的系統、模組、演算法，一如其它的科學領域。這叫做「評量」。評量NLG系統的基本技巧有三種：
「任務型（外部）評量」：把生成的文本給一個人，評估其幫助此人完成任務的效用。例如評量醫療資料摘要系統，可以評估醫生使用摘要後，是否能做出更佳的決定。
「人為評價」：把文本給人，讓他們自行評估其品質與效用。
「測量指標」：根據同樣的輸入資料，比較生成的文本與真人寫成的文本，使用例如之類的自動測量指標。
「任務型評量」雖然較接近NLG系統助人的終極目標，但是費時耗財，而且可能實行困難（尤其涉及醫生之類的專家對象），因此（一如自然語言處理的其它領域）「任務型評量」是例外而非主流。

參考文獻

 Yuko Sakai (2017). Sentence Generation: Syntax Tree Diagram in English, Spanish, Chinese, Japanese, Ainu.  

其它文獻

參見
 大型语言模型
 ChatGPT
 提示工程

外部連結
 SIGGEN part of ACL Anthology (NLG研究論文)
 ACL NLG Portal  (NLG資源列表)
 Bateman and Zock「幾乎完整」的NLG系統列表 
 Ehud Reiter NLG 部落格 
 Introduction  An open-ended review of the state of the art including many references (Last update: September 2002)
 SimpleNLG  — Open source Java library to assist in NLG

Category:自然語言生成
Category:自然語言處理