我寫完博文:屈原的『天問』,之後,我打開喜馬拉雅的聲音,一邊聽,一邊看著原文。我這樣欣賞是因為原文中有許多古字,大多都不知曉,更不知道如何發音。利用現代技術,這真是一種非常暇意的學習欣賞。
我原以為每行的結尾標點符號為❓就是一個問題,但是很快我發現,原文有極少行中,一行中有兩個❓標點符號。如果按照問號標點符號作為標記來計數問題的話,那麼原來的方式是不對的。
我保留原來的計數,然後加一列的問題計數,這個計數是以❓為標記來計數的。
我是用蘋果的Numbers 軟件來進行計數的,技術比較複雜,這裡是我自己的小結收藏。
下面是我的Numbers sheet:
這裡以第二行為例,B-G的公式可以用於所有其它行。
準備公式
下面是一些為最後進行計數計算的準備公式:
D 公式(formula) 為:
RIGHT(A2)
該公式將A列中每行的最後一字符取出,列在D列。
E formula 為:
NOT(ISERROR(FIND("?", A2)))
FIND function是搜索函數,這裡用來搜索A列每行文字中的❓位置。如果該行沒有❓,結果是錯誤,即沒有找到。因此我必須再用NOT和ISERROR函數來判斷是否找到問號。TRUE為找到,FALSE為沒有。F formula 為:
IF(D2="?", FIND("?", A2)<LEN(A2), FALSE)
該公式解釋為,如果D列中為❓:尋找A列該行最後❓中是否還有❓,否則為FALSE。
G formula 為:
IF(E2, IF(F2, 2, 1), "")
該公式根據E和F列的組合結果,得出:
- E2內容為FALSE時(A2中最後一字符非❓),空白
- E2內容為TRUE時(A2中最後一字符為❓):
- F2內容為TRUE時(A2中有兩個❓),2
- F2內容為FALSE時(A2中只有一個❓),1
計數公式
最後是兩個計數公式:
B formula 為:
IF(RIGHT(A2)= "?", COUNTIF(D$2:D2, "?"), "")
該公式以A列最後字符是否為❓來計數,其解釋為,如果A列最後一字符為❓:計數D列中的❓數目,否則為空白。C formula 為:
IF(E2, SUM(G$2:G2), "")
該公式以A列最後字符是否為❓來計數,其解釋為,如果A列最後一字符為❓:累計G列中的❓計數數目,否則為空白。
結束語
當然,以上方法也許不是最好的解答。
但是我發現,Numbers中的邏輯公式OR(express1, express2,...)不是可短接的,即如果express1的結果為真,express2等等還是被繼續判斷。而IF(condition, expressT, expressF)是可短接的,即如果condition為真,僅expressT被用或被判斷,expressF是不被用或不被判斷的。因為我是學習探索Numbers的函數功能,因此我準備了數個公式這樣可以幫助列出我的思路。
根據❓來進行問題的計數,即使原文比較複雜,還是可以借助於程序或軟件讓電腦自動計數的。我記得有關屈原『天問』中的問題個數還是比較有爭議的,這也是我為何保持兩種計數,這樣就出現了兩個結果。編寫程序或用軟件來幫助我們進行一些準確和自動化工作,這是我喜愛,同時這也是一種非常好的大腦健身體育活動。
但是,如果問題不僅僅是根據❓這個標記,而且還要根據語義和上下銜接意思來判斷,我想目前的電腦技術則是無法進行判斷和計數的。這種情況下,也許還得靠專家的大腦進行讀解了。
參考
- 前期博文:屈原的『問天』
No comments:
Post a Comment