#coding:utf-8
漢詩を作る、平仄や添削したりするのに役立つモジュール、関数をつくりました。
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
run(port=8880) # => see 127.0.0.1:8880
puts kv(generate)
#winXPなど、文字コードが shift-jisなどのとき
require "kconv"
print Kconv.kconv(Kansi_valid::sample,Kconv::SJIS,Kconv::UTF8)
#追記Windows7以降のコンソールで、ruby1.9以降、エラーがでるなら、
ruby -Ku kansi_valid_script
や
ruby -U kansi_valid_script
script内部で
Encoding.default_external = 'utf-8'
Encoding.default_internal = 'utf-8'
をつかってみてください。(Fixed >=0.0.9)
先ずは有名なサンプルで。
sample # =>"#偶成 朱熹
少年易老学難成 一寸光陰不可軽 未覚池塘春草夢 階前梧葉已秋声 “
#other valid=>"少年易老学難成
一寸光陰不可軽 未覚池塘春草夢 階前梧葉已秋声“
#other valid=>"少年易老学難成 一寸光陰不可軽 未覚池塘春草夢 階前梧葉已秋声"
#other valid=>"少年易老学難成一寸光陰不可軽未覚池塘春草夢階前梧葉已秋声"
漢詩ではないサンプル漢詩を機械的に生成します
samples(10) # =>make many 'Meaningless' poet.
-
七言絶句(7を指定)五言絶句(5を指定) make random ‘Meaningless’ poet(7or5 gon Zekku)
srand(0);str1 = generate(7) # => "戻里唆双差及援
罷傷脈拘序周元 家据弱役露宵屋 稚守途紅稿軸温“
srand(0);generate(5) # => "戻里唆双飯
差猫及硬温 除慌女収嫁 枢寂厄痴援“
-
srand は同じ詩を生成するために使用していますので通常は不要
kansi_valid(String) 絶句ならば禁則評価と辞書の結果表示、research dictionary and answer,validate
str=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
html化して、wiktionaryなどで文字を調べられるようにするなら、
wik=to_wiktionary(str)
open("kansi.htm","w"){|io| io.print wik}
などとすると、html埋め込みデータができます。(ヘッダ等は必要なら適宜入れてください。)
firefox kansi.htm
などして、見てください
文字列が絶句であれば 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("常国◇○●
◇○○●◎ ○○●○● ○●●○◎“,[Jouyou,inji])
# =>"常国雇坪坂
飲戯眠分崇 諸番襲硝看 評緯越然籠“
zekku_list # =>絶句として適した文字を当てはめる配列
kougo("◇●常国○◎") # =>"囚故常国挑琴
#侵“ 平仄式から字を充て、最後に韻をコメント。
# "◇不問 ●仄 ○平 ◎韻"
kougo() # =>無意味な香語調を生成します、make random 'Meaningless' "kougo".
hyousoku("菩薩") # =>"虞◇曷●" (韻と平仄式を返す)
hyosoku("菩薩") # =>同上、 same above
漢詩バリデータ(ルールどおりか評価する)ができるまで…
漢詩のルールにしたがっているかをチェックするスクリプト
記号
平=韻+○
仄=韻+●
両韻=◇
国字など=■
それ以外=?
チェック可能漢詩:
七言絶句
五言絶句
チェック項目
押韻、おういん(重複禁)、踏み落とし(三句目)
二四不動、にしふどう(挟み平(転句)はOK)
二六対、にろくつい(挟み平(転句)はOK)
下三連禁、あさんれんきん
挟み平(転句はOK)
二弧平禁(七言は四弧平禁)
冒韻禁,韻字の句内での重複(畳字なども未チェック)
他のチェック事項
韻
平起、仄起
やりたいこと
読みかた(音、訓)# =>漢字辞書などへ転送など。
できてないこと
対句,畳字など技法のチェック
両韻の振り分けなど(◇でしか対応できない。基本1字1韻対応となる。)
たぶんチェックできないこと
2、2、3(五言は2,3)の字で区切られているか
多少目をつむるなどの融通はきかない。
次は詩語表を登録したり、句のまとまりで当てはめられるようにしたい。
<h3>更新履歴</h3> ‘0.0.12’ checked windows. ‘0.0.11’ #Kansi_valid::run (add) ‘0.0.10’ 0.0.9 error in rdoc(win7) ‘0.0.9’ BugFixed kansi_valid.rb (RUBY >=1.9)ENCODING ERROR on Windows7(or later) console. ‘0.0.8’ kansi_valid Bug fixed.(_bouin word+=…) ‘0.0.7’ Also use NameSpace (module_function add). ‘0.0.6’ Rdoc error fixed. UnitTest add. ‘0.0.5’ search() add. ‘0.0.4’ Linux support. ,delete ‘win32ole’ ‘0.0.3’ for win 2009.2.6Takayasu_H ‘0.0.2’ some bug fix
‘0.0.1’ first on windows XP. Thanks Kantarou(Author:Jigen Konou),and its great dictionary.