#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.