…が、今日は遅くなってしまったので、明日書きます。
<追記>
また遅くなっちゃった…
延期。
<追記2>
書いた↓
まず、おさらい。
内海さんの例の「山本耕史」で言えば、canna での登録法は
やまもとこうじ #JN 山本耕史
で、この場合は「山本耕史」が一語となり、間に区切りは入らない。
このように「山本耕史」が一語で登録されている場合、「山本浩二」を出したくても「山本耕史」になってしまい、しかも区切り直さなければ「山本浩二」が出せない、というイラつく状況になる。
これの解決法として anthy には複合語登録がある。
やまもとこうじ #JN #_4山本_3耕史
と登録しておくと、「山本|耕史」のように間に区切りが入った状態で変換されるので、「山本」と「耕史」を別々に変換できるようになる。「山本浩二」が出したいなら、まず「山本」の部分はそのまま確定し、「耕史」の部分だけ「浩二」に変換すればいい。
「#_4」等の意味は、先頭の「#」でそのエントリが複合語であると認識され、「_4」や「_3」の部分で各部分に読みの何文字分を割り当てるかが指定されている。
「_4山本」で、「山本」の部分に読みの先頭から 4文字分(やまもと)が割り当てられ、「_3耕史」で「耕史」の部分に読みの、次の 3文字(こうじ)が割り当てられる、という感じ。
これは確かに便利な機能で、anthy の賢いところだが、問題もある。
[学習機能にクセがある]
「山元耕史」で確定すれば、次からは「山元|耕史」を最初に出してくれるが、何度「山本幸司」で確定しても、anthy は「山本|耕史」を最初に出し続ける。
別の例を挙げると、compound.t に
さんかしゃかん #T35 #_3参加_2者_2間
というエントリがあるが、何度「参加社間」で確定しても、「さんかしゃかん」を変換する度に anthy は「参加|者|間」を出し続ける。
つまり、学習機能が働くのは先頭部分のみ。
しかし、「やまもとこうじ」で「山本|幸司」を、「さんかしゃかん」で「参加|社|間」を一発で出すことはできないのか、というと、実はできる。
一度「こうじ」や「しゃ」を単独で変換し、「幸司」や「社」で確定・学習させておけば、「やまもとこうじ」や「さんかしゃかん」が、「山本|幸司」や「参加|社|間」になる。
なので、厳密に言うと、「複合語として変換→確定した場合には、先頭部分以外は学習機能が働かない」ということになる。
複合語の一部を単独で学習させておけば、複合語で変換したときもその学習結果が反映される。
とは言え、ユーザは自分が変換しているのが複合語として登録されているものなのかそうでないのかは分からないので、「anthy は学習したりしなかったりする」とか「学習されるものとされないものがある」という風に混乱してしまう。
<訂正>
「山本」を確定せずに文節を移動し、「耕史」を「幸司」に変換してから一気に「山本|幸司」全体を確定すれば学習されるみたい。
なので、「先頭部分以外は学習機能が働かない」わけではない。
とは言え、ユーザが混乱することに変わりはないと思う。
[同音異義語の複合語で区切り位置が同じものが無視される]
内海さんのメールにあるやつ。
「山本耕史」も「山本浩二」も両方とも複合語で登録してあるのに、後ろに登録してある「山本浩二」の方は効いていないようだ、という点について。
やまもとこうじ #JN #_4山本_3耕史 #_4山本_3浩二
と登録しても、「浩二」はずっと後ろの方にしか出てこない。
「二つめ以降の複合語エントリは単純に無視されているのか?」と思ったが、そうではないらしい。
試しに「#_4採点_2者」と「#_2再_4転写」のように、同音だが区切りの位置が異なる複合語を作ってみたところ、区切り直すとちゃんと「採点|者」から「再|転写」になる。
ほうかいせい #T30 #_2法_4改正
ほうかいせい #T35 #_4崩解_2政(分かりやすくするためにわざと誤字を入れる)
でも「法|改正」から「崩解|政」になる。従って、二つめ以降の複合語エントリが全く無視されているわけではない。
# ちなみに「崩解政」で確定して学習させると、次からは「崩解|政」が最初に出るので、区切り位置の変更の学習はできている。
# しかし「ほうかいせいする」と「する」をつけても「崩解|政」が先に出るので、品詞コードがどこまで効いているかは疑問。
じゃ、前述の「#_4山本_3浩二」は認識されているのかというと、それも違うらしい。
やまもとこうじ #JN #_4山本_3耕史 #_4テスト_3浩二
と変更してみても、「やまもと」の候補リストに「テスト」は出てこない。
なので、「区切り位置が同じだと二つめ以降の複合語エントリは無視されてしまうらしい」ということになる。
区切り位置の同じ複合語はそれなりの数あるので、これは結構痛い。
無視される結果、例えば「浩二」を出すためには 20回近く変換キーを押さなければならないように、同音異義語が多い場合には、悲惨なことになる。
この場合は、
やまもとこうじ #JN 山本耕史 山本浩二
と canna 式で登録しておいた方がまだいい。
[その他細かい点]
・「やまもとこうじ」→「山本|耕史」で、「山本」を確定後、「耕史」の部分で変換キーを何度か押し、候補ウィンドウを表示させる。その後、Backspace でキャンセルすると「耕史」には戻らない。再度変換キーを押して候補リストを表示させると、「こうじ」を単独で変換したときと同じになってしまう。
現在「耕史」は単独では登録されていないため、結果、「耕史」は候補リストから消えてしまう(半分は辞書のせい)。
・(まだあったんだけど、書いてるうちに忘れた…)
[辞書メンテが大変になる]
ほんとはこれをこの記事のメインにしようと思ってたが、長くなったので端折る。
リリースする辞書を canna 用と anthy 用に分けなければならなくなるとか、「う゛」を含む読みのものは「ヴ」に直した候補を作ったときに読みの文字数が変わってしまうとか、色々越えなければならない壁はあるが、やってやれないことはないのは判明。
しかし、「一回対応してしまえば後は今まで通り」というわけではなく、対応後はエントリ 1個あたりに掛かる時間と労力が増える。しかもそれは複合語だけでなく、複合語でないものについても増える(フォーマットを複合語に合わせるので)。なので、やるかどうかについては相当ためらいがある。
まして、anthy は開発が止まってしまい今後どうなっていくか分からない現在では尚更。
確かに近い将来に anthy に代わる変換エンジン(しかも cannadic改を使った)が出てくるとは期待できないので、対応してもすぐに努力が無駄になるということはないとは思いますが…。
また、複合語登録の機能が、上記のような問題を抱えつつもなお、(他の作業を止めて)多くの時間と労力を費やして対応するだけの価値がある魅力的な機能か、というと、個人的にはそれほどではないという気がしてます。
「複合語じゃなく、corpus の例文として登録するのじゃいかんのか?」とか思うし…。
ご意見募集します。
【関連する記事】
> 複合語登録の機能が、上記のような問題を抱えつつもなお、(他の作業を止めて)多くの時間と労力を費やして対応するだけの価値がある魅力的な機能か、というと、個人的にはそれほどではないという気がしてます。
そうですね。新しくこれから複合語を登録する気はあまりないです。ただし compound.t の内容は豊富なので、編集者の方々(当時 good-day に在籍していた方々?)には深く感謝しています。
name.t に関しては複合語登録をやめてもいいかなという気もしますが、同音異名は有名人に関してはそんなにないので、ものすごく不便な思いもしていません。したがって一語表記に書き換えるモチベーションもあまりないです。
書き換え自体はスクリプトを作れば canna 式に変更することは容易だと思います。でも今は暑すぎて何も考えられない...
意に沿わぬ作業をやってはみたが、反応が全然ないし...
まあ特殊辞書の需要量と、責任を持って編集してくれる人がいるかどうかを知りたかっただけなので、作業時間はそんなにかけていません。
ここで失礼しますが、Wikipediaや2典Plusの一覧から持ってきた場合、個々の単語については問題ありませんがデータベースの著作権で問題になります。Wikipedia側の一覧の変換した物はGFDLで公開すれば大丈夫ですが、2典Plus側の一覧の変換した物はアウトです。
> anthy-dev に投げた方が良いような気がしますが、
言われると思いました (^^;
元々「cannadic改を anthy の複合語登録に対応させるかどうか」ということを書くつもりだったので、最初から anthy-dev に投げるつもりはなかったんですが、書きながら色々確認しているうちに自分の勘違いやら新たな発見やらがあって、で、出来あがってみたら「anthy の複合語機能にはこんな問題がある」的な内容になっちゃったという(w
今投げても「手を引いちゃってからそんなこと言うなよ…」という感じでしょうし、投げて無反応だったら自分も嫌ですし、まぁ止めときます。
> 新しくこれから複合語を登録する気はあまりないです。
cannadic改を対応させるとなると大変ですが、name.t や新たな辞書で初めから登録していく分にはいいんじゃないでしょうか?
自分の言いたかったのはあくまで「cannadic改を対応させるコストに見合うかと言えば No だと思う」ということで、あれば便利な機能であることは間違いないと思いますので。
(記事に書いた「問題点」も書き始める前に思っていたよりは大したことないことが分かって「ありゃ」とか思いました)。
でも、どうされるかは ut さん次第なので、お任せします。
> 書き換え自体はスクリプトを作れば canna 式に変更することは容易だと思います。
こちらはメールありがとうございました。
実は同じようなことをするスクリプトはすでに作ってあり(シェルスクリプトですが…)、また ruby をまだ知らないのでメンテしたり拡張したり出来ないので、頂いたのに申し訳ないですが、多分使うことはないです m(__)m
ruby を覚えるときのお手本として使わせて頂きます(w
> 意に沿わぬ作業をやってはみたが、反応が全然ないし...
キツイことを言うようで申し訳ないですが、正直、あれで反応があると思う方が甘過ぎるのでは…?
「オレはこれをやるぞ!だからみんな手を貸してくれ!」というなら手伝ってくれる人はいると思いますし、せめて正しい読みまでついているものならまだしも、中途半端な状態で「自分はここまでやったから後は誰かやってね」と言われても、「じゃあオレが」と言ってくれる人はいないと思いますよ。ただでさえ「ガラパゴス」とか言われてるわけですし…。
って、自分なんかが偉そうなこと言ってすみません (^^;
著作権にお詳しいと見て、脊髄反射的に聞いてしまいますが、たとえば、(予め wikipedia のアーカイブを落としておいて、それに対してスクリプトで)
1. 「日本の漫画家一覧」をから各漫画家のページへのリンクを抜き出す
2. 1. の URL リストを順に辿って、リンク先のページの本文から「漫画家名」とその「読み方」の部分を抜き出してリスト化する
というのなら問題ないですかね?
フォーマットが決まっているようなのでやるのは簡単ですが。
wikipedia の「一覧」をそのまま使っているわけでないですし、本文から抜き出しているのは「漫画家名」とその「読み方」の部分だけなので、さすがに「これに著作権はないだろう」と思うのですが。ダメかな…?
ちょっと思って聞いてみただけなので、答えるのが面倒だったりしたらスルーして下さい。
残念ながら法律家ではないので詳しくはありません。
素人考えですが、以下のように捉えています。
著作権法第二章第一節第十二条の二に「データベースでその情報の選択又は体系的な構成によつて創作性を有するものは、著作物として保護する。 」とあります。
http://www.cric.or.jp/db/article/a1.html
編集著作権の判例は多数あるもののデータベースの著作権の判例は少ないのが現状です。
その中のタウンページ・データベースの件では著作権は認められてます。
もう一つの件では著作物性は認められないものの不法行為でアウトとなってます。営業絡みの問題ですが、Wikipediaは他の企業と提携してお金を得てたはずなので後々問題になる可能性があります。
http://www.hanketsu.jiii.or.jp/hanketsu/jsp/hatumeisi/hyou/200408hyou.html
Debianでは法的な事はなるべくネガティブに取らなければならないのでライセンスに従わないとアウトと考えています。
>1. 「日本の漫画家一覧」をから各漫画家のページへのリンクを抜き出す
リンクの一覧はリファレンス・データベースに当たるので駄目だと思います。
各ページにはタグが付いてるので、googleなどで「site:ja.wikipedia.org "日本の漫画家"」というキーワードでの検索結果を経由して一覧を取得し、リンク先のページから「漫画家名」とその「読み方」を抜き出せば問題ないと思います。
うーん、好きな人なら編集なさるかと思ったのですが。
> 中途半端な状態で「自分はここまでやったから後は誰かやってね」と言われても、「じゃあオレが」と言ってくれる人はいないと思いますよ。
辞書の中身をチェックされたことと思いますが、機械的につけても 30-40 % は正しい読みになっていると思います。ひらがな/カタカナだけの作家さんもいらっしゃるので、mecab の性能以上に読み仮名の精度はあるはずです。anthy-dev では控えめに書きましたが、ざっくり出力内容には目を通していて、「詳しい/好きなひとなら短時間でチェックが終わる」と感じたから出しました。
実際のところは、作業の進捗度合がどうこうというよりも、「こういう辞書は個人的にはいらない」ということを表明した上で出したことが失礼だったし、反応しづらい状況にしてしまったなと考えています。とりあえず物は出したので個人的には満足しています。
> > anthy-dev に投げた方が良いような気がしますが、
> 言われると思いました (^^;
と言われるような気がしました。:-)
そう書くと冗談のようですが、やっぱりそうだろうなあと。
始まりは複合語の件だったわけですが、私の場合は、ML に書いたことについてブログで反応されているのを見つけてしまうと、ちょっとがっかりします。
うっかり見つけてしまうといけないので、vagus さんのブログはなるべくチェックしないようにします。
> n さん
なるほど。確かにそれなら問題なさそうですね。
わざわざありがとうございました。
> ut さん
> 私の場合は、ML に書いたことについてブログで反応されているのを見つけてしまうと、ちょっとがっかりします。
今回の場合、ut さんのあのメールは、あくまで自分が「以前からまとめておきたいと思っていながらほったらかして」たことを書くための"きっかけ"になっただけで、あのメールへの返信をここに書いたつもりはなかったんですが、「ML に書いたことについてブログで反応されている」と言われれば確かに「そうも見えるかな」と思うので、がっかりさせてしまったのならすみません。
> うっかり見つけてしまうといけないので、vagus さんのブログはなるべくチェックしないようにします。
こちらからお願いして見て頂いてたわけでもないですし、それはご随意に。
しかし、私に非があるにせよないにせよ(これは未だによく分かりません)、何だかんだで結局トータルで 7時間くらいかけて書いたのに、得られたものがこんな捨て台詞めいたものだけかと思ったら、心底がっかりというか何と言うか…。
今はただ全身脱力状態です。