misima 漢詩平仄音韻分析仕様

misima 漢詩平仄音韻分析プログラムは,漢詩作成者のために 2011 年 1 月に書いた拙作ソフトウェア(JavaServlet Web アプリケーション)である。五言絶句,七言絶句,五言律詩,七言律詩について,入力した漢詩テキストが平水韻に基づく漢詩近体詩規則に適合するか否かを機械的に検査するものである。文字の音韻検査は,7,015 漢字(2014.3.16 時点)についてその平仄・字韻を蓄積した SQLite3 漢字データベース(以下,KDB )に従ってこれを行う。

これを公開したとき,何を検査するか程度の簡単な説明しか記さなかった。これまで私自身が自作の漢詩のために再三にわたって活用して来たわけだが,きちんと検査仕様を整理しておく必要があると思っていた。プログラム開発に際して,当然ながら,漢詩作成方法の書籍を読み,そこから抽出した計算機ロジックをノートに書き,それに基づいてプログラミングを行った次第であるけれども,いまとなっては殴り書きのメモに近い。漢詩音韻分析の検査仕様(ビジネス・ロジック)を改めて記しておく。

1. 処理方式

Web ブラウザから使用する弊サイト・サービス「misima 漢詩作成支援 - 平仄音韻分析・詩語検索・漢字平仄検索」では,JavaScript によって Ajax 非同期通信でユーザ入力漢詩テキストをサーバに POST し,サーバでは Apache Tomcat 配下の Java Servlet misimakansiservlet が POST データを受け付けて,漢詩平仄音韻分析サーバ・プログラム misimakansiserver と接続し,分析要求を出すクライアントとなって利用者漢詩テキストを仲介し,その分析結果を利用者ブラウザに返却する,という仕組みになっている(図 1. 参照)。このうち,漢詩平仄音韻分析を実行するのは misimakansiserver — Perl 言語で書かれた,デーモン構造を有する常駐サーバ・プログラムである。起動すると,子プロセスを 4 つプレフォークして,それぞれがクライアント・プログラムからの分析要求をバークレイソケットで Listen する。

20140316-kansi-diagram.png
図 1. misima 漢詩平仄音韻分析ダイアグラム

misimakansiserver は利用者入力の漢詩テキストに対し,一文字ずつ KDB に照会し,文字・平仄・字韻からなる配列(以下,文字音韻配列)を生成する。KDB に存在しない漢字が入力されている場合,また KDB で字韻不明文字として登録されている場合,当該文字の平仄を利用者指定のオプションに従って決定し,各種試験を行う。標準では「平」として処理する。

KDB の平仄・字韻については,元代に確立された平水韻に基づいている。これは平聲三十種(上平聲十五種,下平聲十五種),上聲二十九種,去聲三十種,入聲十七種の,計百六の韻種からなり,一般の漢和辞典の四聲表記に採用されているもので,今日にいたるまでこれが漢詩の音韻の基準となっている。

以降,文字音韻配列をもとに以下を順次行う。なお,本稿においては,漢詩の行を「句」,句中の N 文字目を「N 段」と表現するものとする。

  1. 国字検査: 「峠」字など,日本独自の漢字を国字といい,漢詩ではその使用は許容されない。漢詩テキストに国字が存在しないかを検査する。
  2. 詩格判定: 漢詩構成文字の平仄のパターンから,漢詩の詩格を判定する。五言絶句,七言絶句,五言律詩,七言律詩,古詩を 17 のパターンに分類する。
  3. 二四不同検査: 漢詩句の二段と四段とは平仄が同じであってはならないという二四不同(にしふどう)規則を検査する。
  4. 二六対検査: 七言詩句の二段と六段とは平仄が同じでなければならないという二六対(にろくつい)規則を検査する。
  5. 下三連検査: 句の末尾三文字が同じ平仄の連続であってはならないという下三連(あさんれん)禁則を検査する。
  6. 孤平検査: 一つの平字が仄字に挟まれている続きがあってはならないという孤平(こひょう)禁則を検査する。
  7. 押韻検査: 押韻すべき句末で同じ字韻文字が出現しているかを検査する。
  8. 冒韻検査: 冒韻(ぼういん)とは,押韻字の字韻が押韻字以外の文字で使われることで,禁則の一つである。冒韻字が出現しているかを検査する。
  9. 同字重出検査: 漢詩ではある文字が複数回出現することは原則許容されない。その禁則を検査する。

各処理の詳細を次項以降に示す。

2. 国字検査

国字の判定は KDB データに依存する。KDB における国字エントリは「ウィクショナリー日本語版 - カテゴリ:日本の国字」にリストアップされた文字をもとに選定している。

入力漢詩に国字が使われていると,当該文字を出力し,漢詩の条件を満たしていないものとして処理を停止する。オプションにより強制的に以降の検査を続行することができる。ただしこの場合,平仄が判定できないため,各検査にてエラーが出力されることとなる。

3. 詩格判定

本システムにおいては詩格の判定の第一条件は詩の文字数である。20 字: 五言絶句; 40 字: 五言律詩; 28 字: 七言絶句; 56 字: 七言律詩; その他: 古詩の 5 大分類とする。五言・七言の絶句・律詩の分析をターゲットにしているため,楽府や排律といったバラエティを考慮していない。

また,いわゆる拗体(おうたい)には対応していない。絶句において起承,転結の二句はそれぞれ対応する段の平仄を反転させるのが一般的で,これを反法という。また承句と転句は対応する段の平仄を同じにし,これを粘法という。つまり,-(反法)--(粘法)--(反法)-という音韻の並びになるのが通常であるが,承転句も反法で構成する,すなわち,-(反法)--(反法)--(反法)-の体を拗体という。その例は柳宗元の五言絶句『江雪』がある。

   江雪 — 柳宗元
 千山鳥飛絶 ○○|●○●
 萬徑人蹤滅 ●●|○○●
 孤舟蓑笠翁 ○○|●○○
 獨釣寒江雪 ●●|○○●

上記 5 の大分類について,文字音韻配列において,一句目二段,一句目五段,二句目五段,一句目七段,二句目七段の平仄をもとに,17 の詩格に細分類を行う。これらの平仄条件に基づく詩格判定仕様を表 1. に示す。

表 1. 詩格判定表
凡例 - ○: 平字; ●: 仄字; -: ノーチェック;   
字数 平 仄 詩 格 Type
1句2段 1句5段 2句5段 1句7段 2句7段
20 - - - 五言絶句平起式平韻偏格 五言Type-1
20 - - 五言絶句平起式平韻(起句押韻) 五言Type-2
20 - - 五言絶句平起式仄韻 五言Type-3
20 - - - 五言絶句仄起式平韻正格 五言Type-4
20 - - 五言絶句仄起式平韻(起句押韻) 五言Type-5
20 - - 五言絶句仄起式仄韻 五言Type-6
28 - - - 七言絶句平起式平韻正格 七言Type-1
28 - - 七言絶句平起式平韻正格(踏落) 七言Type-2
28 - - 七言絶句平起式仄韻 七言Type-3
28 - - - 七言絶句仄起式平韻偏格 七言Type-4
28 - - 七言絶句仄起式平韻偏格(踏落) 七言Type-5
28 - - 七言絶句仄起式仄韻 七言Type-6
40 - - - - 五言律詩平起式平韻偏格 五言Type-11
40 - - - - 五言律詩仄起式平韻正格 五言Type-12
56 - - - - 七言律詩平起式平韻正格 七言Type-11
56 - - - - 七言律詩仄起式平韻偏格 七言Type-12
- - - - - 古詩 古詩Type-0

4. 二四不同検査

入力全句について,二段と四段とは平仄が同じであってはならないという二四不同規則を検査する。平仄が同じ場合は,不適合のエラーを報告する。

ただし,五言Type-4 及び 五言Type-5 の三句目について,二段が平()で四句も平()である場合,「挟平格」(例外的に許容される)を報告する。

両韻文字(平仄いずれでも用いられる文字: 記号で表示)の場合は,利用者にてその意味を勘案して平仄いずれで用いられているかを判断しなければならない。

5. 二六対検査

入力全句について,二段と六段とは平仄が同じでなければならないという二六対規則を検査する。七言詩のみのチェックである。平仄が同じでない場合は,不適合のエラーを報告する。

ただし,七言Type-1 及び 七言Type-2 の三句目について,二段が仄(●)で六段が平(○)である場合,「挟平格」(例外的に許容される)を報告する。

両韻文字(平仄いずれでも用いられる文字: 記号で表示)の場合は,利用者にてその意味を勘案して平仄いずれで用いられているかを判断しなければならない。

6. 下三連検査

入力全句について,句の末尾三文字が同じ平仄の連続(平字連続 ○-○-○ ないし仄字連続 ●-●-●)であってはならないという下三連禁則を検査する。五言詩の場合は三段,四段,五段を,七言詩の場合は五段,六段,七段をチェックし,禁則に該当する場合はエラーを報告する。

両韻文字(平仄いずれでも用いられる文字: 記号で表示)の場合は,利用者にてその意味を勘案して平仄いずれで用いられているかを判断しなければならない。

7. 孤平検査

入力全句について,一つの平字が仄字に挟まれている続き(●-○-●)があってはならないという孤平禁則を検査する。

ただし,五言詩の場合は二段のみを,七言詩の場合は四段のみをチェックする。

孤仄(こそく)禁則については,これを検査しない。

両韻文字(平仄いずれでも用いられる文字: 記号で表示)の場合は,利用者にてその意味を勘案して平仄いずれで用いられているかを判断しなければならない。

8. 押韻検査

押韻すべき句末文字で同じ字韻が一貫して出現しているかを検査する。五言詩・七言詩ともに偶数番目の句の最後段の字韻について検査する。七言詩は原則一句目も検査する。適合判断において,一韻到底格(同じ字韻で全押韻脚を一貫させる)を前提としている。通韻(途中で押韻の韻目を転換する技法)には対応していない。この場合,脚韻の韻目情報から利用者にて妥当性を判断しなければならない。

ただし,五言詩については,五言Type-2 及び 五言Type-5 の場合,一句目五段も検査する。また,七言詩については,七言Type-2 及び 七言Type-5 に限り,一句目七段の字韻が合わなくてもエラーとしない(踏落)。

9. 冒韻検査

押韻字と同じ字韻文字を脚韻以外で使用すること,たとえば,「華」(下平聲六麻)を押韻字として用いているときに押韻字以外で同じ下平聲六麻に分類される文字「花」を用いることは,これを冒韻と呼び,禁忌とされる。絶句・律詩に限りこの禁則を検査する。

10. 同字重出検査

漢詩ではある文字が複数回出現することは原則許容されない。その禁則を検査する。虚字,重言,畳語(「粛粛」)では文字の重複が認められているが,意味に依存するためこうした許容される重出も含めてエラー報告を行う。この場合は,利用者にて妥当性を判断しなければならない。

11. 参考文献

本プログラムの仕様策定において参考にした文献をあげておく。