[关键词] 汉语;诗律;计算机分析
Computer automated analysis of the Lushi's level and oblique tones
HAI Liuwen
(Guangxi University for Nationalities , Nanning, 530006, China)
Abstracts: The pronunciation material is advantageous for uses the computer program to carry on processing. Designs the reasonable sentence molds,may let the
program automatically,analyze the Lushi's level and oblique tones accurately.
Key Words: Chinese; Rules of poetry; Computer analysis
众所周知,律诗有严格的格律,特别是律诗的平仄格式,有着“粘对”、“拗救”等严格要求,这就为计算机程序自动判断提供了条件,可以通过编制程序去实现平仄格式的自动分析。以下是我们在这方面的尝试。
利用程序去分析律诗的平仄,无外乎两个步骤:一、辨认出一行行诗句每一个字的实际平仄;二、分析这些平仄是否合格。
1. 标注出诗句每一个字的平仄
1.1 建立汉字诗韵的数据库表
律诗要区分平仄,这里的平仄,依据的是中古音。唐及此后的诗人,用的反映这个时期声韵特点的“平水韵”。“平”指的是平声;“仄”指的是上去入三声。要想分析律诗的平仄,首先就得判断诗句中具体一个字在《平水韵》中所属的调类。为此,必须建立一个包含了《平水韵》全部属字的数据库表。如果仅仅是提供给程序作自动判断汉字的调类用,那么只要有“词目”和“中古调”这两个字段就够了。不过我们的这个数据库表除了提供分析律诗的平仄之外,更主要的还用来分析和处理汉语方言语音材料[1]。所以设置了“词目、声母、韵母、声调、声纽、清浊、中古调、韵目”等共18个字段。
1.2 标注每一行诗句的每一个汉字的平仄
通过程序很容易实现。为了让程序能够对诗句的平仄进行标注,还要设置另一个数据库表。律诗一般只有七律、五律、七绝、五绝,按最长的诗句来算,一个诗句最多是7个字。也就是说,所提供的另一个用以分析律诗平仄的数据库表,只要有7个字段就够了。
接下来,把一个诗句作为一个记录(行)、一个汉字作为一个字段存储。在标注时,首先在这个诗句的下面插入一个记录(行),然后让程序顺序把一个一个记录中一个一个字段的汉字读到内存,再到诗韵数据库表与相应的汉字对照,最后把它们的所属的调类标注到相应诗句的下面。当然,在识别具体的汉字时,还要区分多音字(词)。比如:
第1个记录:细草微风岸
第2个记录:
去上平平去
为便于直观,还可以让程序把分析结果的“上”、“去”、“入”一律转换为“仄”:
第1个记录:细草微风岸
第2个记录:
仄仄平平仄
这么一来,就可以给诗句的每一个汉字都标注上《诗韵》中的所属调类。只是做到这一步,作为平仄格律的分析还未完成,还要进一步判断:原诗的这种平仄形式是否合乎格律。
2. 判断原诗的平仄是否合乎格律
2.1 平仄格律句模的设计
众所周知,千变万化的诗句,都是由有限的几种基本句式构成的。比如,五言律诗就是由以下4种基本句式依照律诗“粘对”的规则及相关的押韵要求排列组合成的:
仄仄平平仄(甲) 平平仄仄平(乙)
平平平仄仄(丙) 仄仄仄平平(丁)
七言律诗则是在五言的基础上,在每一个诗句的前边,再加上两个字。这两个字的平仄,要与原诗句首二字的平仄相反。认识了五言律诗的平仄,七言律诗的平仄也就迎刃而解。
律诗的“拗救”主要有3种,以五言律诗为例:
仄仄平平仄(甲)仄仄仄平平(丁)
仄仄平仄仄
拗(由对[乙]句相救)
平平平仄仄(丙)
平平仄仄平(乙)
平平仄平仄
仄平平仄平
拗救(有人称“特种拗救”)
拗 救(本句自救)(救对[甲]句)
在基本句式的基础上,再根据上述拗救的变例,就可以构拟出供计算机判断的平仄格式句模了:
仄仄平平仄(甲) 平平仄仄平(乙)
平平平仄仄(丙) 仄仄仄平平(丁)
加框的“平”或“仄”是可能出现拗救之处。为了方便在计算机程序中实现,并且能与标准句式相区别,我们把这种供程序判断的句模改换成符号形式:
││─=│(甲) =─‖│─(乙)
──=‖│(丙) │││──(丁)
七言律诗的句模则是:
──││─=│(甲) ││=─‖│─(乙)
││──=‖│(丙) ──│││──(丁)
2.2 自动判断并插入作为依据的平仄格律句模
接下来,就可以让程序对每一行诗句加以判断,并插入一行作为对照的平仄格式句模。
第1个记录:细草微风岸
第2个记录:
仄仄平平仄
第3个记录:
││─=│
同理,接下来分析第2句,第2字是平,第5个字也是平,应该取乙型句的句模,程序运行的结果是:
第4个记录:危樯独夜舟
第5个记录:
平平仄仄平
第6个记录:
=─‖│─
我们把经程序分析的杜甫《旅夜书怀》悉录于下:
1城阙辅三秦
13
海内存知己
2
平仄仄平平
14
仄仄平平仄
3
│││--
15
││-=│
4
风烟望五津
16
天涯若比邻
5
平平仄仄平
17
平平仄仄平
6
=-‖│-
18
=-‖│-
7
与君离别意
19
无为在歧路
8
仄平平仄仄
20
平平仄平仄
9
--=‖│
21
--=‖│
10
同是宦游人
22
儿女共沾巾
11
平仄仄平平
23
平仄仄平平
12
│││--
24
│││--
为了节省篇幅,我们把原先的竖式单列改成上面的竖式双列。序号在原程序运行的结果中是没有的,为方便观察,在这里临时加上。
不难看出,程序运行结果,一行诗句就成了三行。第一行是原诗句,第二行是该诗句的实际平仄,第三行是用以判断的平仄格式句模。“=”或“‖”是可能出现拗救之处,其余部位都可按“一三不论”处理。对照相应的平仄格式句模,可以看出,“无为在岐路”出现了拗救,这个诗句的实际平仄“平平仄平仄”,属丙种句,“在”字拗,“歧”字救。其余“城阙辅三秦”的“城”、“与君离别意”的“与”、“同是宦游人”的“同”以及“儿女共沾巾”的“儿”,都合于“一三不论”的规则。这是一首合格的五言律诗。
当然,还可以在得出前述“三行式”的分析结果后,让程序自动去判断:是否出现拗救,是否失粘失对。考虑到有这样的“三行式”分析结果,用户已经很容易自己得出判断了。更主要的是,这些用户大都是学习古代诗律的学生,让他们在此基础上自己去判断,更利于诗律的领会掌握。我们就省掉了这后一步的判断。
七律是就五律的基础上,在每个诗句的前边加上与首二字平仄相反的两个字。七律诗句的首二字完全符合“一(三五)不论,二(四六)分明”的原则。用来判断七律平仄格式的句模的设计,是以每个诗句第4、第7个字的平仄为依据,其余可以类推,不赘。
500)this.style.width=500;" onmousewheel="return bbimg(this)">
[参考文献]
[1]合力工作室.中文Visual FoxPro 6.0高级编程[M].北京:清华大学出版社,1983.10.
[2]吴迪,曲蒙.Visual FoxPro 6.0类和对象手册[M].北京:中华书局,1960.1.
[作者简介] 海柳文(1950—),男,广西柳州市人,广西民族大学文学院教授,语言学与应用语言学中文信息处理方向硕士研究生导师。广西南宁,邮编530006。