计算机自动创作灯谜
風雨空中雁陣斜 (字) 佩
以此謎為例。
如果我希望程序能夠自動把“風雨空中雁陣斜”這個謎面作出來,需要具備哪些要素呢?
我們來分析一下。雖然前景似乎不太樂觀。
這是一條好謎。謎面不是一句好詩,但沒有一個閑字,意境的表達也通暢,好象這個字在出現時就已經注定存在了這個謎面,只是后來有人把它找出來了?!帮L”、“雨”作了“空中”的處理后變成了“幾” “ 幣”。雁陣斜好理解,作謎的人常常用“雁陣”來指代“人”這樣的形狀。而沒有這個“斜”字,雁陣成了“?亻”就顯得有點奇怪了。
謎面完全是根據組成“佩”字的偏旁“ 亻幾 幣” 設計了一條成文的短句。
好,有了一點線索。假設,我們擁有的是非常貧乏的語言文化,形容“?亻”的只可能是“斜雁陣”或者“雁陣斜”,形容“幾?一?巾”的只能是“風雨空中”、“風雨中空”、“空中風雨”、“風雨無心”、“無心風雨”這幾種里的一種。
我隨意地組合一下,得到一條“斜雁陣無心風雨”。很明顯,如果不去考究這個謎面的含義,它是成立的。問題在于,一條謎面必須是成文的。什么是“成文”?我們有沒有辦法知道一段文字是“成文”的還是“不成文”的呢?
文章寫到這里中斷,我離開去找資料,看到了相關的兩篇好文章,其中第一篇比較通俗好懂。
http://www.matrix67.com/blog/archives/4212?漫話中文自動分詞和語義識別(上):中文分詞算法
http://www.matrix67.com/blog/archives/4870?漫話中文自動分詞和語義識別(下):句法結構和語義結構
可是我們一上來就是一句詩歌一樣的東西,使這個問題直接陷入了僵局。我感到希望渺茫。因為,程序判斷“成文”與否與一個句子的分詞和語義分析這類的技術相關,這個障礙本來是可以借助于一些研究成果得以克服的。但相比于日常表達和現代文章的語言表達,古文和詩歌的分詞和語義研究恐怕更麻煩,更加沒有現成的資源可用。
如此,先假設我們已經可以判斷“成文”,把這個問題暫時擱在一邊。您如果有好方法請不吝賜教。分詞我找到過可用的控件,語義分析尚沒有接觸。
現在,可以料到“斜雁陣無心風雨”被電腦判為了不合格(我的電腦沒有自信,開始出汗...)。“風雨中空斜雁陣”和“無心風雨斜雁陣”也一樣,不合格。那么“空中風雨斜雁陣”呢?
“空中風雨斜雁陣”語法合理,應當通過電腦的評審,“空中”與“斜”這類狀語和定語的前后置,作者想表達的意境可能不同,不會是考量標準。但是交給一個人去看這樣一句詩句時,一定會吐槽其丑陋不堪。參考新近百度Big Talk上出現的信息,這個審美標準從理論上講,計算機人工智能是可以學習的。但是對它的期待應當是在若干年之后而不是現實的(機器要是懂得了審美,那些美也就不再是美,只是證明人比機器愚蠢的證據之一了。因為,明年的流行色將是由機器來引領的。題外話。)。所以對于語法合格的N個計算機作品,仍然需要通過人腦,且最好是由行家來評定其是否是一條合理的謎面。我們可以在一定程度上接受這一點,比如,計算機給出的合格結果一共只有10條而不是1000條。
是時候回到問題的初始,我假定我們的語言文化非常貧乏。在這個給定條件的荒謬實驗室里,計算機確實只能作出為數很少的幾個作品。事實的情況是,“佩”這個字的幾個部件很常見,單是一個“ 亻”,就有推心,唯心,偏旁,附中等等多種謎法表達。這還只是字形上增減的方法,象形(亻:?竹葉)會意用典等推理手法還沒有包括。但由于“偏旁無心風雨”這樣的謎面同樣會被程序否掉,在謎法對應元素有限的前提之下,勝出的謎面數量可能仍然是可數的并且有成立的可能性。
根據上面討論,要實現目的有三個要素:
1. 制謎手法的對應關系素材庫
2. 能辨識中文語法,特別是能兼容古文詩詞語法的控件
3. 有人來評定計算機出題的合理性
寫到這里想到一件事。記得有人整理過漢字字形結構并形成了可以隨時查詢的數據庫。比如上題你想到了謎底中“幾”這個部件,就可以把帶這個部件的所有字都找出來一個一個對照。曾有人擔心從此猜謎有了工具,不再好玩了。這種擔心是現實的,也會一直存在下去,百度讓元宵節少了一點樂趣應該也是事實。本文旨在探討,還沒有動手實現它的意思,更無意打擊原創家的積極性。但即使實現了又如何,燈謎也有它自身的發展規律,只要有需求,總會有更新鮮的花樣被發明出來。也許這個東西還能彌補目前創作者不足的遺憾呢。
轉載于:https://www.cnblogs.com/dfun/p/4293967.html
總結
- 上一篇: 前端学习(2257)如何做分支管理
- 下一篇: 前端学习(2340):以组件方式考虑ui