鄧金,史國陽,蔡天鴻,朱晉,懷麗波
(延邊大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)科智能信息處理研究室,延吉133002)
中國詩詞在傳統(tǒng)文化中占據(jù)著重要地位。在文學(xué)史領(lǐng)域中,研究者通過研究不同時(shí)期的詩詞,結(jié)合歷史背景,可以深入了解不同時(shí)期的政治、經(jīng)濟(jì)、文化等。唐朝作為中國歷史上版圖最大的大統(tǒng)一中原王朝,涌現(xiàn)的著名詩詞數(shù)不勝數(shù)。中晚唐后興盛的詩僧,將自己的所聞所見所想寫入僧詩中,促進(jìn)了儒、佛二者的合流[1]。然而,由于歷史遺留中一些不可抗因素,如文物的破損等,很多流傳下來的僧詩成為殘缺詩,這些殘缺不全的詩句影響了世人對(duì)唐朝時(shí)期三教發(fā)展的研究。本文針對(duì)唐代遺留下來的著名詩僧的詩句殘缺問題,提出一種基于文本處理技術(shù)的填充方法,期望得到一個(gè)合理且具有一定參考價(jià)值的結(jié)果。
唐代僧詩主要盛行于中晚唐時(shí)期,隨著中國佛教在盛唐時(shí)期的發(fā)展而盛行,唐代興盛的詩僧,是唐朝興盛時(shí)期的見證人,他們對(duì)整個(gè)唐朝詩歌文化的發(fā)展具有很大促進(jìn)作用。自上世紀(jì)80年代起,唐代詩僧研究逐漸引起人們的關(guān)注。整體來看,唐代詩僧研究在文學(xué)史領(lǐng)域主要還是宏觀、背景式的[2]。大多數(shù)研究者或關(guān)注中唐僧詩的發(fā)展脈絡(luò),或著眼晚唐代僧詩的創(chuàng)作特征,或以某位詩僧為特定的研究對(duì)象[3],很少有人研究唐代僧詩殘缺詩句的填充方法。
目前國內(nèi)外對(duì)于殘缺詩句的填充方法主要是采用人工填充的方式,它需要填充者在熟悉作者詩詞風(fēng)格的基礎(chǔ)上,對(duì)殘缺進(jìn)行補(bǔ)全。這種填充方式對(duì)填充者的文學(xué)功底要求非常高,且詩詞填充效果也是因人而異。目前,還沒有研究者采用計(jì)算機(jī)技術(shù)自動(dòng)對(duì)殘缺詩句進(jìn)行填充,但對(duì)于詩詞的其他方面如計(jì)算機(jī)自動(dòng)生成詩歌、詩詞的分類等已經(jīng)有學(xué)者進(jìn)行研究,如國外的Lutz在1959年用計(jì)算機(jī)生成了第一首德文詩,國內(nèi)的詩詞生成研究始于上世紀(jì)九十年代中期,如臺(tái)灣羅鳳珠的格律檢查和同韻詞查找系統(tǒng),周昌樂等人利用遺傳算法進(jìn)行宋詞的自動(dòng)生成等[4]。20世紀(jì)80年代,陸續(xù)有一些民間人士在詩歌生成方面做了一些有益的探索和實(shí)踐,產(chǎn)生了一些詩歌生成軟件,如梁建章的“計(jì)算機(jī)詩詞創(chuàng)作”程序、林鴻程的“稻香老農(nóng)作詩機(jī)”,等等。這些民間自發(fā)的業(yè)余愛好,帶動(dòng)了漢語計(jì)算詩學(xué)的學(xué)術(shù)研究[5]。自20世紀(jì)90年代后,我國國內(nèi)的不少學(xué)術(shù)機(jī)構(gòu)和學(xué)者陸續(xù)在詩歌語料庫及知識(shí)庫的建設(shè)、韻律分析、風(fēng)格分析、情感分析和詩歌自動(dòng)生成等領(lǐng)域開展了漢語計(jì)算詩學(xué)的廣泛研究[6]。人工填充詩句是填詞者通過認(rèn)真拜讀原作者詩詞進(jìn)行的再創(chuàng)造,融入了大量后來者的主觀色彩,且沒有一個(gè)量化的標(biāo)準(zhǔn)來衡量詩詞所填內(nèi)容的好壞。本文將自然語言處理技術(shù)應(yīng)用于唐代詩僧殘缺詩句的填充上,為填充詩詞提供了一個(gè)量化標(biāo)準(zhǔn),為文學(xué)工作者和愛好者研究唐代時(shí)期的詩僧文化提供了一定的幫助。
自然語言處理對(duì)象即文本的表示,如今普遍采用Salton等人提出的向量空間模型。在這個(gè)模型中不必考慮文本中語義單元的順序,而是將文本簡(jiǎn)化為一個(gè)BoW(Bag-of-Word),并表示為特征權(quán)重的向量。向量空間模型主要以詞作為特征,以詞頻矩陣為基礎(chǔ)計(jì)算權(quán)重[7]。常用的特征提取方法有文檔頻率、信息增益、互信息、卡方檢驗(yàn)、期望交叉熵、TF-IDF方法和特征降維[8]?,F(xiàn)有的特征降維技術(shù)有PCA等。
文本分類是基于內(nèi)容的文本信息挖掘的基本技術(shù)之一,目前常用的文本分類方法主要有樸素貝葉斯分類算法、決策樹分類算法、神經(jīng)網(wǎng)絡(luò)分類算法、K-最近鄰(KNN)分類算法、支持向量機(jī)(SVM)分類算法,等等[9]。其中SVM算法分類器訓(xùn)練時(shí)間長,而決策樹算法的效率也會(huì)因?yàn)閿?shù)據(jù)量的增大而降低。KNN算法在準(zhǔn)確率和穩(wěn)定性方面均有優(yōu)勢(shì),它不需要預(yù)先訓(xùn)練模型,同時(shí)具有很好的魯棒性。
在VSM模型中,單詞權(quán)重計(jì)算最為有效地實(shí)現(xiàn)方法是TF-IDF,它是Salton在1988年提出的。它的計(jì)算式如下:
其中,W(ti,dj)是特征項(xiàng)ti在文本dj的權(quán)重取值;tf(ti,dj)是特征項(xiàng)ti在文本dj中出現(xiàn)的頻率,用于計(jì)算該詞描述文檔內(nèi)容的能力;idf(ti,d)是特征項(xiàng)ti在文本集d中出現(xiàn)文本頻率數(shù)的反比,稱為反文檔頻率,用于計(jì)算該詞區(qū)分文檔的能力[10]。
KNN分類算法能夠確定待分類樣本與訓(xùn)練樣本之間的相似程度,從而確定與待分類樣本距離最近的K個(gè)訓(xùn)練樣本。其最關(guān)鍵的因素是相似性度量方法,最常采用的相似性度量方法是余弦相似度,見公式(2):
其中,X、Y代表兩個(gè)文檔表示向量。對(duì)于一個(gè)待分類文本x,根據(jù)相似性度量函數(shù)從整個(gè)訓(xùn)練集中找到與文本x最相似的K(K是預(yù)先設(shè)定的一個(gè)整數(shù))個(gè)文本,然后根據(jù)K個(gè)近鄰文本所屬的類別給x的候選類別評(píng)分[11]。本文采用1NN的方法進(jìn)行比較。
本文收集唐代著名詩僧齊己、貫休、皎然收錄于《全唐詩》的現(xiàn)存所有詩句,通過中文分詞、建立TFIDF空間向量等步驟,對(duì)詩僧的殘缺詩句進(jìn)行了算法填充。先將詩人的所有詩句進(jìn)行分詞后,進(jìn)行特征提取獲得特征向量,這個(gè)特征向量就代表著詩人的詩風(fēng)。詩風(fēng)可量化的部分就是不同詩人對(duì)不同詞語的偏好程度。同派別尤其是同時(shí)期的詩人之間會(huì)互相影響,所以部分詩詞內(nèi)容所含有詞語是通用的。
要想在浩瀚漢字海洋里挑選出符合殘缺詩句的合適詞語就猶如大海撈針一般,本文選取三位詩人的詩作為詞典,他們同為一個(gè)時(shí)代的詩人,有當(dāng)代的共同點(diǎn),因此殘缺部分會(huì)以更大概率出現(xiàn)在這些通用的詞語中間。這是本文進(jìn)行唐代詩僧詩詞填充的基礎(chǔ)。
皎然、齊幾、貫休是唐代詩僧的杰出代表,他們的詩風(fēng)互相影響,尤其是齊己和貫休,基本處于同時(shí)代?;谏鲜龇治鰧⑺麄兛赡苡玫降脑~整理成詞典(具體做法是將他們完整詩句進(jìn)行中文分詞),然后在詞典里挑選更合理有效的詞進(jìn)行填充。利用詞典和各自完整詩句集構(gòu)建出三位詩僧的特征向量,這是為了量化他們的詩風(fēng),便于后期在填充結(jié)果集選擇最優(yōu)結(jié)果。本文采用余弦相似度作為填充好壞的度量,較人工填充更加規(guī)則規(guī)范化。
本文的填充算法步驟如下:
輸入三位著名詩僧的完整詩句和殘缺詩句
Begin
Step 1:對(duì)所有完整詩句,使用NLPIR漢語分詞系統(tǒng)進(jìn)行分詞,獲得總詞典;
Step 2:構(gòu)建向量空間模型,利用公式(1)分別構(gòu)建三位詩僧的特征向量;
Step 3:對(duì)三位詩僧的殘缺詩句進(jìn)行分詞;
Step4:在詞典中從頭到尾遍歷,查找與空缺詞字?jǐn)?shù)相同的詞,進(jìn)行填充,并將填充后的詩句構(gòu)建特征向量;
Step5:將Step4的特征向量與三位詩僧的特征向量利用公式(2),進(jìn)行余弦相似度的計(jì)算;
Step6:利用KNN方法,總是選取相似度最高的前k(本文測(cè)試取k=1)個(gè)詩句填充的詞作為結(jié)果進(jìn)行輸出;
輸出僧殘缺詩句的填充結(jié)果。
End
本文采集了唐代詩僧齊己、貫休、皎然收錄于《全唐詩》的所有詩,并將上述采集內(nèi)容分為完整詩句和殘缺詩句兩部分,并對(duì)空缺詩句進(jìn)行填充。
為了驗(yàn)證三位詩僧之間的獨(dú)立性,利用三位詩僧的完整詩句構(gòu)建各自在向量空間下的特征向量(采用中科院分詞系統(tǒng)進(jìn)行中文分詞),兩兩進(jìn)行特征向量間的余弦相似度計(jì)算,得結(jié)果表1。
表1 三位詩僧兩兩之間的余弦相似度值比較結(jié)果
在向量空間比較特征向量之間的余弦相似度,如果越趨近于1則說明兩個(gè)特征向量之間越相似,相反,越趨近于0則說明兩個(gè)特征向量越獨(dú)立。通過表1看出,三位詩僧的特征向量?jī)蓛芍g是趨近于0的,這說明他們之間是獨(dú)立的。本文通過TF-IDF向量空間模型下產(chǎn)生的結(jié)果,這與后人將他們奉為詩僧界作詩的三大杰出代表不謀而合。此外,皎然的時(shí)代早于齊己、貫休,所以對(duì)后兩者的相互影響較弱,而齊己、貫休基本處于同時(shí)期,所以相互影響理論上應(yīng)較強(qiáng),這均與表1的數(shù)據(jù)相吻合。
實(shí)驗(yàn)一:僅使用每位詩人自己的詩詞構(gòu)建詞典進(jìn)行填充
為驗(yàn)證本文實(shí)驗(yàn)方法的可行性和合理性,進(jìn)行了兩組對(duì)比試驗(yàn)。
方法一:利用某位詩人的所有完整詩句進(jìn)行分詞得到這位詩人的詞典,將該詩人的每一首詩作為一個(gè)文檔,計(jì)算出詞典中的每一個(gè)詞的idf值和tf值后,構(gòu)建詩人的特征向量。
方法二:利用某位詩人的所有完整詩句進(jìn)行分詞得到這位詩人的詞典,將該詩人的所有詩作為一個(gè)文檔,計(jì)算出詞典中的每一個(gè)詞的tf值,構(gòu)建詩人的特征向量時(shí),由于idf值為1,所以詩人的特征向量中每一個(gè)特征值都只由該詞的tf值確定。
利用三位詩人的六個(gè)殘缺詩句進(jìn)行實(shí)驗(yàn):
(1)皎然:別離芳月積,岐路浮云偏。正□入空門,仙君依苦縣。
(2)皎然:江上重云起,何曾裛□塵。不能成落帽,翻欲更摧巾。
(3)貫休:嘉樹白雀來,祥煙甘露墜。中川一帶香,□開幽邃地。
(4)貫休:望塵□□連紫闥。吾皇必用整乾坤,莫忘江頭白頭達(dá)。
(5)齊己:巴江□□漲,楚野入?yún)巧?。他日傳消息,東西不易尋。
(6)齊己:夏□松邊坐,秋光水畔行。更無時(shí)忌諱,容易得題成。
詩句填充結(jié)果見表2。
表2 兩種方法的詩句填充結(jié)果
對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行分析,發(fā)現(xiàn)方法一與方法二填充結(jié)果效果不好,分析其原因可知,方法一由于文檔數(shù)量龐大idf變化大而詞頻均較小,實(shí)驗(yàn)填充的詞主要受idf的影響。方法二與方法一相反,方法二idf值一致,填充的詞只受tf值的影響。所以本文最終采用的方法是使用三位詩人的所有完整詩構(gòu)建詞典,然后進(jìn)行實(shí)驗(yàn)。
實(shí)驗(yàn)二:使用三位詩人的所有完整詩構(gòu)建詞典進(jìn)行填充
“巴江□□漲,楚野入?yún)巧?。他日傳消息,東西不易尋”是齊己《與張先輩話別》一詩中的殘缺部分。構(gòu)建該句的TF-IDF特征向量,并計(jì)算當(dāng)前該句和三位詩僧特征向量之間的余弦相似度得表3。
表3 《與張先輩話別》殘缺部分的比較結(jié)果
由于一句詩所包含的詞語特征太少,在計(jì)算余弦相似度時(shí),大多數(shù)詞的特征值值為0,所以總體的余弦相似度值均偏低。但仍可以看出,該句與齊己的余弦相似度值最高,而事實(shí)上這就是詩僧齊己的詩句。
對(duì)該句進(jìn)行填詞,分別獲得與三位詩僧特征向量余弦相似度最大的詞,如表4所示。
表4 填詞結(jié)果
本文算法填詞是沒有考慮到詩句押韻和詞詞耦合以及詩意銜接,但是通過本文算法填詞后不難發(fā)現(xiàn):
巴江(起見)漲,楚野入?yún)巧?。他日傳消息,東西不易尋。
首先,填完詞的詩句是沒有影響押韻,其次詞語之間也有所關(guān)聯(lián),其次“起”和“入”字對(duì)仗,整體構(gòu)成的詩意給人一種反差美,這也能和下句達(dá)到匹配,有進(jìn)一步研究的意義。
“別離芳月積,岐路浮云偏。正□入空門,仙君依苦縣?!笔丘ㄈ弧侗笤绱旱枪售的蠘峭ド剿掳Q觀示清道人并沈道士》一詩中的殘缺部分。構(gòu)建該句的TF-IDF特征向量,并比較該句和三位詩僧的特征向量之間的余弦相似度值得表5。
表5 《兵后早春登故鄣南樓望昆山寺白鶴觀示清道人并沈道士》殘缺部分的比較結(jié)果
仍可以看出,該句與皎然的余弦相似度值最高,而事實(shí)上這就是詩僧皎然的詩句。
對(duì)該句進(jìn)行填詞,分別獲得與三位詩僧特征向量余弦相似度最近的詞,如表6所示。
表6 填詞結(jié)果
填完詞的詩句為:
別離芳月積,岐路浮云偏。正(凄)入空門,仙君依苦縣。
如果上句是創(chuàng)造出一個(gè)意境來,那么下句就是這個(gè)意境里的具體內(nèi)容??嘧值於苏涞母星榛{(diào),整個(gè)意境給人一種凄涼的感覺,所以填寫出的凄字也是具有相當(dāng)大的參考價(jià)值。
“嘉樹白雀來,祥煙甘露墜。中川一帶香,□開幽邃地?!笔秦炐荨渡媳R使君》一詩中的殘缺部分。構(gòu)建該句的TF-IDF特征向量,并計(jì)算該句和三位詩僧的特征向量之間的余弦相似度值得表7。
表7 《上盧使君》殘缺部分的比較結(jié)果
依舊可以看出,該句與貫休的余弦相似度值最高。
對(duì)該句進(jìn)行填詞,分別獲得與三位詩僧特征向量余弦相似度最近的詞,如表8所示。
表8 填詞結(jié)果
填完詞的詩句為:
嘉樹白雀來,祥煙甘露墜。中川一帶香,(遄)開幽邃地。
遄字有快、迅速之意。祥煙給人一種冉冉升起的感覺,而甘露墜就是一種迅速之感。上句作為鋪墊雖沒有明說,但下句的“遄開”一語道破,使前后句具有強(qiáng)關(guān)聯(lián)性,參考價(jià)值不菲。
本文用的是三個(gè)著名詩人的完整詞構(gòu)建的詞庫,因此詞數(shù)有限,可以增大詞庫,然后進(jìn)行降維處理,也可以增大k值以便盡可能獲得更多參考結(jié)果,這相對(duì)于研究者在浩瀚的文字中尋找一個(gè)詞容易很多,因此可以為研究者提供借鑒。
本文將TF-IDF技術(shù)應(yīng)用于殘缺詩詞的研究,初步構(gòu)建了一個(gè)簡(jiǎn)單的填詞系統(tǒng),獲得了可供參考的填充詞。但本文的方法在進(jìn)行填詞的時(shí)候并沒有考慮到詩的意境、押韻等方面的問題,構(gòu)建的詞典也只是基于三位詩人的完整詩,具有較大的局限性,所以接下來的工作是改進(jìn)本算法,考慮押韻、詞性以及多缺失詞的詩意限制等因素。