數論人生

數論是一門學科,也是我的人生。有人把酒論英雄,我用數字描天下。
正文

教電腦讀書列算式

(2022-01-18 12:13:42) 下一個

一個人的時間和精力都是有限的,即使用上一生的時光,也讀不了幾萬本書。在當今信息時代,誰還能掌握全部知識?人不行,計算機卻行。計算機是什麽?一堆0和1的組合而已。在既定指令下快速運行,卻相當愚鈍:什麽都不認識,更不會思考;唯一的優點就是速度快。

讀書的第一步是單字處理。先要存儲一部字典,即一些單字的集合。一個單字代表一種意義,所有同義詞組成一個意義集:反義詞用餘集表示。與其它集合的近義詞,用括號標明使用情形:XXX{X1(%,。。。), X2(%,。。。),。。。Xn(%,。。。),Not(反義詞列表)} ;其中,XXX是詞頭;Xn是同義詞名,百分號標明同義的近似程度,後麵還得指明使用情形。

讀到一個單字(以空格分開)時,拚寫檢查可這樣進行:與字典中的單字集頭對照,找拚寫已有的那個;字典中沒有的,用最接近的那個單字替換;全大寫的單字,原樣保留。第二步是單字連接的合規檢查;包括詞性標記、關鍵詞還是輔助詞、固定搭配(成語)還是自創新語,相鄰的兩個單字放在一起的準許度有多大?第三步是檢查標點符號、劃分句子。一個句子,就是兩個句點之間的單字序列。頓號、逗號、分號都是表示並列,其間的所有單字(用空格分隔)的集合設為一個基本命題p(用內存中的起始、終止地此表示);冒號表示對前段的解釋或者接下來的行為列舉;解釋時,前後兩個字集意義上要相同或近似度超過一定程度,比如90%。

怎麽判定一個句子,即兩個句點之內、不同逗點對之間的原子命題是不是自相矛盾呢?首先查看關鍵字不記介詞、冠詞)。如果兩個原子命題的關鍵字無交集,自然就是無矛盾;如果關鍵字出現反義詞,肯定就是有矛盾。如果關鍵字的相近度達90%以上也算通過;否則,就要列出邏輯表達式,按照布爾代數求解,以得出相容的解為準。

段落用回車符分隔;一個段落包含意義相近、不互相矛盾的一個或多個句子。怎麽判定兩個句子的無矛盾性呢?把各個句子當作不同的合式公式,設置其值為1,按布爾方程解之即可。

一篇文章包含一個或多個段落。把每個段落看成一個合式公式集,再按布爾方程式去檢查一遍各原子命題之間的無矛盾性。這樣,詭辯的五毛們(本人深惡痛絕的一群人)便無可遁形;巧如簧舌的訟棍也無地自容。

假設一切矛盾全無、大家都按常理出牌,如何歸納文章的中心思想呢?首先統計關鍵字出現的頻率,把它們按頻率由高到低排序。再查出每個關鍵字的謂詞(不僅僅是謂語),以及它自身的性質、所關聯的對象及其性質,可能還有對象所關聯(用謂詞)的第二層次的對象及其性質,層層深挖,邏輯關係便可顯露無遺;再寫出幾個句子,那是幾秒鍾的事。

讓計算機解方程,人類已經做得很好了:隻要你輸入函數或方程式,現有的軟件Mathematica或MATLAB或 Maple都能很快解答。但還有一個問題要解決,那就是列算式:現有軟件都不會自動生成方程式。1964年,Daniel G. Bobrow在他的博士論文中設計的程序STUDENT可以把一些簡單的文字題化為一係列的方程,並且求解;但到現在,五十多年過去了,在這方麵還是沒有什麽進展。(甚至很多人,讀了幾十年書,都不會列方程式!)

給出一堆變量,還有幾個運算符,人用手寫出來一個式子是容易的:隻要你會寫微分、積分、求和的sigma、求積的Pi就可以了。可是計算機不認識!現有的機器隻會算數值,不認識變量X;你必須先給它賦值,存儲在某個位置,它才能做計算。再強大的編譯器,都不接受不合乎其語法規則的、在其編輯器中打出來的句子,更別說手寫的了!

人類當真無能為力了?不是說Everything is figure-out-able嗎?各位過客就等待我的歐氏編譯器吧,還有能夠解人風情的機器呢!

[ 打印 ]
閱讀 ()評論 (0)
評論
目前還沒有任何評論
登錄後才可評論.