詰将棋メモ(2016年1月18日)

ネット詰棋界
注目情報
今日のメモ更新
詰将棋メモ
昨日のアクセス
今日の詰将棋  Try everyday!  ほっと将棋  Onsite Fairy Mate
今週の詰将棋
連載
出題中
詰将棋イベント
(1月)
 24日(日) 詰工房★年賀詰鑑賞会(東京)  詰四会(香川)
         International Sovling Contest(東京)
 30日(土) 詰とうほく(仙台)  31日(日) 創棋会(大阪)

| | コメント (0) | トラックバック (0)

詰将棋創作プログラミング 15 データベースを手順で検索

[2016年1月18日最終更新]

詰将棋創作プログラミング 15 データベースを手順で検索

筆者はおもちゃ箱展示室という詰将棋コーナーを担当している。筆者に限らず詰将棋コーナーの担当者にとって、既存作品の検索はとても必要性が高い機能である(中には類似作をあまり気にしない担当者もいるが・・・)。創作プログラミングからは少し離れてしまうが、創作のための作品評価の準備としても必要な機能なので、もう少し追求してみることにした。

詰将棋創作プログラミング 13 詰将棋データベースの活用で触れたように、これまで、書誌事項、図面(初形、途中図、詰上り)の検索プログラムを開発してきた。手順についても同一手順や類似収束などシンプルな条件の検索プログラムを作成したが、「七種合」とか「双方歩不成」とか「飛打飛合10回以上」とか、手順条件作や趣向詰の検索はそれだけではできない。

そこで、少し汎用的な手順検索機能を開発してみようと思った。

1.手順ファイルtejun.txtの形式

TumeBaseのktkファイルには手順が含まれていないので、各詰将棋のkifファイルから手順を集めて手順ファイルを作成した。

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

この手順ファイルでは、各手ごとに次の情報を格納している(中合、空き王手、駒取りなどの情報の追加も検討中)。

# 手数 指手 先後 元 先 駒 成 玉 相対元 相対先
1,2三飛成(26),1,2,6,2,3,7,2,1,4,1,2,1,-1

  • 何手目か:1
  • 指し手(kif形式):2三飛成(26)
  • 先手(1)か後手(2)か:1 (先手)
  • 移動元(打の場合は0,0):2,6
  • 移動先:2,3
  • 駒(歩1~玉8、と9~龍15):7 (飛)
  • 成れない(0)か不成(1)か成(2)か:2 (成)
  • 玉位置:1,4
  • 玉相対の移動元(打の場合は0,0):1,2 (1,4 + 1,2 = 2,6)
  • 玉相対の移動先:1,-1 (1,4 + 1,-1 = 2,3)

2.文字列での手順検索 ktbu022.rb

まずは、この手順の文字列を単純に検索するプログラムを作ってみた。

ktbu022.rb 手順検索
ts.ktkに登録されている詰将棋から手順を検索する。
結果はktbu_result.txt、result.ktkに格納する

例えば、大道詰将棋の金問題を検索したいと思ったら
["9六金打", "8四玉", "8七香", "8六飛打"]
という具合に特徴的な数手を条件とすればよい。

ここで、ちょっと工夫して、連続した手順の一致だけでなく、指定した手がばらばらに出現する場合も検索できるようにしてみた。

SEQPAT = 2
  # 0 出現順は問わない
  # 1 順番通り出現
  # 2 連続した手順

例えば七種合を調べるには、手順パターンを
["歩打,2", "香打,2", "桂打,2", "銀打,2", "金打,2", "角打,2", "飛打,2"]
(",2"は後手の手の意味。後手の駒打ちは合駒)
として、SEQPAT = 0 とすればよい。歩から飛の順列七種合なら、SEQPAT = 1 とすればいいわけだ。

3.正規表現での手順検索 ktbu023.rb

TumeBaseの手順検索機能では +**金 -84玉 +8*香 -86*合 という感じに手順の一部にワイルドカード(その部分は何であっても一致とみなす)が使える。これはとても便利なので、なんとか実装したいと思った。

幸い、Rubyでは正規表現が使えるので、文字列のかわりに正規表現で検索できるようにすれば可能になる。もちろん、単なる文字列も正規表現で表現できるので、機能的にktbu022の上位互換になるわけだ。

ktbu023.rb 正規表現による手順検索
ts.ktkに登録されている詰将棋から正規表現で手順を検索する。
結果はktbu_result.txt、result.ktkに格納する

例えば、最近書きかけのブログ位置エネルギーは落ちてくる(4)で紹介された青山雁氏作の間接打診作品。同様な作がほかにないかと、「五段玉に二段目角打、三段目歩合」という条件で検索したいときは、次のように指定すればよい(SEQPAT は 2)。もちろんこの条件だけでは間接打診とは限らないので、検索された詰将棋の手順を確かめることが必要だ。

[/二角打,1,\d,\d,\d,\d,\d,\d,\d,5/, /三歩打/]
(1は先手の手、5が玉位置の段)

\dは数字[0-9]にマッチするので、TumeBaseの*と同じことができる。繰り返しの表現を使って  [/二角打,1(,\d){7},5/, /三歩打/] と書くことも可能。駒コードは角は一桁だからこれでよいが、成駒の場合は二桁になることがあるので要注意。

4.正規表現での手順検索の拡張 ktbu024.rb

記録作や趣向詰を調べたいとき、手順パターンが何回か出現する作品を検索したいことがある。「歩不成が5回以上」とか「(ある趣向パターンが)3回以上」とかいうようなケースだ。

そこで、手順検索の拡張として、出現回数を指定できるようにした。

例えば、歩不成5回以上なら [/歩\(\d\d\)(,\d){6},1/] が5回とか指定する(1が不成)。柿木将棋の棋譜は不成は記述されていない(成でないとき不成と判断できる)ので、別途情報を付加している。

前述の七種合のパターンで回数を2と指定すれば、「七対子」を見つけることができる。

また、類似作の検索などでは、キーになる手順パターンでこの部分とこの部分が両方でてくる作品を探したいということもよくある。

こういうケースも検索できるように、手順パターンを複数指定できるように拡張した。出現回数と組み合わせて、「このパターンが2回以上、このパターンが1回以上出現」という検索もできる。

ktbu024.rb 正規表現による手順検索 複数条件、回数指定を可能に
ts.ktkに登録されている詰将棋から正規表現で手順を検索する。
結果はktbu_result.txt、result.ktkに格納する

試しにこの機能を利用して、「七種合かつ六種不成」という条件で検索してみた。


2016-01-17T18:05:49+09:00 手順検索開始
2016-01-17T18:05:49+09:00 詰将棋データベースを読み込みます
2016-01-17T18:05:49+09:00 収録詰将棋数:256592
2016-01-17T18:05:52+09:00 詰将棋の手順を手順ファイルtejun.txtから読み込みます
2016-01-17T18:05:53+09:00 指定された手順を含む詰将棋を探します
##### No.86513 駒場和男 六法七変化 85手 近代将棋 P157 1996年10月
##### No.125547 駒場和男 六法七変化 85手 近代将棋 P172 1988年3月
##### No.128744 駒場和男 六法七変化 85手 近代将棋 P132 1987年8月
##### No.128768 駒場和男 六法七変化 85手 近代将棋 P132 1987年8月
手順パターン:
[[/歩打,2/, /香打,2/, /桂打,2/, /銀打,2/, /金打,2/, /角打,2/, /飛打,2/],
[/歩(dd)(,d){6},1/, /香(dd)(,d){6},1/, /桂(dd)(,d){6},1/, /銀(dd)(,d){6},1/, /角(dd)(,d){6},1/, /飛(dd)(,d){6},1/]]
繰り返し回数:[1, 1]
出現順は問わない
2016-01-17T18:05:57+09:00 検出詰将棋数:4
2016-01-17T18:05:57+09:00 検索結果をktbu_result.txt、result.ktkに出力しました
2016-01-17T18:05:57+09:00 詰将棋データベース手順検索終了


予想通りであるが、駒場さんの六法七変化がこの条件のオンリーワンの作品であることが確認できた。

5.今後に向けて


開発方針として、必要になる都度単機能のプログラムを開発してきた。この方針は早く開発できてよいのだが、情報、図面から手順まで、ある程度の検索手法は掴めたので、いずれはどの検索もできる統合検索プログラムを作ろうと考えている。

このメリットは、どのプログラムで検索するか悩まなくていいこともあるが、それよりも複数の条件を組み合わせて検索できるようになることが大きい。例えば「添川公司さんの七種合煙」といった、情報、図面、手順にまたがる検索が可能になるわけだ。

まあ、例によっていつになるかわからないが・・・

| | コメント (3) | トラックバック (0)

詰将棋メモ(2016年1月17日)

ネット詰棋界
注目情報
今日のメモ更新
詰将棋メモ
昨日のアクセス
今日の詰将棋  Try everyday!  ほっと将棋  将棋連盟飛騨支部
 とある岩手県民  詰将棋研究会  Onsite Fairy Mate
今週の詰将棋
連載
出題中
詰将棋イベント
(1月)
 24日(日) 詰工房★年賀詰鑑賞会(東京)  詰四会(香川)
         International Sovling Contest(東京)
 30日(土) 詰とうほく(仙台)  31日(日) 創棋会(大阪)

詰め将棋は解かないとダメだと痛感
1月16日、実力有段者にあこがれてで、詰め将棋は解かないとダメだと痛感

| | コメント (0) | トラックバック (0)

詰将棋メモ(2016年1月16日)

ネット詰棋界
注目情報
今日のメモ更新
詰将棋メモ
昨日のアクセス
今日の詰将棋  Try everyday!  ほっと将棋  伊達支部会員  詰将棋小隊 
 Onsite Fairy Mate
今週の詰将棋
連載
出題中
詰将棋イベント
(1月)
 24日(日) 詰工房★年賀詰鑑賞会(東京)  詰四会(香川)
         International Sovling Contest(東京)
 30日(土) 詰とうほく(仙台)  31日(日) 創棋会(大阪)

| | コメント (0) | トラックバック (0)

詰将棋創作プログラミング 14 同一作リストの作成

[2016年1月16日最終更新]

詰将棋創作プログラミング 14 同一作リストの作成

プログラムで、データベースに収録されている既存の詰将棋を利用しようとするとき、問題になるのが同一作が複数回登場することである。これは、発表時以外にも紹介されたときにもデータベースに登録されるからだ。ランダムに自動創作などこれまでの取り組みでは、そんなに多くないだろうと無視していたが、これはいろいろな最適値を求めたりするときノイズになるので、できれば取り除いて利用したい。

前回詰将棋創作プログラミング 13 詰将棋データベースの活用でちょっと触れた同一図番号リストファイルの作成はこの準備として開発したものである。

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

実行してみたところ、登録数256592作のうち18.2%、46827作が同一図だった。

同一図のほとんどは過去作の紹介によるものだが、中には別な作者名で発表されているものがある。いわゆる衝突(あるいは流用、盗作)のケースである。新作の場合、同一図があるかどうかは詰将棋同一検索で調べられるが、既存作品の場合はあらかじめ調べられるので、リストを作っておくと便利そうだ。

そこで、同一作リストファイル作成プログラムを開発することにした。

ktbu021.rb 同一作リストファイル作成
ts.ktkに登録されている詰将棋で、同一作で作者名が異なるものをリスト。
結果はdoitsu.txt、doitsu.ktkに格納する

実際に動かしてみると、かなりいろいろな問題があることがわかった。

1)データベースで発表なのか紹介なのか区別する情報がない。一応出典という項目があるのだが、発表の場合にも「デパート」とか発表コーナーに使っているデータもあって、識別が難しい。

2)そこで、「同一図があって作者名が同じとき発表年月の新しい方が紹介」という判定をするしかなさそうだが、ここで問題になるのが記述の誤りおよびゆらぎである。

a)斎藤を斉藤と誤ったり齋藤を使ったりするケース
b)初代大橋宗桂を初代宗桂、大橋宗桂(初代)など表記が異なるケース
c)発表時はペンネームだが、紹介したときは本名で紹介するケース
d)作者名でなく編者名や紹介者名などが記載されているケース
e)不明、作者知らず、大道棋などと記載されているケース

発表年月もデータにより西暦、年号が混ざっていて、xxxx年xx月、xxxx/xx、xxxxxxなども混在している。発表誌の項目に "中日スポーツ 2013年08月07日 P.0" などど入っているケースもある。

データベース全体の修正は件数が多くて困難なので、不明などは非対象としたり作者名を正規化したり頭2文字だけで一致とみなしたりプログラムで個別に意識して対策することにした。気づいた中で影響が大きそうなところを修正しただけで、まだ誤りや漏れは多いと思うので、リストを見るときには留意されたい。

実行した結果は次のような感じ。新しい(と思われる)順に出力している。


2016-01-16T00:59:09+09:00 同一作ファイル作成開始
2016-01-16T00:59:09+09:00 詰将棋データベースを読み込みます
2016-01-16T00:59:10+09:00 収録詰将棋数:256592
2016-01-16T00:59:21+09:00 同一図番号リストファイルtslist.txtを読み込みます
2016-01-16T00:59:21+09:00作者名が異なる同一作を調べます
##### No.1245 坂田慎吾 詰パラP6 2015年5月  ヤング03同一作あり
同一:No.104937 鈴木明 将棋ジャ-ナル 1992年10月  詰将棋ライフ
##### No.1490 中田章道 将棋世界P220 2015年4月  実戦に役立つ5手7手詰01
同一:No.100711 山本進 近代将棋P139 1993年10月 朝の詰将棋
##### No.2393 中田章道 将棋世界P223 2014年12月  実戦に役立つ5手7手詰06
同一:No.139123 二上達也 詰棋通信81号P008 1985年4月 1984.5.6 日刊スポーツ
##### No.3002 坂東仁市 詰パラ 2014年08月 ヨチヨチルーム
同一:No.15279 佐藤義則 週刊大衆P000 2012年6月 
##### No.3036 竹園政秀 詰パラ 2014年08月 詰将棋学校(高等学校) 同一作あり
同一:No.30855 妻木貴雄 将棋世界P215 2009年9月 詰将棋サロン

(中略)

##### No.246592 加唯 諸国象戯作物集坤巻P090 元禄13 
同一:No.255797 別所素庵 素庵作物P044 江戸初 諸国作物集90 (加唯)
作者名の違う同一図があった詰将棋数:2846
2016-01-16T01:01:21+09:00 作者名の違う同一作のリストをdoitsu.ktk、doitsu.txtに出力しました
2016-01-16T01:01:21+09:00同一作ファイル作成完了

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

(ブラウザで表示して文字化けするときはテキストエンコーディングを日本語(Shift_JIS)に設定)


全部で3000作近くあって意外に多い。リストを見ると、将棋専門誌以外の一般誌紙で発表された作品(主にプロ棋士が出題)、そしてスマホ詰パラの作品が多い(2014年、2015年はまだこれらのデータは収録されていない)。これらはシンプルな図が多いので偶然の一致ももちろんあるだろうが、プロ棋士でも北浜八段などリストに全くでてこない人もいれば毎年何回も登場している人もいて、意識の差を感じさせる。今は誰でも詰将棋同一検索で調べられるのだから、流用を続けているような人はいずれ淘汰されていくと思いたい。

本当は途中図を含めた同一作リストを作りたかったが、初形だけでもかなり時間がかかったことを考えると、もう少し高速化の手法を考えないと無理そうなので、これはまたいずれ。1作だけのチェックなら短時間でできるので、詰将棋同一検索でサポートしてくれることも期待したい。

| | コメント (0) | トラックバック (0)

詰将棋メモ(2016年1月15日)

ネット詰棋界
注目情報
今日のメモ更新
詰将棋メモ
昨日のアクセス
今日の詰将棋  Try everyday!  ほっと将棋  佐伯九段将棋サロン
 将棋連盟飛騨支部  Onsite Fairy Mate
今週の詰将棋
連載
出題中
詰将棋イベント
(1月)
 24日(日) 詰工房★年賀詰鑑賞会(東京)  詰四会(香川)
         International Sovling Contest(東京)
 30日(土) 詰とうほく(仙台)  31日(日) 創棋会(大阪)

| | コメント (0) | トラックバック (0)

詰将棋メモ(2016年1月14日)

ネット詰棋界
注目情報
今日のおもちゃ箱
今日のメモ更新
詰将棋メモ
昨日のアクセス
今日の詰将棋  Try everyday!  ほっと将棋  haru日記  my cube
 将棋連盟飛騨支部  Onsite Fairy Mate
連載
出題中
将棋ソフト
詰将棋イベント
(1月)
 24日(日) 詰工房★年賀詰鑑賞会(東京)  詰四会(香川)
         International Sovling Contest(東京)
 30日(土) 詰とうほく(仙台)  31日(日) 創棋会(大阪)

| | コメント (0) | トラックバック (0)

詰将棋メモ(2016年1月13日)

ネット詰棋界
注目情報
今日のメモ更新
詰将棋メモ
昨日のアクセス
今日の詰将棋  Try everyday!  ほっと将棋  大京クラブ4F  駒駒囲い
 伊達支部会員  Hara Blog  Onsite Fairy Mate
連載
出題中
詰将棋イベント
(1月)
 24日(日) 詰工房★年賀詰鑑賞会(東京)  詰四会(香川)
         International Sovling Contest(東京)
 30日(土) 詰とうほく(仙台)  31日(日) 創棋会(大阪)

| | コメント (0) | トラックバック (0)

詰将棋メモ(2016年1月12日)

ネット詰棋界
注目情報
今日のおもちゃ箱
今日のメモ更新
詰将棋メモ
昨日のアクセス
今日の詰将棋  Try everyday!  ほっと将棋  my cube  駒駒囲い  Hara Blog
 英の放電日記  詰将棋小隊  Onsite Fairy Mate
連載
出題中
詰将棋イベント
(1月)
 24日(日) 詰工房★年賀詰鑑賞会(東京)  詰四会(香川)
         International Sovling Contest(東京)
 30日(土) 詰とうほく(仙台)  31日(日) 創棋会(大阪)

平成教育委員会で詰将棋
1月11日、将棋ワンストップ・ニュースで、平成教育委員会で問題として詰将棋が出題され、加藤一二三九段が解答の解説をするという珍事

「プロブレム作家名鑑」
1月6日、Problem Paradise@propara
「Vlaicu CrisanとEric Huberが運営しているブログ「プロブレム作家名鑑」に、橋本哲さんが掲載されました。http://chesscomposers.blogspot.ro/2012/03/march-24th.html
「上田吉一さんの項目も掲載されました。こちら。http://chesscomposers.blogspot.jp/2012/04/april-28th.html
「ちなみに、わたしの項目はこちら。http://chesscomposers.blogspot.ro/2012/08/august-10th.html
1月11日
「「プロブレム作家名鑑」のページに花沢正純さんが掲載されました。こちら。http://chesscomposers.blogspot.ro/2012/11/november-28th.html

| | コメント (0) | トラックバック (0)

詰将棋メモ(2016年1月11日)

ネット詰棋界
注目情報
今日のおもちゃ箱
今日のメモ更新
詰将棋メモ
昨日のアクセス
今日の詰将棋  Try everyday!  ほっと将棋  駒駒囲い  Hara Blog
 Onsite Fairy Mate
連載
出題中
詰将棋イベント
(1月)
 24日(日) 詰工房★年賀詰鑑賞会(東京)  詰四会(香川)
         International Sovling Contest(東京)
 30日(土) 詰とうほく(仙台)  31日(日) 創棋会(大阪)

山田康平さんが高校の教科書に
1月10日、Problem Paradise@propara
「いやー驚いた。たった今発見した驚愕の事実。全国で使われている高校の英語の教科書に、山田康平くんが載っている!(これ、まだ誰も指摘した人がいないと思うんですが…。)どういう具合に載っているのか、推理できる人は相当に勘が鋭い。誰か当てられますか?」
「問題(?)の教科書とは、三省堂が出しているCrownのEnglish Communication II(平成26年度版)です。ごらんのとおり、Lesson 2に羽生さんが教材として取り上げられています。http://tb.sanseido.co.jp/english/h-english/26TB/crown_EC2.html
「そのLessonの中に載っているのが、羽生さんはチェスも指すことを説明した、次の写真(朝日新聞のものですね)。いやあ、これを見たときには、さすがにびっくり仰天しました。神戸でやったプロブレムの国際大会の写真!」

| | コメント (0) | トラックバック (0)

«安達康二「夢の車輪」