漢詩を作ったり、解析したりするのに役立つモジュール、関数をつくりました。
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
#少:●:篠:嘯:ショウ:すくない すこし わかい
#年:○:一先::ネン:とし よわい みのり
以下省略#
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)の字で区切られているか
多少目をつむるなどの融通はきかない。
次は詩語表を登録したり、句のまとまりで当てはめられるようにしたい。