漢詩を作ったり、解析したりするのに役立つモジュール、関数をつくりました。

kansi_valid is a varidator of Han character poem(Kan si).

Author

Takayasu Hayashi(林 貴康 [email protected] )

License::GPL v2

  • 辞書の使用は自己責任でお願いします。辞書は漢太郎の作者、Jigen様の作成された辞書を御許可いただきUTF-8テキストにしてあります。Jigen様、ありがとうございます。間違いがありましたら修正したいと思いますのでご連絡ください。[email protected]

  • Dictionary saved “/dic/dic.txt”UTF-8,about 6800 chars ,made by Jigen Kanou. If you resume this,please tell me.

  • 文字コードは UTF-8 ですので、WinXPなどは出力をKconvで変換したり、対応のエディタで見てください。

:Usage 使い方

# coding:utf-8
requrie "rubyems" if "RUBY_VERSION"<"1.9"
require "kansi_valid"
include Kansi_valid
puts kv(generate)

#winXPなど、文字コードが shift-jisなどのとき
require "kconv"
print Kconv.kconv(Kansi_valid::sample,Kconv::SJIS,Kconv::UTF8)

先ずは有名なサンプルで。

sample # =>"#偶成 朱熹\n少年易老学難成\n一寸光陰不可軽\n未覚池塘春草夢\n階前梧葉已秋声\n"
        #other valid=>"少年易老学難成\n一寸光陰不可軽\n未覚池塘春草夢\n階前梧葉已秋声"
        #other valid=>"少年易老学難成 一寸光陰不可軽 未覚池塘春草夢 階前梧葉已秋声"
        #other valid=>"少年易老学難成一寸光陰不可軽未覚池塘春草夢階前梧葉已秋声"

漢詩ではないサンプル漢詩を機械的に生成します

samples(10)        # =>make many 'Meaningless' poet.
  • 七言絶句(7を指定)五言絶句(5を指定) make random ‘Meaningless’ poet(7or5 gon Zekku)

srand(0);str1 = generate(7) # => "戻里唆双差及援\n罷傷脈拘序周元\n家据弱役露宵屋\n稚守途紅稿軸温"
srand(0);generate(5)        # => "戻里唆双飯\n差猫及硬温\n除慌女収嫁\n枢寂厄痴援"
  • srand は同じ詩を生成するために使用していますので通常は不要

kansi_valid(String) 絶句ならば禁則評価と辞書の結果表示、research dictionary and answer,validate

kansi_valid(sample)
                 # =>#偶成 朱熹
                     少年易老学難成
                     一寸光陰不可軽
                     未覚池塘春草夢
                     階前梧葉已秋声

                    # 庚 平起
                    #篠●先○陌●皓●覚●寒◇庚○
                    #質●願●陽○侵◇物◇哿●庚◇
                    #未●覚●支○陽○真○皓●東◇
                    #佳○先○虞◇葉●紙●尤○庚○
                    #Valid 絶句(Ver0.0.6)
                    #2013-01-03 22:58:18 +0900

                    #少:●:篠:嘯:ショウ:すくない すこし わかい
                    #年:○:一先::ネン:とし よわい みのり
            以下省略#
            (ver 0.0.8よりValid表示基準を見直し)

kv(sample)             # =>同上、   same above
valid(sample)          # =>同上、   same above

文字列が絶句であれば true を返す

valid?(sample)         # =>true (絶句が正しいならtrue。)
                                     (両韻・畳字はtrueを返せない)  
kv_bool(sample)        # =>同上、   same above

漢詩でないものも第二水準漢字程度まで調べられます。日本の国字<峠辻>なども調べられますが、絶句の評価はできません。

dic("漢字辞典")        # =>文字列を調べる。普通こちら、Simple dictionary using Dic[]
                         # =>"漢:●:翰::カン:国名 あや から
                              字:●:寘::ジ:あざ あざな じ
                              辞:○:四支::ジ:やめる ことば ことわる
                              典:●:銑::テン:ふみ のり つかさどる
                             "
Dic["漢"]             # =>単漢字を調べる、Character Hash Dictionary(Author Jigen Kanou,in Kantarou)
                         # =>["漢", "413", "", "0", "●", "翰", "去声", "", "カン", "",
                              "国名 あや から", "3441", "2033", "13", "水艸口夫漢", "0"]

辞書の音訓などから調べる場合は search を使います

search("かえで")       # =>Dicの内容から該当する漢字のハッシュをつくる
                       # =>{"楓"=>["楓", "2440", "", "0", "○", "一東", "上平", "", "フウ", "",
                                   "かえで", "4976", "4186", "13", "木風几丿虫", "0"],
                            "槭"=>["槭", "4166", "", "0", "●", "屋", "入声", "", "セキ", "",
                                   "かえで", "5C65", "6069", "15", "木戚戈上小", "0"]}

平韻の字表の配列です

inji                   # =>平韻の配列表(inji[x],x=0..29)
              (inji[0]が一東です)
              inji[29] # =>"咸銜鹹緘岩巌杉衫凡鑑函監讒帆"

常用漢字の配列です(約1945字)

Jouyou=["哀","愛",..,"湾","腕"]

辞書漢字の配列です(約6715字、国字など含む。かな・記号類は除外してあります。)

Ji    =["亜","唖",..,"禔","赶"]

平仄韻からランダムに文字をあてはめます

poetter("常国◇○●\n◇○○●◎\n○○●○●\n○●●○◎",[Jouyou,inji[0]])
                      # =>"常国雇坪坂\n飲戯眠分崇\n諸番襲硝看\n評緯越然籠"
zekku_list            # =>絶句として適した文字を当てはめる配列
kougo("◇●常国○◎")     # =>"囚故常国挑琴\n#侵"  平仄式から字を充て、最後に韻をコメント。
                      #   "◇不問 ●仄 ○平 ◎韻"
kougo()               # =>無意味な香語調を生成します、make random 'Meaningless' "kougo".

hyousoku("菩薩")      # =>"虞◇曷●" (韻と平仄式を返す)
hyosoku("菩薩")       # =>同上、   same above

漢詩バリデータ(ルールどおりか評価する)

漢詩のルールにしたがっているかをチェックするスクリプト
  記号
    平=韻+○
    仄=韻+●
    両韻=◇
    国字など=■
    それ以外=?
チェック可能漢詩:
    七言絶句
    五言絶句
チェック項目
  押韻、おういん(重複禁)、踏み落とし(三句目)
  二四不動、にしふどう(挟み平(転句)はOK)
  二六対、にろくつい(挟み平(転句)はOK)
  下三連禁、あさんれんきん
  挟み平(転句はOK)
  二弧平禁(七言は四弧平禁)
  冒韻禁,韻字の句内での重複(畳字なども未チェック)
  他のチェック事項
    韻
    平起、仄起

  やりたいこと
    読みかた(音、訓)# =>漢字辞書などへ転送など。
  できてないこと
    対句,畳字など技法のチェック
    両韻の振り分けなど(◇でしか対応できない。基本1字1韻対応となる。) 
  たぶんチェックできないこと
    2、2、3(五言は2,3)の字で区切られているか
    多少目をつむるなどの融通はきかない。
  次は詩語表を登録したり、句のまとまりで当てはめられるようにしたい。