« 詰将棋メモ(2015年12月31日) | トップページ | 推理将棋第98回出題(2月20日まで) »

詰将棋創作プログラミング 13 詰将棋データベースの活用

[2015年12月31日最終更新]

詰将棋創作プログラミング 13 詰将棋データベースの活用

詰将棋の創作では、既存作品の調査、分析が重要である。

  • 既存作品を鑑賞、分析して創作の参考にする
  • 既存作品を検索して、同一作、類似作を避ける

創作プログラミングでも、既存作品を調査することで検索する条件を調整したり、既存作品の駒配置を利用して新たな作品を生成したりしてきた。しかし、これまで利用してきたのは詰将棋の初形にとどまっている。逆算サーチ、趣向サーチ、手順指定サーチなど、更に高度な創作プログラミングを実現するには、既存作品の検索、分析も、初形だけでなく手順や詰上りを含めて対象にする必要がある。

既存のデータベースには、全詰連のTBASE、柿木将棋付属のTumeBase、そしてWebで提供されている詰将棋同一検索などがある。詰将棋同一検索は名前の通り同一作の検索しかできないが、TBASEとTumeBaseはいろいろな条件で検索ができる。

  • 書誌事項(作者、発表誌、発表年月など)、玉位置、手数:TBASE・TumeBase共
  • 駒種ごとと全体の枚数(持駒、置駒、合計)での検索:TBASEのみ
  • 詰上り玉位置、駒数、攻方駒数での検索:TBASEのみ
  • 同一作、類似作、シルエット検索:TBASEのみ(初形だけ)
  • 局面検索(指定局面の駒を包含する局面の検索):TumeBaseのみ(初形、途中図、詰上り)
  • 趣向検索:裸玉、双玉、無仕掛け、飛角図式:TumeBaseのみ(初形、途中図、詰上り)
  • 手順検索:TumeBaseのみ
  • 手順の出現回数を調べる:TumeBaseのみ

このように、どちらかだけでできる検索が多く、また、四銀詰、あぶり出しシルエット検索など、どちらでも検索できない条件も多い。TBASEのデータベース(DIAファイル、TJNファイル)は図面、手順をすべて含んでいるので、検索は比較的高速。TumeBaseのデータベース(ktkファイル)は図面、手順は含んでいない(各kifファイルを読みに行く)ので、詰将棋数が多いと局面検索や手順検索は時間がかかる。

これらのことを考慮して、検索プログラムを新たに開発することにした。11 ランダムに自動創作で初形の検索プログラムを開発したので、これを拡張して詰上りや途中図、手順を含めていろいろな検索ができるようにしたい。しかし、多機能のデータベースプログラムを開発するのは大変なので、以下の方針でシンプルなプログラムですませたいと考えた。

  1. ユーザインタフェースはTumeBase、柿木将棋を活用
    これは検索結果をktkファイルで出力することで可能になる
  2. 検索条件やファイル名、各種パラメータはプログラムの中に直接書き込む
    環境ファイルも不要でプログラムがシンプルになる
    (Rubyで開発しているのでコンパイル不要で即実行できる)
  3. 単機能のプログラムを必要なつど作る
    プログラムが小さくなり、既存部分に影響しないので早く開発できる

これまでに開発したプログラム(柿木詰将棋データベースユーティリティ)は次の通り。必要なつど作っているので、あまり体系的になっていない。

ktbu001.rb 詰将棋KTK作成
all.ktkから指将棋棋譜や必至、フェアリーを除き、ts.ktkを作成する

ktbu002.rb 図面ファイル作成
ts.ktkに登録されているkifファイルの図面を収集、zumen.txtに格納する

ktbu003.rb 手順ファイル作成
ts.ktkに登録されているkifファイルの手順を収集、tejun.txtに格納する

ktbu004.rb 初形・書誌事項の検索
ts.ktkに登録されている詰将棋の初形を検索、結果はresult.ktkに格納する

ktbu005.rb 初形・詰上り・書誌事項の検索
ts.ktkに登録されている詰将棋の初形と詰上りを検索、結果はresult.ktkに格納する

ktbu006.rb 詰上り図面ファイル作成
ts.ktkに登録されている詰将棋の詰上り図面ファイルowari.txtを作成。

ktbu007.rb 内部形式の初形図面ファイル・詰上り図面ファイル作成
ts.ktkに登録されている詰将棋の
初形図面ファイル(内部形式)zumenx.txt
詰上り図面ファイル(内部形式)owarix.txtを作成。

ktbu008.rb 初形・詰上り・書誌事項の検索(高速版)
ts.ktkに登録されている詰将棋の初形と詰上りを検索、結果はresult.ktkに格納する

ktbu009.rb 初形・詰上りの検索(高速版) 書誌事項の検索はなし
ts.ktkに登録されている詰将棋の初形と詰上りを検索、結果はresult.ktkに格納する

ktbu010.rb 初形・詰上りの曲詰検索(シルエット検索)
ts.ktkに登録されている詰将棋の初形と詰上りから指定したパターンを検索、
結果はresult.ktkに格納する

ktbu011.rb 同一作検索
ktbu_in.kifの同一作(左右対称も含む)を
ts.ktkに登録されている詰将棋から検索、結果はresult.ktkに格納する

ktbu012.rb 同一手順検索
ktbu_in.kifの同一手順作(左右対称も含む)を
ts.ktkに登録されている詰将棋から検索する。結果はresult.ktkに格納する

ktbu013.rb 同一手順連続検索
ts.ktkに登録されている連続した複数の詰将棋を対象に
同一手順作があるか検索する
結果はktbu_result.txt、result.ktkに格納する

ktbu014.rb 龍1枚図式の検索
ts.ktkから盤面玉1枚龍1枚の詰将棋を検索(途中図含む)
結果はresult.ktkに格納する

ktbu015.rb 同一収束検索
ktbu_in.kifの同一収束作(左右対称も含む)を
ts.ktkに登録されている詰将棋から検索する。結果はresult.ktkに格納する

ktbu016.rb 同一収束連続検索
ts.ktkに登録されている連続した複数の詰将棋を対象に
同一収束作があるか検索する
結果はktbu_result.txt、result.ktkに格納する

ktbu017.rb 類似収束検索
ktbu_in.kifの類似収束作(左右対称も含む)を
ts.ktkに登録されている詰将棋から検索する。結果はresult.ktkに格納する

ktbu018.rb 類似収束連続検索
ts.ktkに登録されている連続した複数の詰将棋を対象に
類似収束作があるか検索する。結果はktbu_result.txt、result.ktkに格納する

ktbu019.rb 初形・途中図・詰上りの検索
ts.ktkの詰将棋の初形、途中図、詰上りを検索。結果はresult.ktkに格納する

ktbu020.rb 同一図番号リストファイルの作成
ts.ktkの番号のリストtslist.txtを作成する
行nには、同一作があればその番号、なければnを格納

ts.ktkには25万以上の詰将棋が登録されていて、TumeBaseで手順検索すると25万以上のファイルを読みにいくのでちょっと時間がかかるが、これらの検索プログラムでは図面ファイル、手順ファイルを一つにまとめているので比較的高速。例えば、ktbu013.rb 同一手順連続検索で、2015年の詰パラに掲載された全作品(1157作)についてDB全体(256607作)から同一手順作を求めたところ5分弱で終わった。

詰将棋コーナーの担当者にとって便利なのはktbu018.rb 類似収束連続検索かな。もちろん収束だけのチェックでは類似作は防げないが、EOGさんに指摘されるのを少しは減らせるかもしれない。

試しに詰パラ2015年12月号掲載の全作品について検索してみた。

2015-12-31T13:44:56+09:00 類似収束作連続検索開始
詰将棋No.指定:なし
発表指定:詰パラ 2015年12月
作者指定:なし
同一・類似作検出上限:10
チェック手数:最終9手
平行移動収束も類似とする
移動先を比較する
移動元を比較する
駒種は違っても類似とする
2015-12-31T13:44:56+09:00 詰将棋データベースを読み込みます
2015-12-31T13:44:57+09:00 収録詰将棋数:256607
2015-12-31T13:44:59+09:00 詰将棋の手順を手順ファイルtejun.txtから読み込みます
##### No.87666 摩利支天 詰パラ P73 2015年12月
同一:No.85499 摩利支天 詰パラ 2014年02月
##### No.87667  詰パラ P23 2015年12月
##### No.87668  詰パラ P23 2015年12月
##### No.87669  詰パラ P23 2015年12月
##### No.87670 長谷繁蔵 詰パラ P2 2015年12月
##### No.87671 室門健一 詰パラ P2 2015年12月
類似:No.116988 田中義昭 詰パラ P014 1984年11月
類似:No.145735 中田章道 将棋世界 P218 2012年9月
##### No.87672 坂東仁市 詰パラ P2 2015年12月
##### No.87673 坂東仁市 詰パラ P2 2015年12月
##### No.87674 坂東仁市 詰パラ P2 2015年12月
##### No.87675 杉田透 詰パラ P3 2015年12月
##### No.87676 室門健一 詰パラ P3 2015年12月
##### No.87677 熊谷春海 詰パラ P3 2015年12月
##### No.87678 北原幹久 詰パラ P3 2015年12月
##### No.87679 坂田慎吾 詰パラ P3 2015年12月
##### No.87680 鈴川優希 詰パラ P表3 2015年12月
##### No.87681 本間博 詰パラ P表3 2015年12月
##### No.87682 池田俊哉 詰パラ P表3 2015年12月
同一:No.84818 山田修司 詰パラ 2013年07月
同一:No.87235 山路大輔 詰パラ P16 2015年7月
同一:No.106092 北川明 詰パラ P42 1974年8月
同一:No.106632 岩木錦太郎 詰パラ P014 1975年2月
同一:No.107916 新田道雄 詰パラ P36 1976年4月
同一:No.124952 信太弘 詰パラ P014 1994年6月
同一:No.127005 門前清一 詰パラ P28 1996年7月
同一:No.127006 門前清一 詰パラ P29 1996年7月
同一:No.127007 門前清一 詰パラ P29 1996年7月
同一:No.127008 門前清一 詰パラ P29 1996年7月
同一・類似収束作が10作に達したので、この詰将棋の検索は打ち切ります
##### No.87683 青木裕一 詰パラ P表3 2015年12月
##### No.87684 相馬康幸 詰パラ P表3 2015年12月
##### No.87685 井上貴裕 詰パラ P6 2015年12月
##### No.87686 須田将一 詰パラ P6 2015年12月
##### No.87687 佐藤勝三 詰パラ P6 2015年12月
同一:No.114374 藤井国夫 詰パラ P44 1982年6月
##### No.87688 山崎詔三 詰パラ P6 2015年12月

(中略)

##### No.87778 青木裕一 詰パラ P表1 2015年12月
2015-12-31T13:58:58+09:00 検索結果をresult.ktk、result.txtに出力しました
2015-12-31T13:58:58+09:00 詰将棋データベース類似収束検索終了

全文は「201512.txt」をダウンロード

手順検索では、手の属性(直接王手、空き王手、遠打、不成、中合、捨駒など)も付加して検索できるようにしたい。また、おもちゃ箱ではくるくるが多いので、趣向検索も必要かなと思っている。 この辺はいろいろ難しい要素もあるので、いつになるかわからないが・・・

|

« 詰将棋メモ(2015年12月31日) | トップページ | 推理将棋第98回出題(2月20日まで) »

「コンピュータ詰将棋」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/22735/62975012

この記事へのトラックバック一覧です: 詰将棋創作プログラミング 13 詰将棋データベースの活用:

« 詰将棋メモ(2015年12月31日) | トップページ | 推理将棋第98回出題(2月20日まで) »