謝靖
【摘 要】異文研究對于我國中醫(yī)古籍文獻的整理、勘校、史學具有重要價值。本文利用句子匹配算法,對四個版本《黃帝內(nèi)經(jīng)》進行了自動異文發(fā)現(xiàn)研究。結果表明:句子配對算法能夠正確發(fā)現(xiàn)全部符合定義的異文,對中醫(yī)古文獻異文自動化研究具有非常重要的實踐價值。
【關鍵詞】異文;句子匹配;黃帝內(nèi)經(jīng)
0 引言
異文是指古代同一文字材料在流傳過程中出現(xiàn)的文句互異,中醫(yī)古籍文獻中存在大量異文,對其中因通假、古今、異體字而造成的異文進行對比分析有助于中醫(yī)古籍文獻的學習與研究。我國異文研究歷史悠久,古人對經(jīng)傳的注疏中就發(fā)掘了許多異文,近現(xiàn)代也有不少學者系統(tǒng)研究中國古籍的版本異文:李索以抄成于南北朝至初唐時期的寫卷《春秋經(jīng)傳集解》與以宋刻本為底本的傳世本相比勘的異文為研究對象,對敦煌寫卷《春秋經(jīng)傳集解》進行了對比研究[1];秦淑華通過詞語異文考察了《史記》與《戰(zhàn)國策》的異文情況,為研究先秦時期的中國史學文獻提供了支持[2];俞紹宏等通過敦煌寫本《詩經(jīng)》異文中的隸定古文異文,研究其先秦古文字的隸定形式的手寫形,展現(xiàn)中文古籍中的正字異體[3]。自20世紀90年代以來,隨著計算機技術的發(fā)展,學者們提出了一系列利用信息技術進行異文研究的方法:常娥等描述了中國古籍自動校勘系統(tǒng)的設計及實現(xiàn),并進行了實際勘校[4];肖磊等提出了基于句珠相似度的古籍異文版本自動識別算法,能夠在異文句珠中不斷地去掉最長同文,并輸出異文結果[5]。
本研究旨在通過句子匹配算法,對中醫(yī)古籍文獻的經(jīng)典《黃帝內(nèi)經(jīng)》進行不同版本的異文自動識別。通過自動化的異文比對,實現(xiàn)對中醫(yī)古籍文獻異文的快速提取,為中醫(yī)古籍文獻異文研究及中醫(yī)古籍文獻智能化信息處理研究做有益探索。
1 數(shù)據(jù)來源與收集整理
文章以《黃帝內(nèi)經(jīng)》中的《素問》作為研究對象,展現(xiàn)句子匹配算法在中醫(yī)古籍文獻異文自動發(fā)現(xiàn)工作中的實際效果。對于《黃帝內(nèi)經(jīng)》的異文研究,一直是中醫(yī)文獻學家的關注熱點:郝娟、沈澍農(nóng)將《靈樞經(jīng)》《黃帝內(nèi)經(jīng)太素》異文根據(jù)形成原因和形音義聯(lián)系歸納為八種基本類型,并進一步分析例釋[6];李懷芝以《素問》、《靈樞》、《太素》、《甲乙經(jīng)》為對象,進行了文句互異對比[7]。文章在參考前人研究基礎上,利用句子匹配算法,對《黃帝內(nèi)經(jīng)》中《素問》各版本異文做自動識別。
1.1 《黃帝內(nèi)經(jīng)》中《素問》各版本的成書年代
《素問》漢晉傳本:不存世。但《脈經(jīng)》有部分引文、別傳本《甲乙經(jīng)》中有載文。南北朝傳本:也不存世。但《黃帝內(nèi)經(jīng)太素》的底本為北朝傳本,王冰次注本祖本,全元起注本為兩個不同的南朝傳本。隋唐傳本:現(xiàn)存楊上善《黃帝內(nèi)經(jīng)太素》、王冰《黃帝內(nèi)經(jīng)素問》,在敦煌卷子中目前發(fā)現(xiàn)兩個單篇別抄本。宋金元:《重廣補注黃帝內(nèi)經(jīng)素問》。宋金元的刊本情況:北宋刊本原本目前未見、南宋刊本有理宗紹定年間刊本,原本也未見。但明代顧從德本是翻刻宋本。金刊本,北京圖書館有原本殘卷。元刊本有兩種,胡氏古林書堂刊本與不明具體年代的殘卷本。明傳本:明英宗《正統(tǒng)道藏》本、明憲宗成化十年熊氏種德堂刊本、山東布政司刊本、趙府居敬堂刊本、吳悌本、顧從德家傳宋本翻刻本、歷城儒學校諭田經(jīng)校本、繡谷書林周曰校(周對峰)刊本、吳勉學《醫(yī)統(tǒng)正脈》本、潘之恒《黃?!繁?、詹林刊本。清刊本:清刊本很多,而且有不少的《素問》、《靈樞》合刻本,合刻本著名的佳本有金陵本,京口文成堂本,分刻本有京口遵仁堂本;近現(xiàn)代,主要有郭靄春先生編著的《黃帝內(nèi)經(jīng)素問校注語譯》等。
1.2 《素問》版本異文的文本特點
在考察各版本《素問》的文本基礎上,文章發(fā)現(xiàn)各個版本大同小異,具體來說有以下幾個方面特點:
(1)篇章結構大體相同,因此應該以篇章為單位進行處理,以免異文配對發(fā)生跨越篇章界限的錯誤。有時某個版本可能多出一些篇章,對于多出的篇章,不加比較就好了。
(2)各版本同一篇章的句子基本對應,且句子個數(shù)相近,因此原則上可以根據(jù)標點分割句子,逐句進行比較。但是標點系后人所加,各個版本的斷句或有不同。當然,完全忽略這些標點也不可取,可能導致篇章范圍內(nèi)的異文配對錯誤。文章的做法是先按標點分割句子并隱去所有標點,接著尋找兩版本之間相似度最大的句珠配對,然后在句珠中發(fā)現(xiàn)異文。
(3)大多數(shù)句珠的文本是完全相同的,只需關注那些文本不完全相同的句珠。文章的基本方法是從句珠中去掉相同文字,遇到異文時再向后搜索相同文字以確定異文的右邊界并輸出異文,如此循環(huán)直至句珠遍歷完畢。
1.3 實驗數(shù)據(jù)及整理
在眾多的《黃帝內(nèi)經(jīng)》的版本中確定四個比較有影響力的《素問》版本:郭靄春版的《黃帝內(nèi)經(jīng)》(以下簡稱郭本),胡氏古林書堂《新刊黃帝內(nèi)經(jīng)靈樞》刻本(以下簡稱胡本),熊宗立種德堂以《黃帝素問靈樞集注》元本為底本重刻的版本(以下簡稱熊本)以及《重廣補注黃帝內(nèi)經(jīng)素問》(哈佛燕京圖書館藏中文善本古籍特藏,以下簡稱重廣本)。對這四個版本的素問以整句的形式進行電子化,文章主要針對的是非異體字形式的異文自動識別,因而將本次實驗的黃帝內(nèi)經(jīng)素問版本通過統(tǒng)一字體,防止異體字出現(xiàn)。
2 基于句子匹配的《素問》異文識別
2.1 《素問》中的句子匹配
文章從信息處理角度將異文定義為:句珠中完全不同的兩個子串。允許其中一個子串是空串,但不能都是空串。例如,“春必病溫: 春必溫病”不是一個異文,因為其中含有相同子串“必”,需分解為“春:溫”和“溫:春”兩個異文。
按照這個定義得到的異文絕大多數(shù)是單字對單字,也有些是空串對單字、空串對多字、單字對多字、多字對多字,等等。例如:
(1a)此所謂氣之標,蓋南面而待之也。(重廣補素問68)
(1b)此所謂氣之標,蓋南面而待也。(熊本素問68)
(2a)今時之人,年半百而動作皆衰,時世異耶?(郭本素問一上古天真論)
(2b)今時之人,年半百而動作皆衰者,時世異耶?(重廣補素問一上古天真論)
(3a)故病有五,五五二十五變,及反其傳化。(熊本素問19)
(3b)故病有五,五五二十五變,反其傳化。(郭本素問19)
(4a)岐伯曰:亢則害,承乃制,制則生化,外列盛衰,害則敗亂,生化大病。
(熊本素問68)
(4b)岐伯曰:亢則害,承乃制,制生則化,外列盛衰,害則敗亂,生化大病。
(胡本素問68)
從文字語言學角度來看,(1)中的異文都應該是“衰:衰者”,按本節(jié)的定義,這個異文是“衰:*”(*為異文字符),因為簡單的字符串匹配并不能確定應把“衰者”看做一個詞還是把“衰”看做衍文。類似地,(2)中的異文應是“*:反其傳化”,這里被當做是一處??梢钥紤]在本節(jié)異文發(fā)現(xiàn)算法的基礎之上用統(tǒng)計方法得到更具語言學或文獻學意義的異文數(shù)據(jù)。
2.2 基于句子匹配的《素問》異文匹配算法
文章中異文配對算法的基本思想是:比對并去掉兩個序列的共同前綴,使得異文出現(xiàn)在串首,然后從兩個序列的串首開始搜索相同子串。與“異文”相對,相同子串可稱之為“同文”。同文之前的便是異文。如果句珠中有多處異文,則重復上述過程。
搜索同文時可能存在多個解。例如:
(5a)岐伯曰:陰陽之氣,高下之理,大小之異也。(熊本素問70)
(5b)岐伯曰:陰陽之氣,高下之理,太少之異也。(郭本素問70)
此時同文有許多解,例如位置11:11上的“理”(不包括標點符號排序),依此得到異文“大:太”;位置14:14上的“之”,依此得到異文“?。荷佟保鹊?。其中同文最長的是最優(yōu)解,因為同文越長,則左邊的文字差異就越可靠。對于這個例子來說,位置11:11是最優(yōu)解,因為從這個位置上開始的同文“岐伯曰:陰陽之氣,高下之理,太少之異也?!弊铋L,由此得到異文“大?。禾佟薄?/p>
如果存在多個最長同文,則選擇位置之差最小者。為便于觀察,將例(6)重列于下:
(6a)岐伯曰:亢則害,承乃制,制則生化,外列盛衰,害則敗亂,生化大病。
(熊本素問68)
(6b)岐伯曰:亢則害,承乃制,制生則化,外列盛衰,害則敗亂,生化大病。
(胡本素問68)
去掉共同前綴之后變?yōu)椋?/p>
(6a)則生化,外列盛衰,害則敗亂,生化大病。
(6b)生則化,外列盛衰,害則敗亂,生化大病。
搜索到最長同文“化,外列盛衰,害則敗亂,生化大病”,左邊是“則生: 生則”。如前所述,其中含有同文“化”,不符合我們的定義,需要遞歸調(diào)用異文發(fā)現(xiàn)算法來處理。對此,向后搜索最長同文時有三個解,長度均為1,即2:2(“化”)、1:3(“則”)和3:1(“生”),其中第一個解同文位置之差為0,故確定第一處異文“衛(wèi):蔡”。去掉共同前綴之后,可得到第二處異文“則:生”。
2.3 《素問》異文匹配實驗結果
根據(jù)上一節(jié)列出的基于句子匹配的《素問》異文匹配算法思想,文章對四個版本的《素問》進行了異文自動匹配,相關結果如下表1。
表1 異文匹配實驗結果
從《素問》的4504個句子中,共得到四版異文263例。以上數(shù)據(jù)進一步表明,郭靄春版素問與胡版素問的差異最大,重廣補素問與郭靄春版素問的差異最小。這個結果表明,基于句子匹配的異文自動識別可以發(fā)現(xiàn)中醫(yī)古籍文獻版本異文中完全不同的兩個子串,有助于中醫(yī)古籍版本的自動化研究。
3 結語
本文以中國古籍文獻中的異文為研究對象,以《黃帝內(nèi)經(jīng)·素問》為實例,通過基于句子匹配的異文識別算法,探索了中醫(yī)古籍文獻的異文自動識別。相關實驗表明,對于古籍版本中的不同子串識別(非異體字異文識別)研究,基于句子匹配的思想具有較好的識別效果,能夠?qū)Ρ瘸霾煌姹镜牟町?,為版本研究提供有力信息支持?/p>
【參考文獻】
[1]李索.敦煌寫卷《春秋經(jīng)傳集解》異文研究[M].北京:中國社會科學出版社, 2007.
[2]秦淑華.《史記》與《戰(zhàn)國策》的異文研究[J].漢字文化,2002(4):42-43.
[3]俞紹宏,李索.敦煌寫本《詩經(jīng)》異文中的隸定古文釋例[J].古籍整理研究學刊, 2015(3):34-37.
[4]常娥,侯漢清,曹玲.古籍自動??钡难芯亢蛯崿F(xiàn)[J].中文信息學報,2007(2): 83-88.
[5]肖磊,陳小荷.古籍版本異文的自動發(fā)現(xiàn)[J].中文信息學報,2010(5):50-55.
[6]郝娟,沈澍農(nóng).《靈樞經(jīng)》《黃帝內(nèi)經(jīng)太素》傳本與史崧傳本之異文例釋[J].江西中醫(yī)藥大學學報,2006(3):17-19.
[7]李懷芝.《素問》《靈樞》《太素》《甲乙經(jīng)》異文例釋[J].山東中醫(yī)藥大學學報, 2008(3):226-227.
[責任編輯:楊玉潔]