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