全28件 (28件中 1-28件目)
1
今日は、いきなり本題のみなのだ。「はい」と「いいえ」は、はっきり言いましょうね、と子供のころに言われたことはないだろうか。私は小さいころから優柔不断で「はい」と「いいえ」がはっきりしないタイプかもしれない。考えれば考えるほど、「はい」と「いいえ」の境界が曖昧になってどちらだか分からなくなってしまうところがある。「お腹すいた?」「うーん・・・」。こういう人は肥満になりやすい(^^;;また、人の返事をきいても、「はい」が「いいえ」に思えたり、「いいえ」が「はい」に思えたりすることもある。人の返事は意外に複雑なのだ。だから、「はい」と「いいえ」を聞き分けるということは、実は難しいことなのかもしれない。「あなたは、花が好きですか?」「はい」味気ない会話だこと。とにかく、「はい」のバリエーションには、「ええ」とか、「あぁ」とか「うん」・・・とたくさんのバリエーションがあるので、これを人工無能にまず覚えさせる必要があるだろう。「私」や「あなた」のバリエーションと同じように、「はい」と「いいえ」にすべて標準化してしまう方式でまず、この単純パターンに対応することにしよう。ところで、これまであまり、文の末尾が「。」で終わっているかどうか気にかけないでやってきたが、形態素解析にかけるときには、ちゃんと「。」で文が終了しているかどうかを確認して、「。」で終わっていなかったら補完してやる処理をつけておかないと問題がおきるということに、今頃気づいた。いいえ。いいえ 感動詞,*,*,*,*,*,いいえ,イイエ,イーエ。 記号,句点,*,*,*,*,。,。,。いいえいい 動詞,自立,*,*,五段・ワ行促音便,連用形,いう,イイ,イイえ 動詞,非自立,*,*,一段,連用形,える,エ,エ「。」で終了していないと、へんな解析をしてくれる。「xxxと言いえる」とかの「いいえ」と解析されてしまっているのだろうか。まあ、これは、ちゃんと文を「。」で終わらせておけばいいので問題ないが、ちょっと心配なので別の文を解析させてみる。いいえといいました。いい 動詞,自立,*,*,五段・ワ行促音便,連用形,いう,イイ,イイえ 動詞,非自立,*,*,一段,連用形,える,エ,エと 助詞,格助詞,引用,*,*,*,と,ト,トいい 動詞,自立,*,*,五段・ワ行促音便,連用形,いう,イイ,イイまし 助動詞,*,*,*,特殊・マス,連用形,ます,マシ,マシた 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ。 記号,句点,*,*,*,*,。,。,。いいえ、といいました。いい 動詞,自立,*,*,五段・ワ行促音便,連用形,いう,イイ,イイえ 動詞,非自立,*,*,一段,連用形,える,エ,エ、 記号,読点,*,*,*,*,、,、,、と 助詞,格助詞,引用,*,*,*,と,ト,トいい 動詞,自立,*,*,五段・ワ行促音便,連用形,いう,イイ,イイまし 助動詞,*,*,*,特殊・マス,連用形,ます,マシ,マシた 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ。 記号,句点,*,*,*,*,。,。,。うーむ、思ったとおり、このあたりはあんまりうまく解析できないようだ。はいという。はい 感動詞,*,*,*,*,*,はい,ハイ,ハイと 助詞,格助詞,引用,*,*,*,と,ト,トいう 動詞,自立,*,*,五段・ワ行促音便,基本形,いう,イウ,イウ。 記号,句点,*,*,*,*,。,。,。「はい」だとうまく解析できているので、いいえに関してはちょっと、注意して解析結果も見ていくことにしよう。あぁ、それにしても「はい」とか「いいえ」は、「まあ、きれい」とか「やあ、げんきかい」とかの「まあ」とか「やあ」と同じように感動詞なのだな。感動詞は、活用のない自立語で、独立語以外になれないもので、感動、呼びかけ、応答、反問、掛け声、あいさつなどが、この感動詞に含まれるわけで、正しいのだが、感動してしまうんだな。つぎに、「あなたは、花が好きですか?」「うん。好きだよ」うん 感動詞,*,*,*,*,*,うん,ウン,ウン、 記号,読点,*,*,*,*,、,、,、好き 名詞,形容動詞語幹,*,*,*,*,好き,スキ,スキだ 助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダよ 助詞,終助詞,*,*,*,*,よ,ヨ,ヨ。 記号,句点,*,*,*,*,。,。,。「はい」「いいえ」だけでなく、相手の質問の形容動詞を繰り返すことによって、強調というか確認の発言が加わっている。まあ、こういうふうに同じ形容動詞が繰り返された場合は、素直にバッサリ削除してしまっていいかもしれない。「食べますか?」「食べます」「はい」と「いいえ」が省略されて、動詞が繰り返されることによって肯定される場合もあるのだな。当然、逆のパターンもある。「食べる?」「食べないよ」食べ 動詞,自立,*,*,一段,未然形,食べる,タベ,タベない 助動詞,*,*,*,特殊・ナイ,基本形,ない,ナイ,ナイよ 助詞,終助詞,*,*,*,*,よ,ヨ,ヨ。 記号,句点,*,*,*,*,。,。,。もうちょっと違うパターンを見てみると、「あなたは、花が好きですか?」「ええ。雛罌粟が好きです」ひなげしって、こんなに難しい字なのか。まあ、それはおいといて、花が好きかどうか聞かれただけなのに好きな花の名前まで答えるなよ、処理がめんどくさくなるじゃないか、とは思うものの、こういうパターンに対しても、ある程度なんとかしたいところだ。というわけで、次に続く。ちなみに、子供のときに「ありがとう」と「ごめんなさい」をちゃんといいなさいと教わったが、人工無能に「ありがとう」と「ごめんなさい」を言わせるにはどうしたらいいだろう。どういう文脈で言わせたらいいのだろうと、ふと思った。そりゃ、前の利用時刻を覚えて、会話のはじめに、「xxさん、今日もきてくれてありがとう」とか言わせるのは簡単だし、利用時間が短いのに「ばいばい」とか「さようなら」とか言われたら「話がつまらなかったですか。ごめんなさい」とか言わせるのは簡単なのだが、会話の中で文脈にあった「ありがとう」と「ごめんなさい」をどうするかということ。もうすこし言うと、「頭いいね」とか褒め言葉があったら「ありがとう」とかいうレベルではなくて。擬似感情というパラメータは使わない。理屈によってありがとうと言わせることはできるのか・・・。
2003.01.31
コメント(0)
IBM、人工知能に統合的アプローチという記事を読む。UIMA という新技術を使っているらしい。UIMA とは「Unstructured Information Management Architecture」の略で、XMLベースのデータ検索アーキテクチャらしいが、本質的なものなのかなー。XML ベースでデータのやり取りをしやすくすれば作りやすくなる部分もあるだろうが、それが人工知能の能力の本質に関わるようにも思えないし、基礎技術というより、実装論としてとらえた方がよいのかもしれない。まあ、データがとってきやすくなれば、賢い振る舞いをさせることもできるだろうが、やっぱり本質的に人工知能を発展させるようなものに思えない。Combination Hypothesis って、けっきょく複数の技術を統合して扱うってことなんだろうか。XML ベースにすることによって、人工知能の「ための」データから、人工知能「にも使える」データになることによって、量的な変化が質にも変化を与えるみたいな。『(人工知能の進歩には)おそらく文法的、統計的、高度な統計アプローチ、意味論を組み合わせることが必要だが、共通のアーキテクチャなしではこれは実現できない」とSpector氏。』(上記記事より引用) というのは、それはそうなんだろうけど、だから XML ベースにして人工知能が大躍進というは文脈的に楽観的過ぎるなぁ。ある意味、人工知能版の .NET 構想的というところかな。「共通のフレームワーク」ということに関しては、まあ、システム的な無駄を省くために、あるいは協調分散がやりやすいようにメリットが強調され、注目されるのは時代の流れなのだろうな。もう一度 UIMA にもどると「構造化されていない情報を管理するためのアーキテクチャ」つうことだな。やっぱりデータ構造とその管理のアーキテクチャなわけだ。人工知能そのものアーキテクチャというより。オートのミックコンピューティングとか eLizaとかの延長線上にある戦略の一環ととらえたらいいのかもしれないな。進化する自律型コンピューティング、グリッドにも必須 - 米IBM、日本IBM、“オートノミック・コンピュータ”に関する記者説明会を開催みたいな記事を見ても、だんだんと未来のイメージを明確にしたたかに作り上げてきているのが IBM だな。なんだか TRON という言葉が浮かんでくるような。さて、日本では TRON をどう扱ってまた祭り上げるかと考えている人も多いだろう。とりあえず TRON の日を作って、1日中 TRON の話題を24時間テレビのように連続する特番でもテレビ局がやるといいのだが(笑)。日本人は表面上の言葉に踊らされる人も多いから、ちゃんと構想自体の重要さを理解してあげられる人が少ないのが問題だろうな。これだけ社会もシステムも複雑になってしまうと、笑われたとしても、やっぱり構想をぶち上げることも必要なのだよな。ある程度枠組みがないと無駄が大きくなりすぎるし。話がずれたようだけど、まあ、あちらの人の戦略構想というのは、そういう広い範囲で一つのフレームワークを作り上げているんだから、それを語ればこうなるのは当たり前の話なのだ。でも、まとまりない文章だな(爆)
2003.01.30
コメント(0)
しばらく前に o3124a さんのページで紹介されていた「もういちど月へ RETURN TO THE MOONを久々に見てみた。やっぱりよくできているので、繰り返し見ても飽きない。NHK教育の番組でも見ているようなできばえで、何度も見られる。いいコンテンツだと思ったものは、忘れたころにまた見てみるといいかもしれない。こういう無料で見られる有料コンテンツだけ集めたリンク集や検索エンジンがあれば楽しいのにな。『千と千尋の神隠し』がテレビで放映されてすごい視聴率を記録したようだが、やっぱり何度も見られるような良質なコンテンツを作っていくということは大切なことだと思う。そして、それを大切にしていく姿勢も大切なことだと思う。消費されるコンテンツが多すぎるのだよな。マスメディアというものは、基本的にどれも新しいものをどんどんと消費しながら生き血を吸って生きているわけだし、多くのコンテンツがニュース化されて話題に上がることだけを目的にしたかのように生まれて死んでいくが、やっぱり、じっくりお金をかけて作られるコンテンツというものは大切だなと思う。しかし、『千と千尋の神隠し』が大ヒットするというのは、やっぱり、日本がいかに病んでいるかってことでもあるな・・・。○ 未知語についてもう少し (Python で人工無能)とりあえず、今日の話題の前に、日本語形態素解析器 MeCab のメーリングリスト(このページにリンクがある) の [Mecab 00027] で MeCab の作者、工藤氏が未知語(要するに辞書に載っていないもの)の処理について説明してくれていた。やっぱり MeCab を使うなら、ML を購読しておくといいことがある。でもって、もう少し未知語について考えることにした。MeCab の未知語処理では、単純にいえば文字種(ひらがな、カタカナ、漢字、数字、記号、・・・)によって単語の境界が決められていくということだが、そのあたりで、いろいろいじると何か面白いのかもしれない。1,999円1 未知語,*,*,*,*,*,*,*,*, 未知語,*,*,*,*,*,*,*,*999 未知語,*,*,*,*,*,*,*,*円 名詞,一般,*,*,*,*,円,エン,エンこの場合、「,」の文字種が違うので一まとまりになってくれないようだが、やっぱりつながってくれた方があとで扱いやすいし、製品名などの扱いにしても、つないでしまいたいパターンがたくさんある。ヒューリスティックなルールをどんどん入れていったら当然処理が重くなってしまうんだろうけど、手を入れてみたい気もする。うーむ、でも C++ はなぁ。とりあえず Python でルールを作っていろいろ検証してみる方向かな。で、未知語そのものの本質について考えてみる。言葉はどんどん増殖していくのだから、辞書をどんどんアップデートしていかなければ分からない言葉がどんどん増えてくるのは当然。固有名詞だってどんどん増える。そもそも、MeCab にしても、茶筌にしても、フリーで入手できるものは、辞書の登録数という点では、最初から限界があるので(ある程度限られた数のエントリしかない)、どうやって辞書登録を増やしていくかも考えないといけない。固有名詞に関しては、ものすごい不公平があって(笑)、有名な会社は登録されているけれど、有名ではない会社は当然、辞書に載っていないので正しく扱ってくれない。東急建設東急建設 名詞,固有名詞,組織,*,*,*,東急建設,トウキュウケンセツ,トーキュー大東亜建設大 接頭詞,名詞接続,*,*,*,*,大,ダイ,ダイ東亜 名詞,固有名詞,地域,一般,*,*,東亜,トウア,トーア建設 名詞,サ変接続,*,*,*,*,建設,ケンセツ,ケンセツこれが世の常というものだ。じゃあ、こういう不公平をどうやって解消していったらいいか。一つは地道に辞書登録することだろう。とりあえず会社名であれば、上場企業のリストだけでなく、店頭公開企業まで広く辞書に登録してやることかもしれない。ちなみに、MeCab の辞書だと「マイクロソフト」は載っていても、「オラクル」は載っていない。MeCab 0.72 で未知語処理が改良されるまでは「オ(未知語)/ラ(未知語)/ク(名詞)/ル(未知語)」などと解析されていたわけなのだ。未知語処理が入ったおかげでいちおう未知語の一単語として「オラクル」となったわけだが、「マイクロソフト」(固有名詞,組織)という扱いに比べると非常に低い扱いになっている(爆笑)。これが世の常というものだ。全部登録するの大変だし無駄も多いから、特定のキーワードにマッチして、xx建設だったら、その前も固有名詞とか、株式会社、有限会社、合資会社が前か後ろにつく未知語は固有名詞とか、やっぱりそういうヒューリスティックなルールもとりあえず人工無能側でつくるかな。とりあえず、大量にテキストを解析させて、未知語を拾い出してパターンを調べるのが先決か。また、分かち書きは一見正しくできていても意味上の解析誤りもある。カールを食べる。カール 名詞,固有名詞,人名,名,*,*,カール,カール,カールを 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ食べる 動詞,自立,*,*,一段,基本形,食べる,タベル,タベル。 記号,句点,*,*,*,*,。,。,。お菓子のカールを食べるつもりで、人間のカール(固有名詞,人名)さんを食べてしまうわけだ。ちょっとイジワルなやり方をしたが、人工無能で形態素解析結果の品詞を使うのであれば、未知語じゃないものでも、望んだ解析結果になるとは限らないということをやっぱり前提にしなければならないだろう。「~を食べる」という形で認識させるには、最低でも係り受け(どの単語がどの単語に掛かっているかを解析する)が必要となるんだろうが、単純な文であれば人工無能にそうした格フレーム([主体:人]が[対象:食物]を[動作:食べる])をもたせて、扱ってしまうことも考えるかな。人工無能があんまり賢くなっちゃいけないとは思うが、ある程度やらないと、やっぱり無能すぎるし。うーん、でもそういうことをしないでなんとかする方法もとってみたいな。自動学習に近い形でなんとかするか。なんにせよ、辞書は人工無能の世界観そのものなわけで、どうやって辞書をメンテナンスしていくかも考えないといけないということだな。別に、特定用途の辞書であれば、人名「カール」を辞書からわざと削除してしまってもいいわけだし。辞書っていうのは、追加していけば賢くなるだけでなく、削除することによっても賢くなるだろうし。最初から知らなければ迷わないことだってあるし、間違えることだってないのだから。特定分野に最適化した辞書を用意しておいて、文脈に応じて切り替えてみたり、そうして作った複数の辞書を使って複数回、形態素解析をしてその結果を使って何かしてもいいわけだし。そういう無駄ならしてもいい時代だろうし。
2003.01.29
コメント(1)
人間の感情を読み取る軍用ロボット、開発中(HotWired, Louise Knapp, 2003/01/15) について、「ロボットのセンサーは、心拍を記録するための心電図センサー、発汗などの小さな変化を捉える皮膚センサー、顎と眉の微細な筋肉の動きを検出する筋電計、動脈の収縮を計測する血圧計、体温計で構成されている。」とあるが、言葉ではなく、こうした体の発する言語を元に反応するロボットも確かに面白い。ちょっとオ下劣になるが、軍事よりも究極のダッチワイフを作るという方向で進むと面白いかもしれない。意思決定にかかわる部分よりも、むしろ快感という一点に集中した方が研究もしやすいだろうし。ここの感情を持つロボット開発のようなものを見ていて、やっぱり、こういう形のロボットが社会に溶け込んでいくのは欧米に比べて日本が早いだろうと思う。最低10年ぐらいは効果な娯楽といった感じだろうが、この分野と警備システムというのは研究上、両輪になっているところがあるんだろうな。あとは、自動車産業とロボットか。ロボット産業は、22世紀の大きな産業になるのは間違いないだろう。未知語をどうする (Python で人工無能)日本語形態素解析器の MeCab の新バージョンに関しては、若干不具合があったようで新しいもの(0.73)が出ていた。まあ、ここではDLL を使ってというのはまだ先になりそうだし影響もないだろうからスキップしちゃおう。で、未知語を見ていてよくなったなと思うのは次のようなものだ。基本的に辞書に入っていないカタカナはギタギタ状態だったので、そういうものは全部よくなっている。人工無能の形態素解析はこのくらいやってくれると嬉しい。あとは、人工無能側で MeCab の辞書登録候補を会話から出してやるようなものを作ればいいかなという気になってくる。たとえば、「メーリングリストサーバ」であれば、「メーリングリスト」と「サーバ」がそれぞれ単独で会話の中に出てくるようであれば、個別に登録してやろうとかいった具合。品詞は面倒だから名詞/固有名詞かサ変名詞にでもしてしまえばいいだろう。会話をすべて保存しておいて、その中で適当に類推する程度でも、まあ、人工無能なら許されるし。新: デジカメ 未知語,*,*,*,*,*,*,*,*古:デ 助詞,格助詞,一般,*,*,*,デ,デ,デ ジカ 名詞,一般,*,*,*,*,ジカ,ジカ,ジカ メ 未知語,*,*,*,*,*,*,*,*新:シンコイワミナミ 未知語,*,*,*,*,*,*,*,*旧:シン 名詞,固有名詞,人名,姓,*,*,シン,シン,シン コイ 名詞,一般,*,*,*,*,コイ,コイ,コイ ワ 助詞,終助詞,*,*,*,*,ワ,ワ,ワ ミナミ 名詞,固有名詞,組織,*,*,*,ミナミ,ミナミ,ミナミ新:メーリングリストサーバ 未知語,*,*,*,*,*,*,*,*旧:メ 未知語,*,*,*,*,*,*,*,* ー 未知語,*,*,*,*,*,*,*,* リング 名詞,一般,*,*,*,*,リング,リング,リング リスト 名詞,一般,*,*,*,*,リスト,リスト,リスト サーバ 名詞,一般,*,*,*,*,サーバ,サーバ,サーバ新:ツッコミ 未知語,*,*,*,*,*,*,*,* ツ 未知語,*,*,*,*,*,*,*,* ッ 未知語,*,*,*,*,*,*,*,* コ 未知語,*,*,*,*,*,*,*,* ミ 未知語,*,*,*,*,*,*,*,*新:WikiWiki 未知語,*,*,*,*,*,*,*,* W 記号,アルファベット,*,*,*,*,W,ダブリュー,ダブリュー i 記号,アルファベット,*,*,*,*,i,アイ,アイ k 記号,アルファベット,*,*,*,*,k,ケイ,ケイ i 記号,アルファベット,*,*,*,*,i,アイ,アイ W 記号,アルファベット,*,*,*,*,W,ダブリュー,ダブリュー i 記号,アルファベット,*,*,*,*,i,アイ,アイ k 記号,アルファベット,*,*,*,*,k,ケイ,ケイ i 記号,アルファベット,*,*,*,*,i,アイ,アイまあ、あと例は2Mバイトのテキストをかけるだけでも、凄い量があるのでかなりの改善といえるだろう。微妙だと思うのが記号の扱い。これはくっつけない方がいいのかなぁという気がしないでもないのだが、新: )、 未知語,*,*,*,*,*,*,*,*旧: ) 未知語,*,*,*,*,*,*,*,* 、 記号,読点,*,*,*,*,、,、,、こういうものを見ると、旧:わーーーーい。 わ 助詞,終助詞,*,*,*,*,わ,ワ,ワ ー 未知語,*,*,*,*,*,*,*,* ー 未知語,*,*,*,*,*,*,*,* ー 未知語,*,*,*,*,*,*,*,* ー 未知語,*,*,*,*,*,*,*,* い 動詞,自立,*,*,一段,連用形,いる,イ,イ 。 記号,句点,*,*,*,*,。,。,。に比べると、新:わーーーい。 わ 助詞,終助詞,*,*,*,*,わ,ワ,ワ ーーー 未知語,*,*,*,*,*,*,*,* い 動詞,自立,*,*,一段,連用形,いる,イ,イこの方が、扱いやすい。連続したー~などはバッサリ削除してしまって、感情を示すフラグをつけておくとかできそうな感じもする。「xxだ」というときと「だよーーーん」というときは明らかに心理背景が違うのだから別に将来的には扱えるとかわいい人工無能になりそうだ。メーリングリストなどを対象に解析する場合なども、無駄な記号(笑)を取り除くのに若干処理が少なくなるし。うーんでも句読点に関しては、そのものが連続していない限りは単独で取り扱って欲しい気もするな。なんにせよ、形態素解析側で未知語として扱われているものと、人工無能側で何らかの知識を持つ単語がクロスしたときの取り扱いなども考えておくとおもしろいかもしれない。ほんとうは、単語単位で簡単にテンポラリに形態素辞書に追加できるようであれば、さらに面白いだろうが、とりあえず、学習情報を蓄積して、一定度溜まったらどうこうするとかいう方面で何か考えてみるかな。形態素解析レベルの未知語と人工無能の未知語が必ずしも一致するわけではないし、何かできそうだな。あと、英数記号の類かな。形態素解析ではこの程度にしておいた方がいいかもしれないが、人工無能側では、まとめてしまうようなことをした方が扱いが楽になる。EBN-3032EBN 未知語,*,*,*,*,*,*,*,*- 未知語,*,*,*,*,*,*,*,*3032 未知語,*,*,*,*,*,*,*,*PC9800PC 未知語,*,*,*,*,*,*,*,*9800 未知語,*,*,*,*,*,*,*,*ISBN-38920-43848-43ISBN 未知語,*,*,*,*,*,*,*,*- 未知語,*,*,*,*,*,*,*,*38920 未知語,*,*,*,*,*,*,*,*- 未知語,*,*,*,*,*,*,*,*43848 未知語,*,*,*,*,*,*,*,*- 未知語,*,*,*,*,*,*,*,*43 未知語,*,*,*,*,*,*,*,*EOSあと、人間の目からすると同じものが、微妙に違うのだな・・・。ふと思うに数詞という概念がないのか。1999年1999 未知語,*,*,*,*,*,*,*,*年 名詞,一般,*,*,*,*,年,トシ,トシ1999年1 名詞,数,*,*,*,*,1,イチ,イチ9 名詞,数,*,*,*,*,9,キュウ,キュー9 名詞,数,*,*,*,*,9,キュウ,キュー9 名詞,数,*,*,*,*,9,キュウ,キュー年 名詞,接尾,助数詞,*,*,*,年,ネン,ネン1月2日1月 名詞,副詞可能,*,*,*,*,1月,イチガツ,イチガツ2 名詞,数,*,*,*,*,2,ニ,ニ日 名詞,接尾,助数詞,*,*,*,日,ニチ,ニチ1月2日1 未知語,*,*,*,*,*,*,*,*月 名詞,一般,*,*,*,*,月,ツキ,ツキ2 未知語,*,*,*,*,*,*,*,*日 名詞,接尾,一般,*,*,*,日,ビ,ビちなみに、JUMAN を使ってみると、次のようになるから、JUMAN の場合全角数字にしておけば、ちゃんと数詞になってくれるので気にしていなかったが MeCab はちょっと、ここ負けてる。1月2日1 (いち) 1 数詞月 (つき) 月 名詞性名詞助数2 (に) 2 数詞日 (にち) 日 名詞性名詞助数1999年1999 (いちきゅうき1999 数詞年 (ねん) 年 名詞性名詞助数1999年1999 (1999) 1999 その他年 (ねん) 年 普通名詞1月2日1 (1) 1 その他月 (げつ) 月 普通名詞2 (2) 2 その他日 (にち) 日 普通名詞あれあれと思って、茶筌を見てみると、1999年1 イチ 1 名詞-数9 キュウ 9 名詞-数9 キュウ 9 名詞-数9 キュウ 9 名詞-数年 ネン 年 名詞-接尾-助数詞1999年1 1 1 未知語9 9 9 未知語9 9 9 未知語9 9 9 未知語年 トシ 年 名詞-一般1月2日1月 イチガツ 1月 名詞-副詞可能2 ニ 2 名詞-数日 ニチ 日 名詞-接尾-助数詞1月2日1 1 1 未知語月 ツキ 月 名詞-一般2 2 2 未知語日 ビ 日 名詞-接尾-一般うーん、めちゃくちゃ中途半端。全角半角の扱いは入力側でんとかせよというポリシーにすればいいとしても、うーん、このへんなんだかなーと思わんでもない・・・。
2003.01.28
コメント(0)
どこかに無くしたと思ったメモが出てきたので、昨日分を書いたばかりだけど、今日の分も入れてしまおっと。お、MeCab の 0.72 が出ている。「未知語処理ルーチンが少しまともになった」らしい。さっそく、感謝して使わせていただきましょう。ちなみに昨日の日記でちょっと書いた cocab との merge は次のバージョンと。楽しみ楽しみ。ちなみに、ちょっと使ってみたが、カタカナの未知語の扱いがすごくよくなった。記号については、ちょっと判断に迷うところがあるが、口語ベースの文やメールを扱う場合だと、まあ基本的に better なのだろーーーーーーう。うぁーーー、これでなくちゃという感じ。明日のネタができた~~~~(笑)。内山将夫,井佐原均.(2002) 日英新聞記事の対応付けと精度評価.情報処理学会研究報告, 2002-NL-151, pp.15--22.を読んだ。しかし、いかんせん、The Dialy Yomiuri なんて一般人の手出しできないようなものを使った研究は意味がないのだ(笑)。で、この内山将夫氏の並べる会というページにある再配布可能な訳文と原文の文対応付けは面白いな。プロジェクト杉田玄白正の成果の原文と訳文を対応付けをしているわけか。ヴェブレン、ソースタイン『所有権の起源』、レイモンド、エリック・S 『ハッカーになろう』、ロンドン、ジャック『火を起こす』、ワイルド、オスカー 『幸福の王子』 (html/data)、ワイルド、オスカー 『わがままな大男』が扱われている。こういものの量が増えてくると面白いことになってくる。こういうことをする人には、最大の賛辞を送りたい。あぁ、でも所詮、文対応付けソフトウェアがEDR日英対訳辞書とEDR英日対訳辞書とを必要とするのだよな・・・。結局のところ EDR - 日本電子化辞書研究所の辞書がネックになって自然言語処理は素人が手を出すものではないということになってしまうのだ。IPALの辞書だと語彙数がたかが知れているし、EDR の辞書が欲しい。○ 過分割についてちょっと考える (Python で人工無能)形態素解析結果から過分割を検出する統計尺度(pdf) も読んでみる。形態素解析の精度が97%~99%(Fuchi and Takagi 1998) ぐらいになってしまうと、人手で誤りを検出するのは大変だからプログラム的にやってしまおうということか。ふーん、実験結果で茶筌の過分割は1.5%以下か。でも、けっこうやっぱり多いな。一般的なものだと未知語の数も辞書を増強しないと増えるわけだし。過分割(「今日/の/金/相場/は」が「今日/の/金/相/場/は」になってしまうようなもの)と分割不足(「ユニックスワークステーション」が「ユニックスワークステーション」)、語境界交差型(「病気/が/まん延」を「病気/がまん/延」になってしまうようなもの)とに分けられると。語境界交差型は、「が/まん延」の「が」でまず切らなければいけないところを切らずに「がまん」としてしまっている分割不足と、「まん延」と一つにつなげなければいけないところで「まん/延」余計に分割してしまっているということか。東南アジアツアーを((東南)(アジアツアー))だと誤りで(((東南) アジア) ツアー)だと正解(東南-アジアツアーではなく、東南アジア-ツアー)とするのは、一般人の感覚にもマッチしているな。まあ認知的にはヨーロッパツアー、東ヨーロッパツーア、西ヨーロッパツアー、エジプトツアー・・・、と見ていくと、アジアツアー+東南[アジア]という枠組みになってるんだろうけど。末尾の誤りの例をざっくりと眺めてみる。人工無能の方では、まず助詞に関わるところをまず集中的にチェックしたらいいかな。助詞を軸にしてみていくような。「結果」が「結(普通名詞)/果(普通名詞)」とかいうこともあるのか・・・。普通名詞/普通名詞もなにか適当にやった方がいいかも。固有名詞+未知語なら、単純につないでしまうとか、「虹/を/描/い/た/旗/を/揚/げ」「高らか/に/歌/う」のパターンも実感として多そうだからエイやでやって、フィードバックをかけていくようなやり方にするかな。なんにせよ、形態素解析として正しくなくても、置き換えなどやったときに問題ない形になっていればいいのだから、適当にやりゃいいや。うーん、やっぱり、動詞と助詞、それに語尾、接頭.接辞など、名詞/形容詞/形容動詞以外のところを練っていった方が面白いものが作れそうだ。
2003.01.27
コメント(0)
トーくんというのが Nifty にあった。これ、Harbot に対抗して作ったのかなー。Harbot は無料だけど、トーくんは売り物というところがちょっと違うし、コンセプトも育てゲーム的な要素とランキングによる競争原理を取り入れ、また会話の要素が強いというところが違うんだけど。まあ、Harbot の二番煎じなわけだからそのくらいやらないとね。「はい」と「いいえ」の教師信号はやっぱりボタン使ってるし。1月29日からランキングが発表されるようになるようだ。月に200円だから、ここにも置いてみようかな。うーむ、かって設置したら、私が誰か Nifty の人にばれるな。まあバレたって所詮 anonymous なわけだから、特に問題ないといえばないんだけど。ほんとうの anonymous にしておくのは、サービスを利用しようとするとけっこう難しいもんだ。で、せっかく入れたから傀儡師研究室にも遊びにいってくださいませ。異分子(仮) - dissident - チョムスキー・アーカイヴ日本語版はなかなか面白い。言語学者として有名なノーム・チョムスキーだが、最近ではむしろ、アメリカの外交政策を批判するような政治的な発言をする著名人としての方が注目度が高いか。ここのサイトは面白い視点を提供してくれるので、ときどき眺めてみると面白いだろう。インターネットで一番面白いのは、やはり、大手メディアが封殺してしまうようなものを、どんどん流し続けるような人々への影響だ。サイトを立ち上げて、そこに主義主張を載せるだけで、書籍にして一般書店に並べるより、もっと大きな潜在的読者を得ることができるのだから。書籍にして販売すれば、確かにお金にはなるかもしれない。しかし、それと引き換えに言論の自由を失うのであれば、無料でできる限り多くの人に主義主張を知ってもらった方がはるかに得であると考えて行動する人も多いということだ。この部分については、地道にどんどんと草の根レベルで広がっていき、やっぱり、やがては世界を変えていくような動きにつながっていくのは間違いないだろう。ただし、すごーく長い時間がかかる。長い時間がかかったとしても変わっていくことに意義があるのだ。まあ、こうした動きとは正反対に、何にも考えない人の数も増えているのもまた確かなのだけど。英語のわかち書きについて、cocabという一般英語 + ゲノム文書のための解析器が公開される。理研の山本氏という人なのか。ソースはまだ公開されていなかったが、将来 MeCab から使えるなら面白そう。Python で使える英語用の Tagger には、MontyTaggerというのがあるらしいので、英語はそれでも使おうかと思っていたが、ちと考えてみる必要があるか。え、そりゃいまどきの人工無能はバイリンガルでしょ(笑)。で、このあといろいろ調べて書き込んだファイルをどっかにやってしまった。はぁ~。以上
2003.01.26
コメント(0)
MagicDraw UML をダウンロードしたことがあるが、そのリトアニアにある会社から EVSD (Eternity Virtual Secure Drive) の宣伝メールが来た。まあ、安全にバックアップをインターネットを使ってデータセンターに保存するような商品。JAVA クライアントでアクセスするみたい。日本語のファイルは大丈夫だろうか。ASP モデルだと $19.95 だとか。この会社自体は ASP 事業というより、ISP に対してプログラムを売りたいのかな。UML のツールなんて作ってる会社だし。まあ、この手のサービスは価格がそこそこで安心感のあるやり方をすれば、そこそこ成り立つだろう。rsync (*nix のコマンド) を使えばいいか。で、その場合、どこへというのがあるのだよな(笑)。ファイルの暗号化まではこれだとダメだから、いったん暗号化しないといけないか(サーバ上で暗号化されていないと)。で、複数の友人とかなどで互助会的にサーバを運用するとかすればそこそこ低コストで使えるかな。とりあえずデモを使ってみる。テキサスにあるデータセンターにつながる。転送する前にまずローカルで暗号化して圧縮してるのかな。1MB 分のテキストファイルだが結構時間がかかった。転送はさらに時間がかかる。うーん、最初はそういうことなのだろうな。で、次回からは差分だけを送るような形になって時間は短縮されると。まあ、こういうのは、よっぽど大事なデータだけだな。で、よっぽど大事なデータを人に預けるというのも信頼関係の話になるので、それはそれで心理的に抵抗感がある話なのだよな。まあ、35日間使えるらしい。35MB だとちょっと少ない(このくらいの量ならそこそこ商売として運用コスト的にも成り立つか)。GB単位で欲しい。料金を眺めてみると 1GB までなら、$24.95 (基本料金) + $14.95 = $ 39.9 か。うーん、微妙だけどちょっと高いかな。2000円台にはなってほしいところ。日本語ファイル名は文字化けするし。それに月1万円仮に払えば数十ギガバイトのHDD 月のサーバを単体で借りられるからやり放題だし。5万も出せばマシン1台買えちゃうから。CD-R に焼いたっていいし。そう考えると成り立ちそうでなかなか成り立たない商売なのだよな。○ たかが Eliza されど Eliza(2) (Python で人工無能)延び延びになっていた Eliza の中身をいよいよ見始める。Eliza と私との出会いは、かれこれ 10 年以上前だろうか。最初に見たのは BASIC で書かれたものだった。これを当時の国民機 NEC PC98 シリーズの互換機の EPSON で動かしたのが最初だ。LISP 版もその後見たかな。で、とにかく見てみると、Python で書かれたものは、はるかに分かりやすい。あ、正規表現使っているから簡単になったのか。ふーん。eliza をクラスとして定義している。つまり、まあ、Eliza というのはどういうものになるのだよという設計図が最初に書かれているわけだ。この設計図あるいは遺伝子とでもいったらいいのだろうか、これを元に実際に動かすときに Eliza の実体を作ってお話するわけ(我ながら滅茶苦茶ラフな解説である)。LISP 版であれば、この設計図自体を変更していくことができるので Eliza の進化が可能といえば可能だ。遺伝子にたとえたのは、この実体を作り出す設計図自体を自動的に書き換えていくプログラムを作れば、さらに自動的に進化していける。そして、突然変異が発生したり、実体がまともに動かずにすぐに死んでいったりなどすることを念頭においている。が、Python 版ではきっちりとした設計図なので、これに従ったものしか現れてこない。ゆえに、人工知能であれば LISP はやっぱり便利なのだなーと改めて感じる。だが、人工無能であるので、そんなことは心配する必要がないのだ。だいたい、高度なプログラムはそんなに簡単に作れるものではないし、逆に理念だけが勝ったもの作ってもしょうがないので、動くことの方が大切なのだ。と能書きばかり長い(笑)。さすがにここで終わってはなんなので、もう少し続ける。まず、クラスつまり設計図というか雛形が実体になるときには、__init__ という関数が呼ばれる。この中でデータを Eliza が読み込んで使いやすい形にしている。たとえば、次のように会話の元が書かれている。 [r’I need (.*)’, [ "Why do you need %1?", "Would it really help you to get %1?", "Are you sure you need %1?"]],正規表現を使って、「私はxxが欲しい」(I need) と来た場合には3つのパターンを用意する。つまり、「どうしてxxが欲しいの?」"Why do you need %1? と(省略)、で、実際には %1 の部分にマッチした文字を当てはめていくということになるわけだ。英語の場合、これがやりやすいのは、例えば、"I need a friend who ....." と友人(friend)を修飾するようなものが長々ときても、それをそのまま持ってきても、ちゃんと文が成り立つ可能性が高いことだ。日本語だったらどうだろう。「=私は疲れているので、おとなしい友人=が=欲しい」と日本語であった場合には、「ほんとうに、=あなたは疲れているのでおとなしい友人=が=欲しいのですか」。あれ、一応できるないことはないね(笑)。まあいいや。とにかく、Eliza の場合、入力に対する応えがうまく出来ていて、誘導しやすいようになっているのが特徴。あとは、英語の特徴で、けっこうラフなやり方をしても、うまくいってしまうのだ。まあ、日本語の場合でも動詞を軸に駆動にすればできないことはないのだなー。なのに名詞駆動の人工無能が多いのはなぜ・・・。「欲しいのです」、「欲しいのだよ」、「欲しいんです」。語尾に変化をもたせるとすぐに破綻してしまうのだよな。つまり、マッチさせるのが難しい。形態素解析を使おうとおもったのは、こういう語尾の変化を吸収させてしまうためなのであった。あとは、「欲しいなんてことはない」。こういうちょっとねじくれたものも対応できないことはないから。たとえば、否定形が後ろに来ていたら、対象外にするとか。そんなわけで、ほんとうは、詳細に見ていくと日本語だと英語に比べて言語の特性上、うまくマッチしないパターンがあるということを示せるのだろうが面倒なのでやめておく。とにかく、この会話のネタを仕込むことが最初に行われるわけだ。正規表現を高速で行えるようにコンパイルして(コンピュータが理解しやすい形式に変換して、応対用のデータを覚えこむ。最初に学習してしまうわけだ。で、あとは、設計図の中でどんなことをするか、行動様式を決めてやる。この行動様式には、変換(translate) と応答(respond)がある。非常に単純なのだ。つまり、何かを聞いたら、それに対して何らかの変換を加えてやって、応答文を返す。ただそれだけ。変換(transform) では、入力された文をまずスペースで分割する。日本語なら形態素解析を行って単語ごとに分かちがきしてやるが、英語の場合スペースで切るだけだから1行で済んでしまうのだ。で、最初に覚えこんだ正規表現パターンとは別に用意してある単語の置き換え用の辞書を参照しする。つまり正規表現とは別に単語辞書が用意されているのだ。ここでは、I am ... の I を You に置き換えたり、am を are に置き換え、また、you’ve を you have に置き換えるために使う。つまり、I と You の変換のための小さな辞書から、キーの部分だけを抜き出してやる。つまり I, am, you’ve というリストができる。そうしたら、入力された文の頭から置き換えリストを参照して、置き換える必要がある単語は置き換えてやる。で、それが終わったら、もう一度、ばらばらにした単語をつなぎなおして一つの文字列にして返す。応答(response) では、初期化のときにリストを作ったパッチパターンと回答集を参照して、入力文からこのマッチパターンに合うものを拾い出す。で、それに対応する回答集の中からランダムに例文を引っ張りだす。%1 のように穴埋めしなければいけない部分が例文の中にあれば、そこに適切な要素を埋め込む。で、疑問文のクエスチョンマークなど調整して、文字列を返して終わり。実際のプログラムでは、これを繰り返し呼び出して会話を行うわけだ。なんで、その程度にも関わらずもっともらしい動きになるか。それは、登録してある例文のウマさと、英語自体の特性によるものだろう。日本語ではとてもこれと等価のプログラムを同じような行数で書くことはできないのだ。だから、たかが Eliza されど Eliza なのだ。これの元となったプログラムは、1966年に作られたものであることに注意! 要するにアメリカではその時代にすでに人工無能の走りが出ていたわけで、現状ではもっと高度なものになっているということだ。なんて書くと、次は Alice でも見なきゃいけないのかな。その前に、やっぱり、プログラムの方をすすめないとな。今日の教訓。動詞駆動になるように注意せよ。日本語の語尾の扱いに注意せよ。それは日本語の文生成でもあるわけだが、ゆえに面倒なところもあるので、どこで切り上げるかも考えておこう。あぁ、そういえば、「はい」と「いいえ」扱いについても、早めに入れないといけないな。日本語と英語とでは、やっぱり英語の方が楽なのだよなー。とにかく、今日はここまで。
2003.01.24
コメント(0)
TsumWiki という Wiki の一種が公開されたようなので、そのソースを眺めてみる。Zope の ZServer を使って、データは Berkeley DB に保存するというもの。コメントをつけながら見ているが結構参考になる。人工無能もこれに組み込んじゃうかな・・・。もちろん、会話は全部 DB に記録されるのだ。しばらくの間はデスクトップを中心にしていこうかと思っているのだが、ウェブからもそのうち人工無能にアクセスできるようにしたいと思っている。で、そうしたときに、どういう形態で動かしたらいいかなども、ちっと考えてみるのだ。Python のウェブサーバといえば、Zope という手もあるのだが、やっぱり Zope はパブリッシング中心と考えた方がよくて、インタラクティブな用途に使うには適していない。TsumWiki も Zope の一部の ZServer というオブジェクト指向のサーバを使っているが、基本的に Python のオブジェクトを永続的にシームレスに使えるのが便利なので使っているのだろう。でも、ページのパブリッシュについては Zope の部品は使っていない。Zope っていうのは、けっこうそうやって部品としても使えるものなのだな。Standalone ZODB といって Zope とは切り離された状態で使うことができるオブジェクト指向のデータベースもあるし(もともと Zope のデータベース)、Zope3 という次世代のサーバでは、もっと部品化が進むらしい。そしたら、また考えればいいのだ。TsumWiki は、個人のサイトで使っているものを好意的に GPL で公開されたものなのだが、これだと比較的簡単に改造もできるし、これ以上、公開がなかったとしてもいじれそうな感じなのでしばらくこれを使ってみるかという気になっている。まあ、これをいじり倒せば自分でも新しいのが作れるようになっているだろうし。まあ、これだとウェブページ上でのちゃっとという感じになるかな。ただそういうものじゃなくて、もっとサーバと個人が蜜に他者を介在させないような形で連携させるには、もっとちがったものが必要かもしれない。Twistedというサーバは面白そうな感じだ。こういうものの方がサービスレベルで動かすようなものには適しているかもしれない。Python ってけっこう面白い動きがあるのだよな。いまいちマイナーだけど。PEAK (Python Enterprise Application Kitも方向は人工無能とは関係ないけどおもしろそうだし。まあ、探してみるといくらでも楽しそうなものがある。日本でなんでもっと Python が流行んないのか不思議でしょうがない。簡単なところでは、Spyceという ASP や JSP みたいな感じで Python が使えるものもあるし。まあ、セキュリティを気にせずにバンバン作ったものをウェブから使えるようにしたければ、このぐらい簡単なものの方がいいかもしれないけど、ウェブサーバ自体が統合されていた方が楽でいいかな。あとソースがすごく見づらいからやっぱり Spyce はダメだな。IPythonを使えば、対話的なシェルとして、自然言語でいろいろコマンドまで動かしてしまうような用途にはよさそうな感じだ。ふーん、それにしても IPython マニュアル見てもいろいろ便利に使えそうだな。MEMS Exchange の Quixoteなんてものもあるのか。Spyce なんかより、かなり高度な感じだな。こっちの方が Spyce よりソースも見やすくていい。XML-RPC のサービスなんかもやりやすいようだ。CherryPyは名前がかわいい。中身はけっこうちゃんとした感じでよさそう。このぐらいが一番使い勝手はいいのかな。Snakeletなんていうのもあるのか。これは教育用か。小さめだから読んでみようかな。PYRO (PYthon Remote Objects.) というのは、パッと見た目で惹かれるものがあるかな。SOAP vs CRBAのあたりもそのうちチェックしよう。ここから Webwareというのにリンクが張られている。日本人でも PyPageなんていうものを作っている人がいるんだな。BeOS でも動くとか書かれているところがマニアだなぁ。しかし、ほんといろいろあるな。うーん、やっぱりとりあえずTwisted あたりからかなー。まあ、そんなこんだで今日は終わり。
2003.01.23
コメント(0)
小岩井ヨーグルトが気に入って、また買ってきてしまった。しばらくヨーグルトはこれかな。○ たかが Eliza されど Eliza(1) (Python で人工無能)Eliza の話をするといいつつ、先延ばしにしてきたが、というかあまりに人工無能の根本的なところなので、逆についついないがしろにしてきたわけだが、2回に分けて Eliza について扱うことにする。Eliza は、Joe Weizenbaum という MIT の先生が 1966年に作った人工無能の祖先ともいえる存在。とても有名なのだが、日本でこれを動かしているサイトはほとんどないだろう。というのも、英語しか話せないからだ。あたりまえといえばあたりまえ。Eliza はすごく単純に見えるので、これにハマった女性がいるという話が信じられない人もいるかもしれない。もし、そうだとしたら、それは、あなたに想像力がないか、それとも英語力がないかのどちらかだろう。Eliza は英語力と根気さえあれば、延々と自分で独り言を繰り返したり、日記を書いたりするのと同じ感じで話し続けることができるはずだ。私にはできん(笑)で、とりあえず、Python 版を探してみると、Joe Strout氏の therapist.pyが見つかったが、もう少し探してみると、Jez UK Ltd - eliza.py - ELIZA in Pythonが見つかった。中身はほとんど同じで、前者を若干書き直してモジュールとし、セットアップファイルをつけたものだった。ということで後者を明日は見てみることにする。とりあえず、ダウンロードしたファイルを解凍して、解凍したファイルがあるディレクトリに DOS プロンプトで移動して、python setup.py install とすればインストールできるだろうが、面倒なので、その場で eliza.py をダブルクリックすれば Eliza が起動する。黒い画面が見にくければ、IDLE にいったん eliza.py を読み込ませて Ctrl-F5 で動かしてもいい。このモジュール版の何がいいかといえば、上にあるようにセットアップしておけば、次のようにして、簡単に Eliza を他のプログラムから呼び出せるようになるところ。今作っているものも、そのうち、こういう形で使えるようにしよう。import elizatherapist = eliza.eliza()while(some_condition) # どこから入力を得る reply = eliza.respond(input) # どこかに返答を送るインストールが面倒だけど試したいなら、Java 版の Elizaなどがオンラインで試すことができるのでいってみるといい。ちょっと変わったものがいいなら、Ask Jesusとかでもいいだろう。パロディ版ね。"Please go on, my Child." なんて言うのだ。基本のプログラムはいっしょみたい。このサイトKing James Bible Search なんてあるから、そのうち、聖書の中から何か返してくれるようになるかもしれない。なお、オリジナルの Eliza については、Weizenbaum, Joseph (1966), ELIZA - A computer program for the study of natural language communication between man and machine, Communications of the ACM 9:36-45. や、ELIZA--A Computer Program For the Study of Natural Language Communication Between Man and Machine、あるいは、J. Weizenbaum, ELIZA - A Computer Program For the Study of Natural Language Communication Between Man And Machine Communications of the ACM, Vol 9, No 1, January 1966 (pdf) を見るといいだろう。
2003.01.21
コメント(0)
『虚栄のかがり火』(THE BONFIRE OF THE VANITIES)を見た。面白かった。トム・ハンクスやブルース・ウィリスってなんかいいのだ。映画自体、エンターテイメント作品として適度に楽しめたが、サイテー映画に送られるとかいうゴールデン・ラズベリー賞(Golden Raspberry Award)にノミネートされた作品のようだ。一流の俳優を使って一流の監督がこんな安っぽいもの作ってという感じなのかな。それはそれで面白いと思うんだけどな。名作とはいえないのは確かだけど。○ あなたと私の言い換え版 (Python で人工無能)1月13日のプログラムをまだ出していなかったので、傀儡師研究室のダウンロードページで参照できるようにしておいた。このバージョンでは、「あなた」と「私」を入れ替えて、前と同じにランダムな言葉をつけて返すものだが、カタカナで入力を返すのはやめた。で、次のような感じの会話?ができるようになった。>>> あなたの名前は? 傀儡師傀儡師 > 私は元気だ。あなたは元気だ ということですね。平凡 ですね。傀儡師> お前はバカだ。私はバカだ ということですね。平凡 ですね。傀儡師> あなたはどうしてバカなのか。私はどうしてバカなのか ということですね。純粋 ですね。傀儡師> そちは何者じゃ。私は何者じゃ ということですね。平和 ですね。傀儡師> 私は貴方の目が好きだ。あなたは私の目が好きだ ということですね。悲壮 ですね。このレベルだと、まだ、わざわざ形態素解析を通すまでもないという話もあるが、「私立高校に行く。」と入力しても、文字列の単純置換ではないので「あなた立高校」というようなバカな変換が起きないのが、すでにメリットとして感じられる。「私たち」「あなたたち」などは、次のように解析されるので、「私たち」は「あなたたち」に、「あなたたち」は「わたしたち」にそれぞれうまいこと変換される。あなたたちあなた 名詞,代名詞,一般,*,*,*,あなた,アナタ,アナタたち 名詞,接尾,一般,*,*,*,たち,タチ,タチEOS私たち私 名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシたち 名詞,接尾,一般,*,*,*,たち,タチ,タチEOSなお、かなりまだ手抜きをしているので、入力文の末尾は句読点で終わらせておく必要がある。文をつなげるために、単純に最後の半角2文字分を削除しているので、句読点を入れないで文を入力すると最後の文字が消えてしまう。また、品詞のチェックをしていない。しばらくの間、このままぐちゃぐちゃといじって、落ち着いたところで、形態素解析もライブラリを使うようにして、クラスを使ったオブジェクト指向的なものも取り入れていく予定。でも、予定は未定は相変わらずなのだ。
2003.01.20
コメント(0)
今日はエドガー・アラン・ポー、森鴎外、ロバート・プラント、宇多田ヒカルなどの誕生日だったのだな(以上、敬称略)。知識を深める 雑学研究のページを時々見に行くのだが(右側にリンクもあり)、ときどきボーっと眺めて考え事をすると楽しいのだ。あぁ、そういえば醍醐天皇(885/01/18生れ)、どこか気になる存在。菅原道真関連で気になるのかな。それとも、藤原氏関連で気になるのかな。うーん、なんで印象に残ったか忘れたので、よけいにひっかかりを感じる人なのだな。うーん、なんでだろう。やっぱり、梅原猛のなんだっけ、題名忘れた(最近、ほんとに物忘れがひどい)、菅原道真の話を扱った本から受けた印象が強いんだろうか。『隠された十字架』あたりかな。『隠された十字架』といえば聖徳太子、聖徳太子といえば、山岸涼子の「日出処の天子」。もう、ずいぶん昔に読んだけど斬新で面白かった。斬新な人間像を見せてくれるものは面白い。やっぱりここまでくると、藤原不比等が気になり始める。二つの御落胤伝説 -出口王仁三郎と藤原不比等- なんていうのは、面白い。藤原不比等について、やっぱり地道に調べてみようかな。素人が歴史を調べていくときに、どんなアプリケーションがあると便利なんだろう。「Python で人工無能」と平行して「Python で歴史探索」というのを始めてみよう(笑)○ 何が必要なのだろう (Python で歴史探索)藤原不比等を調べるにあたって、あちこちのウェブサイトを探索してみる。うーん、探索したら記録を取れると便利だな。URL とページ名と、簡単なメモ、カテゴリ、参考になる度合い(レイティング)とかを残せるようにしたらいいだろうか。検索は Google で行うことにするんで、Google API でも使ってみようかな。・ Google API を使って、藤原不比等で検索。URL の一覧を保存。・ 検索結果を表示して、クリックしたらそのページが開かれる。・ メモ入力、カテゴリ、レーティングなどを行い保存・ 保存された URL からページを取得して保存。・ 保存されたページを形態素解析し、インデックスを作成・ 保存されたページを検索できるようにする。・ 保存されたページ内にあるリンクのチェック・ ゴミリンクのチェック・削除とかこのあたりからだろうか。あとは、形態素解析をしても、いろいろ解析に失敗するだろうから、どういう単語を登録したらよいか検証したりするツールがあると便利なのかもしれない。・ 電子辞書の検索・ 書籍/論文等のリファレンスの作成・ ターミノロジーの作成・ 人物辞典的なリンク集の作成・ 家計図グラフの作成・ 人物相関図の作成フーム、考えてみるとけっこう大掛かりなものになっていくな。また、こっちも、ちょっとずつ、スクラッチから構築していくことにしよう。ん、これが人工無能とつながる日は?100年ぐらい先かもしれない。「醍醐天皇の生まれた日は?」→「西暦885年1月18日です」。「藤原不比等の父親は?」→「いちおう藤原鎌足ということになっています。が、天智天皇の御落胤という説があります。これに関するページとしては[link]があります」なんてやってくれたら便利かな。藤原不比等・生年月日で検索して、ピコっと「西暦885年1月18日」関連URL..... ときれいに出てくるのもありなのだけど、言語活動を軽視しているのだよな。自分用の言語で語られた方が頭の中が整理されるのだ。だって、一覧表10分間見て、その後、それについて語ってくれと言われたときと、一覧表に載っているようなことを語り口調で説明された文章を読んだあと、どちらが頭に残るかといえば文章の方でしょ。一覧表というのは眺めて、頭の中の整理をするのには役立つかもしれないけれど、新規知識習得には向いていないのだ。いったん、覚えたことでも忘れてしまったことなどは、新規知識習得に近いのだから、やっぱり語られた方が頭の中にすんなり入る。単純なものでも、流れを作ってやった方がいいのだ。さて、5年ぐらいかけたら、そこそこのものができるだろうか(笑)。だいたい、ここまで作る時間、調査にあてたら、けっこういろいろ調べられるよな。本末転倒ってやつだ。とにかく本末転倒企画として、しばらく試してみることにしよう。
2003.01.19
コメント(0)
『クッキー・フォーチュン』(Cookie’s Fortune)を見た。うーん、これ面白いではないか。借りたときにはよく分からないで借りたのだが、ほんとに何回も見たくなるような変で面白くていい映画。これは映画を見たって気になる。なお、上の URL のリンクだが、リンク切れになってしまうが、これわざと。URLの coookie/index_top.html coookie の「 o 」を一つ削るのだ。楽天はへんなことしてるから、悪いことしてると勘違いされちゃうのだ。URL中のクッキーに過剰反応しちゃうらしい)○ 肯定文と疑問文の変形コンセプト3 (Python で人工無能)やっぱり、毎日書いてないと、前に何を書いたか忘れてしまうな・・・。トリ頭の私であった。とにかく、もうちょっと考えておこう。会話がうまく進むかどうかは、受けの巧妙さにかかっているところがある。人と話しているときでも、ちゃんと相手が聞いてくれているかどうか、どうやって判断しているのだろう。対面している場合には、80%以上ボディーランゲージなのかもしれない。電話で話している場合には、なんと言うかよりも声のトーンや合いの手を入れるタイミングなのかもしれない。しかし、人工無能では、相手の顔色を見たり、声色から相手の感情を知ることもできないし、こちらの感情を伝えることもできない。すべてが文字情報のみによるのだ。だから、それだけでも、対面して会話する場合や電話に比べて情報量が少なくなり、人間くささが消えてしまう。言葉の中に感情をどう込めているように感じさせるか。一つは、返す言葉の中に相手の話した言葉を繰り返すこと。相手の言葉を繰り返すことによって、あなたの言っていることを聞いていますよ、という姿勢を示すことができる。尋ね返すにしても、やり方がいろいろあるだろう。「私はシャイだ」変換1->「あなたは、シャイだ」変換2->「あなたは、シャイですか?」ここまでだと、やっぱり、バカっぽすぎる。変換3->「えっ、あなたがシャイだって?」変換4->「シャイ?」これなら、何らかの反応を返せそうだ。「彼は間抜けだ」変換5->「彼は間抜けですか?」変換6->「彼が間抜けだって?」変換7->「彼は、どのように間抜けですか?」変換8->「彼は、どのくらい間抜けですか?」変換7,8 なんかは Eliza っぽい。How とか What とかいった要素を聞き返すようなことができれば面白い話しの展開になる。たとえば、「とても間抜けだ」のように「とても」が入ってきたときだけ、このような変換をするとかいったことが考えられる。あるいは、尋ね返すのではなく。同意文を返してやることもできるだろう。「私はシャイだ」変換10->「はいはい、シャイですね」変換11->「シャイね~」いや、これでは揶揄的な響きになってしまう。変換12→「そうですね。あなたはシャイかもしれないですね」応え方は面白い。「シャイ?」1単語で返してしまうのも単語によっては、以外によい返し方かもしれないし、変換12「確かに、彼は間抜けですね。でも、なぜなんでしょう」とちょっと長めに引っ張ったとしても、なかなか賢そうに見えるし、自分の話していることを聞いてくれるような感じがする。でも、あくまでセラピストという感じだ。そう、Eliza というのは、そんな感じで反応するパターンがあるので、賢くみえるのだ。ほんとに短いプログラムなのに。「私は~だと思う」という "I think" に対して、"do you thin" として、これだけでは単純すぎるから、"Why do you think" とかしてやったり、"tell me more" のように「聞いてるよ、でももう少し先を続けてみて」という感じの反応を織り交ぜていくという巧妙さが単純さの中に含まれている。それにしても、聞き上手というのは、どんな人なんだろう?聞き上手について考えてみることは、人工無能に人っぽさを持たせるために重要なことだ。相手がもっと話すようにしかけていくのだ。「私ってきれいよね」変換13->「あなたはきれいですよ」意外に、単純肯定ルールも単語によっては、いいのかもしれない。変換14->「あはたは、とてもきれいです」勝手に「とても」と一言入れてやるだけで、なんだかかわいく思えてきたりして。変換15->「きれいじゃないなんてことは、ありえないです」ひらがなばかりで読みにくいが、おべんちゃらの領域に達している。結局、相手の言葉を肯定したり、疑問文にしたりするバリエーションを多く作っていくだけで、それなりに会話として成り立つようだ。ただ、展開をどうするかというところが次に問題になってくるのだろう。つまり、受けただけで終わっているのだ。流れを見てみよう。1「私ってシャイなんだ」2「シャイね~」3(ここで人がなんて答える?)「うるさい!」「シャイだって」「バカ」・・・・。と意外に会話のどん詰まりに導いてしまうような返答というのもあるものだ。4「私ってきれいよね」5「きれいだよ」6「私ってかわいい」7「かわいいよ」8「私ってキュート?」9「とってもキュート」鸚鵡返しにするだけでは、さすがに興ざめだろう。これが、4「私ってきれいよね」5「空の星より、きれいだよ」(今どききかない会話だが)6「私ってかわいい」7「子豚ちゃんのようにかわいいよ」(バキ!)8「私ってキュート?」9「キュート、キューティー、ハニーフラッシュ」(まさに人工無能的)まあ、多少おもしろみもでてくるか。最近、CATVで「キューティーハニー」を見ることがあるが(新目のやつ。昔見たのとかなりイメージが違う)、「セーラームーン」とかと近い文脈になっているなと思った。セーラームーンではピュアな心の持ち主の銀水晶だったかなだかが、ありかが分からないため、次々いろんな人が狙われるけれど、キューティーハニーの場合は、それが最初から分かっていて、空中元素固定装置を持つキューティーハニーがパンサークロー狙われると。で、いざというときには変身して相手をやっつける。そうやって考えると、セーラームーンていうのはキューティーハニーのバリエーションなのかって感じがする。変身ものの元祖ってなんだろう。超人ハルクとかなのかな。ドラキュラ。ジギルとハイド。三年寝太郎とかも、一種の変身物なのかな。わらしべ長者。浦島太郎、鶴の恩返し。本題にもどり、Eliza を見るといいつつ見てなかったから、いい加減見なきゃ。
2003.01.18
コメント(0)
Knowledge Power Web が創刊された。メールマガジンの購読。こういうのを見たり、マイクロソフトの動きを見ていたりすると、以前は外部の業者がやっていたことを直接、企業が末端に対して無料で提供する/一種の洗脳を行う動きが強まっているように感じる。要するに製品が高度化すればするほど、それを理解してもらわなければならず、まったくの外部の人間では扱いきれなくなってきているということ。単に広告宣伝活動とだけは捉えられなくなってきているような感じがする。マイクロソフトのコンサルタントが徐々に顔を表に出し始めているような感じもするが、やはり、製品が高度化したためにそれを自らやらねばならなくなっている。IBM などもオンラインでビデオを流す(Webcast)など、アメリカではやっている。フリーなソフトが広まれば広まるほど、有料の製品を扱っているところは、自社の製品の有用性を明確にしなければならず、また、有料であることの一つの根拠として顧客への情報提供を行うという面もある。そうすると書籍なども、徐々にメーカがライターに対してオンラインコンテンツを依頼する機会も増えていくだろう。わざわざ出版社などを使う必要性がなくなってくるのだ。できるだけ多くの人を自社製品に対して目を向けさせるための広告/洗脳材料としてのコンテンツになっていくのだから。そして、出版社のように、その本が面白い/面白くない、売れる/売れないという次元ではなく、そのコンテンツを読んだ読者が製品を買ってくれる/くれない、既存の顧客を満足させられる/させられないという、ちょっと次元の異なったところに入っていく。似ているようでまったくことなる世界だと思う。そういえば、Python のメーリングリストに 形態素解析器 MeCab の win32 DLL に対して、Sam Rushing の calldllを使ってアクセスする Python module を公開との投稿があった。(win32mecab.py)。この Sam Rushing というのは、Zope の http サーバとして使われている Medusaを作った人だな。DynWin, a dynamic GUI class library for Python and Win32のページに Python 2.2.1 用の calldll があるな。AVL module とか、npstruct (バイナリデータのパージング)なども、なんか役に立つことがあるかな。時間ができたら試してみることにしよう。速度的にどうなんだろう。○肯定文と疑問文の変形コンセプト2 (Python で人工無能)昨日、アバウトに肯定文について書いてみた。日本語の場合、厳密にやろうとすると文を扱うのが英語より面倒だ。「今日は元気だ」「今日は元気だった」「明日も元気だろう」。短いものをちょっと見ただけだと、なんとかなるかなという感じもするが、「今日は元気なのだと思ったろうがそうではなくて元気じゃなかったと思うような気がしないでもないかなぁと思いましたか?」。後ろにヅラヅラといくらでもつなげてしまう。また、時制(現在、過去、未来・・・)をちゃんと扱おうとしても難しくなってしまう。ということで、どこで適当に切り分けてしまうかが肝心なのだろう。チャットの場合、そういう文を書く人も少ないだろうから、一番、後ろのところを見てそこだけで判断してしまうことにしよう。途中は基本的に吹っ飛ばしてしまうのだ。「今日は元気なのだと思ったろうがそうではなくて元気じゃなかったと思うような気がしないでもないかなぁと思いましたか?」の場合だったら、[思いましたか?」だけ扱うのだ。あとは、「と思う」、「と言う」などちょっと特殊な扱いができそうなものは別扱いとする。名詞や形容動詞語幹の場合は、まあ、適当にやってもなんとかなりそうな感じがするが、動詞の場合はどうだろう。まじめにやると面倒でしょうがない。動詞のラ行五段活用とか中学生のころを思い出す。未然・連用・終止・連体と。命令なんかは特別な反応を返すと面白いかもしれない。走った走った走っ 動詞,自立,*,*,五段・ラ行,連用タ接続,走る,ハシッ,ハシッた 助動詞,*,*,*,特殊・タ,基本形,た,タ,タEOS走ろう走ろ 動詞,自立,*,*,五段・ラ行,未然ウ接続,走る,ハシロ,ハシロう 助動詞,*,*,*,不変化型,基本形,う,ウ,ウEOS走ります走り 動詞,自立,*,*,五段・ラ行,連用形,走る,ハシリ,ハシリます 助動詞,*,*,*,特殊・マス,基本形,ます,マス,マスEOS走りますね走り 動詞,自立,*,*,五段・ラ行,連用形,走る,ハシリ,ハシリます 助動詞,*,*,*,特殊・マス,基本形,ます,マス,マスね 助詞,終助詞,*,*,*,*,ね,ネ,ネEOS走ったのですね走っ 動詞,自立,*,*,五段・ラ行,連用タ接続,走る,ハシッ,ハシッた 助動詞,*,*,*,特殊・タ,基本形,た,タ,タの 名詞,非自立,一般,*,*,*,の,ノ,ノです 助動詞,*,*,*,特殊・デス,基本形,です,デス,デスね 助詞,終助詞,*,*,*,*,ね,ネ,ネEOS走っちゃうの走っ 動詞,自立,*,*,五段・ラ行,連用タ接続,走る,ハシッ,ハシッちゃう 動詞,非自立,*,*,五段・ワ行促音便,基本形,ちゃう,チャウ,チャウの 名詞,非自立,一般,*,*,*,の,ノ,ノEOS走っちゃった走っ 動詞,自立,*,*,五段・ラ行,連用タ接続,走る,ハシッ,ハシッちゃっ 動詞,非自立,*,*,五段・ワ行促音便,連用タ接続,ちゃう,チャッ,チャッた 助動詞,*,*,*,特殊・タ,基本形,た,タ,タEOS走っちゃうよ走っ 動詞,自立,*,*,五段・ラ行,連用タ接続,走る,ハシッ,ハシッちゃう 動詞,非自立,*,*,五段・ワ行促音便,基本形,ちゃう,チャウ,チャウよ 助詞,終助詞,*,*,*,*,よ,ヨ,ヨEOS走ってしまうよ走っ 動詞,自立,*,*,五段・ラ行,連用タ接続,走る,ハシッ,ハシッて 助詞,接続助詞,*,*,*,*,て,テ,テしまう 動詞,非自立,*,*,五段・ワ行促音便,基本形,しまう,シマウ,シマウよ 助詞,終助詞,*,*,*,*,よ,ヨ,ヨEOSEOS終助詞とかは、とりあえず、問答無用で削除。助動詞に囲まれた「の」も問答無用で削除。動詞の直後の「ちゃう」も削除。「ちゃう」「てしまう」の変換とかもすると賢く見えるかもしれないがこのあたりまずアバウトに進んでしまうことにしよう。ここらへんは、むしろ人工無能が文を生成するときにどうしようというところで考えた方がよさそう。おぼろげながらどうしたらよいか見えてきたような気がする。要するにいい加減にとりあえずやればいいのだ(笑)。
2003.01.16
コメント(0)
間違えて昨日の日記に上書きしてしまったので復旧(^^;;昨日の分が New になっているのは登録しなおしたから。『フランティック』(FRANTIC)を見た。ハリソン・フォード演じる大学教授が、空港で奥さんのスーツケースが他人のものと入れ替わってしまったことから事件に巻き込まれるという話で、まあ、軒並みな作品だった。ロマン・ポランスキー監督ということで、作りとしてはうまいんだろうけどストーリー自体があまりに陳腐という感じがした。○肯定文と疑問文の変形コンセプト1 (Python で人工無能)「私は元気です」と入力されたら、「あなたは元気です」と変換するところまではできた。じゃあ次にというと、これを念を押す形の「あなたは元気なのですね」とか、疑問形の「あなたは元気ですか?」にしたり、あるいは、「あなたは元気と言ったではないですか」と詰問調の文に変換できればいいなと思う。まず、いつものように MeCab を使ってみる。私は元気です。私 名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシは 助詞,係助詞,*,*,*,*,は,ハ,ワ元気 名詞,形容動詞語幹,*,*,*,*,元気,ゲンキ,ゲンキです 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス。 記号,句点,*,*,*,*,。,。,。EOS名詞-形容動詞語幹 + 助動詞-*-特殊・デス/ダ + 記号-句点の形式であれば、とりあえず、「ですか?」としてしまってよいだろうか。ちょっとバリエーションを作ってみよう。元気だ元気 名詞,形容動詞語幹,*,*,*,*,元気,ゲンキ,ゲンキだ 助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダEOS元気だよ元気 名詞,形容動詞語幹,*,*,*,*,元気,ゲンキ,ゲンキだ 助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダよ 助詞,終助詞,*,*,*,*,よ,ヨ,ヨEOS元気なのだ元気 名詞,形容動詞語幹,*,*,*,*,元気,ゲンキ,ゲンキな 助動詞,*,*,*,特殊・ダ,体言接続,だ,ナ,ナの 名詞,非自立,一般,*,*,*,の,ノ,ノだ 助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダEOS元気だってば元気 名詞,形容動詞語幹,*,*,*,*,元気,ゲンキ,ゲンキだ 助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダって 助詞,格助詞,連語,*,*,*,って,ッテ,ッテば 助詞,接続助詞,*,*,*,*,ば,バ,バ元気だよーん元気 名詞,形容動詞語幹,*,*,*,*,元気,ゲンキ,ゲンキだ 助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダよー 助詞,終助詞,*,*,*,*,よー,ヨー,ヨーん 助動詞,*,*,*,不変化型,基本形,ん,ン,ンEOS元気だよん元気 名詞,形容動詞語幹,*,*,*,*,元気,ゲンキ,ゲンキだ 助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダよ 助詞,終助詞,*,*,*,*,よ,ヨ,ヨん 助動詞,*,*,*,不変化型,基本形,ん,ン,ンEOS元気なのだよ元気 名詞,形容動詞語幹,*,*,*,*,元気,ゲンキ,ゲンキな 助動詞,*,*,*,特殊・ダ,体言接続,だ,ナ,ナの 名詞,非自立,一般,*,*,*,の,ノ,ノだ 助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダよ 助詞,終助詞,*,*,*,*,よ,ヨ,ヨEOSまず第1のルールとして、名詞,形容動詞語幹 + 助動詞-特殊・デス/ダ,基本形であれば、その後ろに続く助詞、助動詞は削除してしまうということにしてみよう。全部「元気」にしてしまうわけだ。ただし「なのだよ」のような場合、「の」という名詞-非自立,一般が直後に来た場合にはルールを適用しないという例外を設けておく。「の」は曲者なので後で別ルールでまとめて考えることにする。で、これで不都合が起こるか、ちょっと考えてみる。あまりに単純なルールでは不都合が起きるのは当然。だけども、仮定(思い込み)→否定事象の抽出を連続していくことによって世界観を正しいものに徐々にしていけばいいのだ。とにかく、こと分け/もの分けを徐々に進化させていくのは、幼児がだんたんと知識を分化させていくのと同じようなことなので人工無能としては、徐々に賢くなっていく方法を試行錯誤的に追及していくわけだ。人間の思考も最初に直感があって、否定事象が一定の量に達するまでは、その直感を合理化しようとする。合理化ができなくなると、その直感を廃棄せざるを得なくなり、新たな直感により新たな基本ルールを作る。ところが、そのルールを破棄しようとすること自体が他の重要かつ根本的な価値観自体の体系に関わる場合は、そこに固着が起きたり、反動が生まれる。精神の病などもそうしたものに結びつきがあるのだろう。で、能書きは横に置いておき、元気だろうか元気 名詞,形容動詞語幹,*,*,*,*,元気,ゲンキ,ゲンキだろ 助動詞,*,*,*,特殊・ダ,未然形,だ,ダロ,ダロう 助動詞,*,*,*,不変化型,基本形,う,ウ,ウか 助詞,副助詞/並立助詞/終助詞,*,*,*,*,か,カ,カEOS元気ですか元気 名詞,形容動詞語幹,*,*,*,*,元気,ゲンキ,ゲンキです 助動詞,*,*,*,特殊・デス,基本形,です,デス,デスか 助詞,副助詞/並立助詞/終助詞,*,*,*,*,か,カ,カEOS元気ではない。元気 名詞,形容動詞語幹,*,*,*,*,元気,ゲンキ,ゲンキで 助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デは 助詞,係助詞,*,*,*,*,は,ハ,ワない 助動詞,*,*,*,特殊・ナイ,基本形,ない,ナイ,ナイ。 記号,句点,*,*,*,*,。,。,。EOS元気じゃない元気 名詞,形容動詞語幹,*,*,*,*,元気,ゲンキ,ゲンキじゃ 助詞,副助詞,*,*,*,*,じゃ,ジャ,ジャない 助動詞,*,*,*,特殊・ナイ,基本形,ない,ナイ,ナイEOS名詞,形容動詞語幹 + 助動詞-特殊・デス/ダ,基本形であれば、その後ろに続く助詞、助動詞は削除してしまうことにすると、まずいことが起きるのがわかる。「元気ですか」の場合「か」という助詞-副助詞/並立助詞/終助詞が付いているが、このような場合は、ルールを適用しない必要がある。それ以外の場合は、どうやら大丈夫そうだということにしておこう。で、とりあえずどういうことかというと、ルール:名詞,形容動詞語幹 + 助動詞-特殊・デス/ダ,基本形であれば、その後ろに続く助詞、助動詞は削除してしまう そして 肯定形として扱う。例外1:名詞「の」が接続した場合は、処理しない。例外2:助詞「か」が接続した場合は、処理しない。形容動詞語幹ではなく、名詞だったらどうだろう。まあ、同じような感じで扱っていいだろう。詩人だ詩人 名詞,一般,*,*,*,*,詩人,シジン,シジンだ 助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダEOS詩人ではない詩人 名詞,一般,*,*,*,*,詩人,シジン,シジンで 助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デは 助詞,係助詞,*,*,*,*,は,ハ,ワない 助動詞,*,*,*,特殊・ナイ,基本形,ない,ナイ,ナイEOS俳人か俳人 名詞,一般,*,*,*,*,俳人,ハイジン,ハイジンか 助詞,副助詞/並立助詞/終助詞,*,*,*,*,か,カ,カEOS廃人だ廃人 名詞,一般,*,*,*,*,廃人,ハイジン,ハイジンだ 助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダEOS廃人なのか廃人 名詞,一般,*,*,*,*,廃人,ハイジン,ハイジンな 助動詞,*,*,*,特殊・ダ,体言接続,だ,ナ,ナの 名詞,非自立,一般,*,*,*,の,ノ,ノか 助詞,副助詞/並立助詞/終助詞,*,*,*,*,か,カ,カEOS廃人なのだ廃人 名詞,一般,*,*,*,*,廃人,ハイジン,ハイジンな 助動詞,*,*,*,特殊・ダ,体言接続,だ,ナ,ナの 名詞,非自立,一般,*,*,*,の,ノ,ノだ 助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダEOS廃人だった廃人 名詞,一般,*,*,*,*,廃人,ハイジン,ハイジンだっ 助動詞,*,*,*,特殊・ダ,連用タ接続,だ,ダッ,ダッた 助動詞,*,*,*,特殊・タ,基本形,た,タ,タEOS長くなってきたので、とりあえずここまで。ちなみに、次のは解析結果がちょっとなんだな。とりあえず、無視。元気じゃん元 接頭詞,名詞接続,*,*,*,*,元,モト,モト気 名詞,一般,*,*,*,*,気,キ,キじゃん 助動詞,*,*,*,不変化型,基本形,じゃん,ジャン,ジャンEOS元気ですの元気 名詞,形容動詞語幹,*,*,*,*,元気,ゲンキ,ゲンキで 助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デす 形容詞,自立,*,*,形容詞・アウオ段,ガル接続,すい,ス,スの 助詞,連体化,*,*,*,*,の,ノ,ノEOS
2003.01.15
コメント(0)
寒くても少し体重を減らせた小岩井ヨーグルト(プレーン)生乳100% を食べた。これけっこうあっさりしていて美味いかもしれない。年末から増加傾向だった体重も歯止めがかかり、一番重いときに比べると 3Kg ほど減量に成功した。ちなみにヨーグルトのおかげなんかじゃぜんぜんなくて、単に暴飲暴食を慎んだだけの話なのであった。摂取カロリーより消費カロリーの方が少なければ、当然太る。小学生並の算数でも分かる話だ。そんなこと分かってはいても食べたいときには食べて太ってしまうのだな。いわゆるストレス食いの一種。食べるとやっぱり快適になるから、ストレスがかかると食べてごまかそうとする。あとは、若年時には消費カロリーが多いから、その勢いで同じ量を食べ続ければ、当然、消費カロリーが減った分だけ太る原因になるという罠もある。もう、年も年だし、そういう食べ方をしてはいけないとは思っているけど、なかなか直らんね。太り始めたときに、やばいなーと思ったら、私の場合こんなことをする。まず、スーパーマーケットにいって、なるべく野菜や魚などを中心にして、カゴいっぱいに買い物をする。パッと見て食べてみたいなと少しでも思ったらカゴに入れていく。人に頼んではダメよ。自分の目で見て買わなきゃ。1日、2-3000円程度 x 2,3日なのでちょっと食費はかかるかもしれないけど、まあ、外食していることを思えばたいしたもんじゃないでしょ。料理の仕方が分からなくても、煮るなり焼くなりすれば何でも食べられるからどんどんカゴに入れていく。そうしたら、2, 3日間でそれを食いまくるわけ。ぜんぜん凝った料理なんかする必要なくて、それこそそのまま食うことができないから適当に火を通して食うのだよという程度でいい。フライパンいっぱいに野菜炒めを作ったり、ポトフにしてみたり、魚焼き用のグリルに入れてやいてみたり。食べるときにはご飯は最小限にする。軽めの一杯以上はまずたべないこと。で、お腹がはちきれそうになるぐらい食べるので、一時的に体重が増える(笑)。でも、ここで気にしてはいけない。翌日もとにかく食いまくる。もう、満腹になっても食いまくるわけ。お腹が減ってきたなと思ったらまた食べる。あと、この間、お菓子とかは絶対に食べない。で、そういうことをすると、面白いことに 3,4日すると体重が落ち始めるのだ。たぶん、大量に取った野菜の繊維質が胃腸の中をきれいにしてくれて、野菜などに含まれている微量な何かが体に影響を及ぼすのだろうな。ひたすら食いまくることによって、暴飲暴食がそのあととまる。暴飲暴食というのは、ある意味、体の中に何かかけているものがあるよー、というサインを取り間違えて、満たされないものを補給するのではなく、余計なものばかりを補給するような状態になっているのかもしれない。とにかく、食うだけ食うと満足するのね。普段は、太っちゃイケないなーとか中途半端に思いながら、それでいてカロリーが高くて、栄養的にも不足しているものばかり食べてるから、体がへんになってるのかもしれない。もとが太っているだけに、その気になれば 5Kg ぐらいはすぐ減らせるのだけど、まあ、この油断がよくないのだよな。その気になるのが難しいんだもの。やっぱり、19、20才のころのベスト体重には、なかなか戻すことができない。そのころに比べたら、なんだかんだで 10Kg ぐらい太ってるもの。てなわけで、肥満の人はもしかしたら、この手を使うと効果があるかもしれない。もともと標準体重よりちょっと多い程度の人の場合は、知らない。え、そんな人が何で減量しなくちゃいけないのさ。ちょっと部屋掃除でも大掛かりにやって拭き掃除とかを筋肉痛が起きるぐらいやれば、健康的に減るでしょ。最近、密かにこっているのが、コンロの周りのタイル磨き。油汚れ+タバコのヤニとかで、けこう汚くなる(換気扇の前でタバコを吸うから)。ということで、今日のタイルを決めて、その日は一日に何度もそのタイルだけ徹底的に拭いてきれいにするわけ。一枚だけすごくきれいになると他が汚いのが目立つのだな。そうしたら、また翌日は別のタイルに移る。そうしてちょっとずつきれいにしていくのだ。全部いっぺんにきれいにしようとすると途中で嫌になってしまうのだけど、気分転換にタイルを磨くということをしていると娯楽の一種と化してくる。部屋の中がものすごく汚くてどうしようもないので、そうやってちょっとずつ娯楽として掃除を最近するようにしはじめた。磨くという行為は、けっこうハマる要素がある。ピカピカしてくるまでやると物に対する愛着もわいてくる。ほんとは体なんかもそういうところがあるんだろうな。ボディビルディングとかやっている人は、体の筋肉一つ一つに愛着をもって、今日はこの部分を鍛えようとかやってるのかもしれない。ちょっと話は違うけれど、ソフトウェアなんかも、これに似たところがあると思う。一部分だけ最適化してなにになるの?という話もある一方で、一部分を最適化することによってまた見えてくるものがあると思う。それが直接には全体としての速度向上につながらなかったとしても、最適化をすることも時折必要だろう。だが Python で人工無能の方はとうぶん、いいかげんなまま進める。とにかく動くようになることの方が大切だから。一通りできたらオーバーホールして最適化していけばいいのだ。このオーバーホールをしているのが、Zope 3 なのだ。もう、根本的に作り替えてしまっているから、互換性も減ったくれもない状態(笑)。とにかく、Zope 2 で問題だったことを根本的に見つめて作り直そうという感じなのだな。これがなかなか面白い具合に進んでいて、まあ、来年ぐらいには結構プロダクションレベルで使い物になり始めるじゃなかろうか。そしたら、Zope 3 に人工無能を組み込むのだ。まだまだ先の話だ。
2003.01.14
コメント(0)
○あなたと私を入れ替える (Python で人工無能)昨日の日記で、人称の書き換え用のリストを作って、それにしたがって書き換えをしようかという話を書いた。例によって IDLE を起動したら、プロンプトで人称用のディクショナリを作ってやる。そうすると、「私」の同義語は、hitodic[’私’] で取れるし、「あなた」の同義語も取れる。 >>> hitodic = { ’私’:[’わたし’,’私’,’わたくし’,’あたし’,’アタシ’,’僕’,’我’,’俺’,’僕’,’あたし’,’アタシ’,’あたい’,’手前’,’朕’,’わらわ’,’オイラ’,’ワテ’,’ワシ’], ’あなた’:[’お前’, ’君’, ’あんた’, ’そち’, ]}>>> print hitodic[’私’][’わたし’, ’私’, ’わたくし’, ’あたし’, ’アタシ’, ’僕’, ’我’, ’俺’, ’僕’, ’あたし’, ’アタシ’, ’あたい’, ’手前’, ’朕’] >>> print hitodic[’あなた’][’お前’, ’君’, ’あんた’, ’そち’, ’わらわ’, ’オイラ’, ’ワテ’, ’ワシ’]そうしたら、で、次に、ロボット的鸚鵡返しの術 (Python で人工無能) で6日に作ったファイルを IDLE の [File]-[Open] で開いてみる。これを元に改造していくことにするのだ。で、開いたらすぐに、[File]-[Save As] で別のファイル名にして保存しておこう。前のは前ので残しておくのだ。ファイルを読み込んだら、上の hitodic = (以下省略) の1行を >>> をつけずに(プロンプトだから)、ファイルの先頭の方に追加する。そうしたら、もう一度ファイルを保存してから、[Edit]-[Run script] か コントロールキー + F5 キーを押して実行させてみる。そうしたら、リターンを空うちして、バイバイしてしまう。これでプロンプトに戻る。次に 「私」や「あなた」を書き換えるための関数を用意してみる。やっぱり、今回も対話的に試しながらやってみる。>>> klist = keitaiso_kaiseki("私は元気です。")>>> klist[{’品詞細分類1’: ’代名詞’, ’原形’: ’私’, ’品詞細分類3’: ’*’, ’品詞細分類2’: ’一般’, ’表層形’: ’私’, ’読み’: ’ワタシ’, ’活用型’: ’*’, ’品詞’: ’名詞’, ’発音’: ’ワタシ’, ’活用形’: ’*’}, {’品詞細分類1’: ’係助詞’, ’原形’: ’は’, ’品詞細分類3’: ’*’, ’品詞細分類2’: ’*’, ’表層形’: ’は’, ’読み’: ’ハ’, ’活用型’: ’*’, ’品詞’: ’助詞’, ’発音’: ’ワ’, ’活用形’: ’*’}, {’品詞細分類1’: ’形容動詞語幹’, ’原形’: ’元気’, ’品詞細分類3’: ’*’, ’品詞細分類2’: ’*’, ’表層形’: ’元気’, ’読み’: ’ゲンキ’, ’活用型’: ’*’, ’品詞’: ’名詞’, ’発音’: ’ゲンキ’, ’活用形’: ’*’}, {’品詞細分類1’: ’*’, ’原形’: ’です’, ’品詞細分類3’: ’*’, ’品詞細分類2’: ’*’, ’表層形’: ’です’, ’読み’: ’デス’, ’活用型’: ’基本形’, ’品詞’: ’助動詞’, ’発音’: ’デス’, ’活用形’: ’特殊・デス’}, {’品詞細分類1’: ’句点’, ’原形’: ’。’, ’品詞細分類3’: ’*’, ’品詞細分類2’: ’*’, ’表層形’: ’。’, ’読み’: ’。’, ’活用型’: ’*’, ’品詞’: ’記号’, ’発音’: ’。’, ’活用形’: ’*’}]# ちゃんと、そのうち読みやすく、結果を出せるようにしよう(^^;;で、書き換えのマッチングをするのにどれを使うとよいかを考えてみる。表層形、品詞、品詞細分類1、品詞細分類2、品詞細分類3、活用形、活用型、原形、読み、発音がとりあえず使えるわけだが、ここでは「原形」を使うことにしよう。あー、それにしても、「ワタシは元気だ。」を解析すると次のようになってしまう・・・。やっぱり、このあたり学術研究用の辞書の弱さだな。そのうち辞書への登録も扱うことにしよう。「ワタ」「シ」「は」「元気」「だ」と。「ワタシ」が辞書にないのね。で、考えてみると人工無能の場合、学術的正しさは必要ないので、そのうちカタカナの後ろに未知語のカタカナが来ていたら安易につないでしまう処理をどこかに入れるかな。まあ、このあたりは、もっと癖をつかんでからやることにする。ワタシは元気だ。ワタ 名詞,一般,*,*,*,*,ワタ,ワタ,ワタシ m語,*,*,*,*,*,*,*,*は 助詞,係助詞,*,*,*,*,は,ハ,ワ元気 名詞,形容動詞語幹,*,*,*,*,元気,ゲンキ,ゲンキだ 助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダ。 記号,句点,*,*,*,*,。,。,。EOSそうしたら、>>>for k in klist: print k[’原形’]私は元気です。と、原形が取り出せることを復習する(ちなみに、ワタシでやると、* が出てきてしまうのだ。未知語の場合 * になるのだな。原形を使って文字を書き換えるときに使うとハマるということか。まあいい)。で、このループの中で書き換えをやってやればいいのだが、人称書き換えようのディクショナリは標準形がキーになっていて、いろいろなパターンの「俺」などが値として入っているので、ほんとは処理上都合が悪くて、{{’俺’:’私’, ’僕’:’私’ ...}} と冗長な構成になっていた方が、一発でディクショナリから「俺」に対応する標準形の「私」をとってこられて便利なのだな。「私」でリストを取って、その中から書き換え対象のものをとってくるようなやり方をすると、ループの中でさらにループをまわすようなことをしなければならなくなる。うーん、めんどくさいので場当たり的なことをしよう。で、テンポラリにディクショナリを作って、>>> tempdic = {} # 空の辞書を作る>>> for k in hitodic: # 辞書の「私」と「あなた」のそれぞれから values = hitodic[k] # 値を取り出して(俺、僕...) for v in values: tempdic[v] = k # 値をキーにして、キーを値にする>>> tempdic{’ワシ’: ’私’, ’お前’: ’あなた’, ’そち’: ’あなた’, ’あんた’: ’あなた’, ’わたくし’: ’私’, ’朕’: ’私’, ’あたい’: ’私’, ’私’: ’私’, ’俺’: ’私’, ’手前’: ’私’, ’君’: ’あなた’, ’ワテ’: ’私’, ’わらわ’: ’私’, ’わたし’: ’私’, ’オイラ’: ’私’, ’アタシ’: ’私’, ’あたし’: ’私’, ’我’: ’私’, ’僕’: ’私’}これで、{{’俺’:’私’, ’僕’:’私’ ...}} の形式に書き換えられたので、tempdic[’俺’] から標準形の「私」がループをまわさなくても取れるようになった。そうしたら、>>> hitodic = tempdicとして、hitodic に上書きしてしまい、hitodic でアクセスできるようにしておくことにする。しかし、まあ泥縄式と化しているな(^^;; あとで捨てるところなので、とりあえず動けばいいや。>>>hitodic[’あんた’]’あなた’となる。うーん、どうせなら、「俺」と入れたら「あなた」が返ってくるようにしてしまうかと思ったがやめておく。で、やりたかったのは、「私は元気だ」と入れたら、「あなたは元気だ」としたかったのだな。で、とりあえず、こんな風にしてみよう。上で、形態素解析の原形を取り出して表示したときに使ったものをちょっと変えてみる。表示する前に書き換えてしまえばいいので、まずはアバウトに、形態素の各要素のうち原形を取り出して、それをキーにして人称用辞書(hitodic) から対応する標準形を引っ張り出す。そして、もしそれが「私」であれば「あなた」に表層形を書き換えて、「私」であれば「あなたに」表記を書き換えてしまう。for k in klist: # 原形を取り出す genkei = k[’原形’] # 人称辞書から原形をキーにして標準形を取り出す hyoujun = hitodic[genkei] # 標準形が 「私」なら「あなた」に、 #「あなた」なら「私」に置き換える。 if hyoujun == ’私’: k[’表層形’] = ’あなた’ elif hyoujun == ’あなた’: k[’表層形’] = ’私’が、まあ、これはエラーになってしまう。当然のことなのだ。つまり、「私」と「あなた」以外には、標準形を取り出すことができないので、それ以外のものについては、hitodic を引いたときに失敗してしまうのだ。Traceback (most recent call last): File "", line 5, in ? hyoujun = hitodic[genkei]KeyError: は>>> KeyError: はというところに注目なのだ。ちゃんとエラーがでたときには、5行目で(line 5) 「は」はキーエラーですよと教えてくれている。そこで、こうしてみればよく分かるだろう。>>> hitodic[’は’]Traceback (most recent call last): File "", line 1, in ? hitodic[’は’]KeyError: は登録してあるものしか、取り出せないなんて不便とえいば不便なのだ。しょうがないので、まず、ディクショナリを引いてみて、失敗したらやめておこうといういい加減な方法をとってみよう。>>> for k in klist: # 原形を取り出す genkei = k[’原形’] # 人称辞書から原形をキーにして標準形を取り出す # 試してだめならからの"" を入れてやる try: hyoujun = hitodic[genkei] except: # エラーで標準形がとれなかったので空にする hyoujun = ’’ # 標準形が 「私」なら「あなた」に、 #「あなた」なら「私」に置き換える。 if hyoujun == ’私’: k[’表層形’] = ’あなた’ elif hyoujun == ’あたな’: k[’表層形’] = ’私’>>> for k in klist: print k[’表層形’]あなたは元気です。これでめでたく、「私は元気だ。」を「あなたは元気だ。」に書き換えることができた。同じようにすれば「お前は元気だ。」と入れれば、「私は元気だ。」となる。今日はここまで。ちなみに途中で色をつけるのが面倒になってしまったので途中から色がない(^^;; 色をつけるためのスクリプトでも作んないとだめかな・・・。今回もやっぱり、カットアンドペーストじゃ動かせなくて、全角と半角を直さないと動かんし。この辺は、そのうちなんとかしよう。インデントがおかしくなってしまったりするのが一番痛いのだな。python ではインデントが意味を持つから、これが狂うとエラーになっちゃうのだ。グスン。全角半角をちゃんと直して、そのまま動かなかったら、インデントが狂っているせいなので、それを直してください。そんな…
2003.01.13
コメント(0)
扇風機みたいに首を振るやつへんなハロゲンヒーターを通販で買った。エアコンよりすぐにあったまるのがいい。マイナスイオンが出るとかいうが、出ても出てなくても分からん。そういう怪しいものが時々欲しくなるので困る(^^;;tripod に 傀儡師研究室 を作ってみた。プログラムはここでやると面倒なのでまとまったものは研究室の方においてダウロードできるようにしようかなと思って。ただし、中身はまだない。こちらがメインなので(ポップアップ広告がうざいから)、たぶんあっちらに何か置いたらここに書き込むので今のところ見る必要なし。あっちの日記は、何かものをおいたときだけ書き込む。○ 人称書き換えの準備 (Python で人工無能)あなたとわたしから始めると(2003/01/08 の日記) で、あなたとわたしの書き換えをやってみようということを書いた。でちょっとまたソースを書く前に、簡単な擬似コード(実際には動かないが、プログラムの概念を自然言語なので擬似的に書いたもの)で表すと、次のようになる。for 一つの形態素解析情報 in 形態素解析結果のリスト: if 形態素解析情報[’原形’] == ’私’: 「私」を「あなた」に書き換える elif 形態素解析情報[’原形’] == ’あなた’: 「あなた」を「私」に書き換える else: なにもしないという感じになるだろう。もっとも数が増えてくるとうざったいことになるのだが、当面はこういう方式にしておく。で、問題になるのが、「私」や「あなた」の表現が複数存在することだ。私、わたし、我、俺、僕、あたし、アタシ、あたい、手前、朕など、貴方、あなた、お前、テメエ、あ・な・た、などをあげたが、他にも、お前、君、あんた、そち、貴官、わらわ、オイラ、僕ちゃん、ワテ、ワシ・・・、あげればキリがない。ようするに、1つの対象に収束する単語であっても、複数の言い方が生じるわけで、類義語(シソーラス、thesaurus)の情報をもたせなければならないということだ。また「わたし」「あなた」の関係は中立的だけれども、あなたとわたしの関係自体、あるいは自らの存在の出自が「私」あるいは「あなた」の表現によって語られることになる。なんか、そういうものをまとめて辞書からとってこられるといいのだが・・・。MeCab の解析結果をちょっと見てみよう。お前は誰だ。お前 名詞,代名詞,一般,*,*,*,お前,オマエ,オマエは 助詞,係助詞,*,*,*,*,は,ハ,ワ誰 名詞,代名詞,一般,*,*,*,誰,ダレ,ダレだ 助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダ。 記号,句点,*,*,*,*,。,。,。EOS私は誰だ。私 名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシは 助詞,係助詞,*,*,*,*,は,ハ,ワ誰 名詞,代名詞,一般,*,*,*,誰,ダレ,ダレだ 助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダ。 記号,句点,*,*,*,*,。,。,。EOSあたしは誰。あたし 名詞,普通名詞,*,*,あたし,あたしは 助詞,副助詞,*,*,は,は誰 名詞,普通名詞,*,*,誰,た。 特殊,句点,*,*,。,。EOS一応、名詞-代名詞という枠組みがあるものの、人称代名詞という分類もないし、ましてや、一人称、二人称なんて分類もあるはずがない。しょうがないので、やっぱりこれは、シソーラス辞書として持たせる必要があるな。それにしても「私」は名詞-代名詞で、「あたし」は名詞-普通名詞であるところがなんともいえないなぁ。「は」も助詞-係助詞が、助詞-副助詞になったりしてるな。あ、そっか、「だ」が最後にないからか。あたしは誰だ。あたし 名詞,代名詞,一般,*,*,*,あたし,アタシ,アタシは 助詞,係助詞,*,*,*,*,は,ハ,ワ誰 名詞,代名詞,一般,*,*,*,誰,ダレ,ダレだ 助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダ。 記号,句点,*,*,*,*,。,。,。EOSふーむ。けっこう微妙なのだな。ちなみに、JUMAN 辞書を使ったら、「私」の読みが「あたい」になっているな(^^;;。「誰」も普通名詞になっていて、やはりこのあたりも違うのだな。「だ」も助動詞ととるか、判定詞ととるかで違っている。ん、JUMAN辞書で「アタシは誰」とやったら、文字化けしてしまったな。未知語が化けてるのかな。dicrc も shift_jis にしてみたらなぜか化けなくなった。「`語」とかなるけど。まあいいや。私は誰だ。私 名詞,普通名詞,*,*,私,あたいは 助詞,副助詞,*,*,は,は誰 名詞,普通名詞,*,*,誰,ただ 判定詞,*,判定詞,基本形,だ, だ。 特殊,句点,*,*,。,。EOSで、本当は言い換えのときにトーン(調子)をとっておくといいのだが(たとえば、あんた、であればくだけた表現とかなんとか)、まあ、そういうものは吹っ飛ばしてしまって標準形とその他という形で括った人称表現辞書を {見出し:[表現のリスト]} のように作っておこう。hitodic = {’私’:[’わたし’,’私’,’わたくし’,’あたし’,’アタシ’,’僕’,’我’、’俺’、’僕’、’あたし’、’アタシ’、’あたい’、’手前’、’朕’], ’あなた’:[’お前’, ’君’, ’あんた’, ’そち’, ’わらわ’, ’オイラ’, ’ワテ’,’ワシ’]}ただし、「僕ちゃん」みたいのは「僕」+「ちゃん」で解析されてしまう(というか、これはそれでしょうがないが)、妾(わらわ)なんかは、普通名詞で解析されるから、ちょっと本来同じ枠組みでできないのだが、まあ、とりあえず、このあたりはおいおいやっていけばいいか。とにかく、’私’の辞書のリストにある単語がきたら、それは「私」なので、人工無能の中に入るとそれが「あなた」に置き換わる。「あなた」は人口無能自体のことを指すので、出力されるときには「私」に置き換わる。まあ、それだけでも最悪いいだろう。英語だと I と You の置き換えだけだから楽なのだけど (変化形はあるものの)、日本語はよけいなところで苦労するな。で、とにかく、次はこのリストを使って人称の変換をする。
2003.01.12
コメント(0)
たまたま目に付いたのだが、日本語プログラミングとして最近、日本語プログラム言語「ひまわり」 や TTS (Technology Terminal Script)なんていうのがある。日本語プログラミングというと Forth 系の Mind が懐かしいところだが (ってまだ存在するのね。失礼しました。Scripts Lab. が今扱っている)。Mind-Clubもある。既存の日本語プログラム言語へのリンクを見ると他にもいくつかあるようだ。日本語指向のプログラミング (JV-Talk)なんてものもあるわけか。Java で作られているらしい。それから、日本語プログラミング言語「言霊」というのもあるのか。で、Mind のページに戻ると MindSearchなんていうピンポイント検索コンポーネントも売っている。『昨年の12月から今年の2月まで』とかいった指定や、「国名」を指示したら「日本」「アメリカ」「フランス」が抽出できるとか、けっこう優れものね。言語工学研究所シソーラス辞書対応インターフェースもあるし。文を基準として検索するとかも面白い。「○○と△△を10語以内に含む」とか「○○と△△を3文以内に含む」とかいった検索もできる。「重さ」で検索すれば、「1トン」「20g」「1匁」がヒットするとか。これ、ほんとうはうまくやると、けっこう面白いんだろうな。どうせ買うことはできないけど、評価版があるのでダウンロードしてみる。あと、検索一番ベストヒットのリンクが切れてる。ダメじゃん。検索一番ベストヒットWeb&Docだな。単品 各5,800円(税別)、Web&Doc 9,800円(税別)か。まあ、このくらいなら買えるな(笑)。体験版をダウンロードしようとしたらリンク切れ。ダメじゃん。InfoCompactorというのがあるな。InfoCompactor 3本pack(yahoo, goo, infoseek対応) 6,800円。バラだと3000円。これも評価版があるな。だいたい感覚的に、この手のものは 1万円以下 という感じ。他にも、 Mind で検索してみると、Mind で 人工無能 愛美君というのが開発されていたのだな。最初は Mind で作って、TRON で今動いているとか。マスタースレイブ方式の遠隔操作で動く、アンドロイド・ユニット『真弓ちゃん』などもあるな(爆笑)。http://hal.yoko.ne.jp/h_gam001.htmlMind だと次のように簡単にプログラムができてしまうところは確かにメリットだな。 "03-1111-2222"に 接続し "C:\DATA\TEST.TXT"を ファイル送信するちょっと Mind がいじりたくなる。PureMindPRO5.21 コンパイラセットという DOS版がある。範子(Hanko)さんのMind講座を見れば勉強できるか。Mind Version 7 for UNIXは GPL で配布されている。Mind がけっきょく普及しないで、「ひまわり」だとか 「TTS」だとかの方が今受けているように見えるのは、GUI 関連のところなのかな。Mind だと Tcl/Tk の世界だから。ひまわりや TTS は日本語版の HSP という感じだろうか。ひまわり vs TTS に比較がある。手順は あみだくじを作成する 線の数を設定する ウィンドウを設定する 移動距離を設定する あみだくじを描く終わり手順は あみだくじを印刷する 返事=質問(「印刷しますか?」,はいといいえ) もし 返事=はい なら ウィンドウを印刷終わりTTS Fan! より引用また、ポップアップ広告などみると、便利じゃないかって思える。じゃあ、この手の日本語プログラミング的なやり方を応用すると、自然言語処理のマクロ処理を日本語で書くなんていうのも考えられるか。形態素解析結果を参照し、 主語が「わたし」であれば、「あなた」に置換する。 主語が「あなた」であれば、「わたし」に置換する。 主語が「父」であれば、「ファザコン」変数を1増やす。 主語が「母」であれば、「マザコン」変数を1増やす。 (// 省略 //)「ファザコン」変数が3以上であれば、 ファザコン変換処理を行う「マザコン」変数が2以上であれば、 マザコン変換処理を行う (// 省略 //)文に、(挨拶)が含まれる場合、各変数を参照し、 丁寧な挨拶を生成する処理を行うか、 ラフな挨拶を生成する処理を行うか、 普通の挨拶を生成する処理を行う。文に、(罵倒)が含まれる場合、キャラクター変数を参照し、 「怒りっぽい」場合は、怒りの表現処理を行い、 「謙虚である」場合は、回避の表現処理を行い、 「淫乱である」場合は、色仕掛けの表現処理を行う。以上の変換を行った後、 変換結果を出力する。とかいいつつも、結局、下手に日本語でやろうとすると、よけいなところで労力を割かなければいけなそうだし。基本的には通常のプログラミングを行う方がはるかに効率がよさそうなだ。まあ、それは最初から分かっていても、日本語プログラミングっていうのは魅力は感じるときがあるのだ。
2003.01.11
コメント(0)
全文検索エンジン Namazu で有名な 高林哲氏のサイトをちょっと眺めたらおもしろい文章がたくさんあった。作品をよく見せるためのお手軽なテクニック集 とか、いやな法則 とか、ふつうの人(コンピュータを専門に扱っていない人)も読める。やっぱ優秀な人は違う。で、Namazu はどうでもいいのだが(なんだそれは)、電子辞書オープンラボ に興味を持った。人工無能用の会話のネタをどこから取ってくるかというところを考えてみたときに、大きくは3つ考えられる。1) 検索エンジンを使うこと2) RSS (RDF Rich Site Summary) を使うこと3) 電子辞書を使うこともちろん、ユーザ入力を使うことも考えられるが、ウェブサイト上に無能がおいてあるならまだしも、個人のデスクトップ上では困るのだ。自分で入力したものが出てくるだけではつまらない。それこそ、ディスクの中にあるドキュメントを Namazu でインデックスしておいて検索というのもあるかもしれないが、それでも、まだつまらない。ということで、やはり外からも情報が欲しくなる。RSS を使った場合、それを再保存して利用すると、それはそれで問題かもしれないし、検索エンジンは Google などは Google API を使わなくてはならないし(Google API はデベロッパー登録すれば使えるが1日1000回とかの検索に限られるし、いつ有料になるかもわからない)、その他の検索エンジンにしても、まあ、どこまでどうかというのは明確ではない。で、電子辞書であれば、購入したものであれば、そこを検索したものを自分で見たってなんら問題はないだろうし、フリーの辞書を使えばなお問題がない。ということで、電子辞書をなんらかのリソースにすることにしようと思う。抽出してどうこうすると問題だろうが、毎回検索する分には問題ないだろうし。うーん、どの辞書が使いやすいかなー。もちろん昨日の何か関連のスクリプト通信プロトコル(SSTP)を使って Iruku(FastSTTP) のような仕組みで外部と何かやりとりすることも可能なんだろうが、いかんせんマニアックな感じなのでとりあえず避けておく(といっている自分がある意味マニアックな世界に入っているんだけど方向性が違うの)。そういえばペルソナウェアの本体自体は無料になったのね。有料のキャラクターもあるみたいだけど。なるほど、有料キャラクターで稼ぐ方向になったのか。なんだかんだでペルソナウェアを使う人は有料のキャラクターを買うんだろうか。ベースは無料にして、さすがに偽春菜->何か->伺かの人たちが勢力を伸ばしていったから、こうなったのかな。まあ、この手のものは正直感覚がよく分からない(^^;;そういえば、Eliza に近づけることにしたんだった。Eliza のソース見直さなきゃ。
2003.01.10
コメント(0)
デスクトップマスコットの類も面白いものがある(趣味的にはちょっと違うんだけど・・・)。この分野では ペルソナウェア が有名だけれど、ある意味もっと有名なのが それ以外の何か。「伺か(うかがか)」あたりなのだろう。さくらナビとかでも情報があるようだが、はっきりいってよく分からないが、まあいい。何かで何ができるかとかを見てみるのだ。この周辺にはいろいろありそうだ。とりあえず DeskTop Mascot の贈り物のAIc-MAE 『真絵』が面白そう。「真絵」(AIc-MAE)の解説を見ると、IPA 品詞体系(THiMCO97) 形式で辞書(シソーラス)を持たせているようだ。JUMANや茶筌を使っているわけではないな。ソースが公開されていないのでよく分からないが基本的に高度な文字列置換といった感じだろうか。テンプレート(コーパス)の中から答えの文が選ばれて、そこに埋め込みするときに適切な品詞の単語が埋め込まれるようにしているという感じか(名詞のスロットには名詞が入るとか、動詞のスロットには動詞が入るとか)。(ちなみに最新版はリンクが切れていた)。○ JUMAN 辞書を使ってみる (Python で人工無能)MeCab で IPA の辞書だけでなく、JUMAN の辞書が使えるようになったということで試してみる。mkmecabdic で辞書を MeCab 用に作ると、さすがに時間がかかった。まあ、ほっとけばいいので感謝して使ってみることにする。ん、形態素解析の結果が文字化けしてしまっている。しまった。csv ファイルを SJIS に変換してからやてみる。今度はいいようだ。で、ちょっと試してみる。JUMANの辞書を使った解析結果 今日は元気だ。 今日は 感動詞,*,*,*,今日は,こんちは 元気だ 形容詞,*,ナ形容詞,基本形,元気だ,げんきだ 。 特殊,句点,*,*,。,。 EOS 私は元気だ。 私 名詞,普通名詞,*,*,私,あたい は 助詞,副助詞,*,*,は,は 元気だ 形容詞,*,ナ形容詞,基本形,元気だ,げんきだ 。 特殊,句点,*,*,。,。 EOS 彼はのんきだ。 彼 名詞,普通名詞,*,*,彼,あれ は 助詞,副助詞,*,*,は,は のんきだ 形容詞,*,ナ形容詞,基本形,のんきだ,のんきだ 。 特殊,句点,*,*,。,。 EOS JUMAN の辞書だと、「きょうは」のつもりで「今日は」としていても「こんにちは」になってしまうのが困る (JUMAN 本体で実行しても同じ)。あと、「元気だ」が形容詞なのもちょっといやだ。解析結果の品詞について納得いくかどうかは別にして、単純置換型の人工無能だと、JUMAN の方がやりやすい感じはする。「元気だ」「のんきだ」のレベルで挿げ替えが単純にできるから。ただし、自分で語尾を変形をしようとすると、ちょっとめんどくさいか。「のんきだ」を「彼ってのんきじゃん」としようと思えば、「のんきだ」を一回分解しないとならない。トータルコストで MeCab のデフォルト辞書(IPA の辞書)を使っている方が楽かな。Mecab 標準の辞書を使った場合 今日は元気だ。 今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー は 助詞,係助詞,*,*,*,*,は,ハ,ワ 元気 名詞,形容動詞語幹,*,*,*,*,元気,ゲンキ,ゲンキ だ 助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダ 。 記号,句点,*,*,*,*,。,。,。 EOS 私は元気だ。 私 名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ は 助詞,係助詞,*,*,*,*,は,ハ,ワ 元気 名詞,形容動詞語幹,*,*,*,*,元気,ゲンキ,ゲンキ だ 助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダ 。 記号,句点,*,*,*,*,。,。,。 EOS 彼はのんきだ。 彼 名詞,代名詞,一般,*,*,*,彼,カレ,カレ は 助詞,係助詞,*,*,*,*,は,ハ,ワ のんき 名詞,形容動詞語幹,*,*,*,*,のんき,ノンキ,ノンキ だ 助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダ 。 記号,句点,*,*,*,*,。,。,。 EOSMeCab の標準だと「元気」が形容動詞語幹になってくれているから、後ろにくる助動詞を変えるだけですむし、気分的に形容動詞になっている方がうれしい。やっぱり、(のんきだ(のんき、だ))と多階層になっていた方がうれしいかもしれない。うーん、JUMAN の辞書と IPA 辞書を使ったものとで、とりあえず多階層化してしまうという手もあるか。単に置き換えをするときと、変形をともなうような場合で使い分けてやるとか。まあ、形態素解析を2回かければコストはかかるけれど、そういうコストならどうでもいい。どっちにしろ、複数回形態素解析にかける予定だし(何をする(笑))。口語はどうなんだろう。JUMAN 辞書を使った場合 彼は元気じゃん。 彼 名詞,普通名詞,*,*,彼,あれ は 助詞,副助詞,*,*,は,は 元気じゃ 形容詞,*,ナ形容詞,ダ列タ系連用ジャ形,元気だ,げんきじゃ ん 助動詞,*,助動詞ぬ型,音便基本形,ぬ,ん 。 特殊,句点,*,*,。,。 EOSMeCab 標準の辞書を使った場合 彼は元気じゃん。 彼 名詞,代名詞,一般,*,*,*,彼,カレ,カレ は 助詞,係助詞,*,*,*,*,は,ハ,ワ 元 接頭詞,名詞接続,*,*,*,*,元,モト,モト 気 名詞,一般,*,*,*,*,気,キ,キ じゃん 助動詞,*,*,*,不変化型,基本形,じゃん,ジャン,ジャン 。 記号,句点,*,*,*,*,。,。,。 EOSMeCab 標準の IPA 辞書の方がへんな結果を出す場合もあるのだな。まあ、こういうのは特性としてとらえて、少しサンプルをいろいろ通して癖をつかまないといけないな。 JUMAN 彼の頭をたたいちゃった。 彼 名詞,普通名詞,*,*,彼,あれ の 助詞,接続助詞,*,*,の,の 頭 名詞,普通名詞,*,*,頭,あたま を 助詞,格助詞,*,*,を,を たたいちゃ 動詞,*,子音動詞カ行,タ系連用チャ形,たたく,たたいちゃ った 接尾辞,動詞性接尾辞,子音動詞ワ行,タ形,う,った 。 特殊,句点,*,*,。,。 EOS IPA 彼の頭をたたいちゃった。 彼 名詞,代名詞,一般,*,*,*,彼,カレ,カレ の 助詞,連体化,*,*,*,*,の,ノ,ノ 頭 名詞,一般,*,*,*,*,頭,アタマ,アタマ を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ たたい 動詞,自立,*,*,五段・カ行イ音便,連用タ接続,たたく,タタイ,タタイ ちゃっ 動詞,非自立,*,*,五段・ワ行促音便,連用タ接続,ちゃう,チャッ,チャッ た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ 。 記号,句点,*,*,*,*,。,。,。 EOSふーむ。やっぱり微妙に違うのだな。「彼の頭をたたいちゃったのですか」「彼の頭をたたいちゃっていいなー」だったら、どちらでもいいけど、「彼の頭をたたいたのですか」に言い換えようとすると、やっぱり IPA 辞書の方がやりやすい。文の生成をきちんとしたければ、はやり IPA 辞書の方が有利になってくるようだ。あとは、次のような変換ルールも作らんといけないのは、どちらの辞書を使っても同じだな。数字の表現は、いったん漢数字にしておかないと読みがちゃんと取れないから。1995年。1 名詞,数,*,*,*,*,1,イチ,イチ9 名詞,数,*,*,*,*,9,キュウ,キュー9 名詞,数,*,*,*,*,9,キュウ,キュー5 名詞,数,*,*,*,*,5,ゴ,ゴ年 名詞,接尾,助数詞,*,*,*,年,ネン,ネン。 記号,句点,*,*,*,*,。,。,。EOS千九百九十五年。千 名詞,数,*,*,*,*,千,セン,セン九 名詞,数,*,*,*,*,九,キュウ,キュー百 名詞,数,*,*,*,*,百,ヒャク,ヒャク九 名詞,数,*,*,*,*,九,キュウ,キュー十 名詞,数,*,*,*,*,十,ジュウ,ジュー五 名詞,数,*,*,*,*,五,ゴ,ゴ年 名詞,接尾,助数詞,*,*,*,年,ネン,ネン。 記号,句点,*,*,*,*,。,。,。EOSレベルをいくつか切って言い換え表現をするようにすればいいか。まあ、考えていてもしょうがないので、まず Eliza のレベルに近づけることしよう。
2003.01.09
コメント(0)
あなたとわたしから始めると (Python で人工無能)人工無能は対話型のアプリケーションだ。対話の中心は二者。「わたし」と「あなた」。わたしを人工無能とすると、あなたは人工無能を使う人。わたしは、すべての入力をわたしの情報とする。そして何らかのリアクションを返す。リアクションに対して、さらにあなたがリアクションをとれば、それが新たな情報となって次のわたしのリアクションにつながる。Eliza なんかの場合だと、英語を対象としているから主語が明確。あなたが何か自分の思っていることを入力するときは、I で始まるし、人工無能に対して語りかけたければ You ではじまる。主語のあとには、動詞または助動詞が来るし(まあ副詞が来ることもあるとかもおいておく)。比較的英語の場合は構文が明確にとりやすい。第三者に対する言及か対話者間の言及かを区別しやすいわけだ。肯定文を疑問文に書き換えるのも楽にできるし。日本語の場合は、主語が省略されることが多い。「今日は元気だ。」なんて、主語の「私は」が隠れてしまっているものね。チャットの場合は特に省略が多くなる。「あなたは今日は元気なのですね」とあなたを補ってやりたくなるところだ。ただ、冷静に考えると、英語で、"The sky is blue." 「空が青い(空は青い)」がどの程度客観性があるかというと、また、疑問がある。I see the sky is blue. なのか、I think the sky is blue. なのか、I believe the sky is blue. なのか・・・。You say you believe the sky is blue. 青いといったり灰色といったりするなら、確信度が変わってきて発言が変わっていくとか。やっぱり過去の発言は保存しておいて何らかの形で使いたい。人工無能は、ある意味知識表現をすべて中心人格の「エゴ」に還元してしまうようなものだと面白い。まあ、これは長くなるのでおいといて。「わたし」の表現として、私、わたし、我、俺、僕、あたし、アタシ、あたい、手前、朕、・・・、そして人工無能の名前。あなたの表現として、貴方、あなた、お前、テメエ、あ・な・た・・・。まあ、いろんな表現が考えられるわけだが、それぞれトーンが違っている。主語を補完しつつ、トーンを微妙に変えていくことができると面白いだろう。でも「猫は病気だ」の場合は、どうだろう。「あたなたは、猫が病気だと思っているのですね」と返したら、おもしろいかもしれない。このあたりどうするかなー。とりあえず、人称表現については一通りリストに持っておいて、これに加えて、Eliza のように家族の表現も用意して(父、母など)、それ以外はとりあえず知らんということにしよう。Eliza はコンピュータって言葉が嫌いだけど、これは軟化茶化したことを考えたい。あ、そういえば 言い換えシステム KURA もおもしろいな。人工無能の1つの本質が、言い換えをどれだけうまくできるかってことだから。この周辺の論文でも眺めていれば、アイデアがいろいろ浮かんできそう。奈良先端科学技術大学院大松本研究室っていうのはすごいな。学生見れば、企業の研究職の人などがいるので当然といえば当然か。まあ、今後は、こうした形の大学院大学の重要性はますます高くなるだろう。ふと思ったが、大学・大学院の研究室のレベルのメーリングリストなんかが、どんどん公開されて、FreeML みたいな形で簡単に検索できて購読できるようになるとよいのだろうな。そうすると、個々の研究室が浮かび上がって、どこでどんな研究がされているのかが一般の目に触れやすくなる。そうすれば興味を持つ学生も増えるだろうし、企業との結びつきももっとできやすくなるし、認知度も高まって予算がとりやすくなり、また、大学/研究室のブランド構築にも役立つわけだし。高齢化社会・生涯教育ということを考えてみても、いったん企業に入った人が大学にまた戻るという機会もこれから増えていくのだし(大学は生き残りのためにそうしたところにも力を注ぐわけだし)、FreeML の大学特化版みたいのがあるといいかもしれない。で、著作権なんかもちゃんと気を払ってあげて、そのへんも明確な形で行えるようにする。メールマガジンなんかも作って、おもしろくて購読者が多いようなものだったら出版につなげていくとか。今、日本の大学の出版事業はあまり盛んに見えないけれど、電子出版も含めて大学出版局が頑張ると面白いのだな。どこかの傾きかけている出版社に複数の大学が共同出資して、大学出版局の実務を行わせればいい。一般の大手出版社が書籍をつまらなくしているところがあるのだから、新しい出版のブランドを複数の大学が共同で作り上げていけばいいのだ。少数の部数でも適切なコストで出せるようにやっぱり電子出版を中心にした方がいいな。紙で出力されたものが欲しければ、プリンティングサービスも提供して。
2003.01.08
コメント(0)
UniDic ってなんだちょっと今日はプログラムはお休みだけれど、形態素解析器 MeCab (和布蕪) の作者、工藤氏のMeCabのメーリングリスト(目次の次に参加方法が書かれている) を見ていたら、UniDic に関しては 話し言葉研究に適した電子化辞書の設計 (PDF) を見るとよいと分かった。この論文は非常に分かりやすく書かれていて文系の人でも読むことができる。「自然言語処理ってなんだろう」って思う人も読んでみると面白いだろうし、言葉としての日本語に興味がある人もたまには、こういう論文を読んでみると楽しいかもしれない。たとえば、「一本、二本、三本」を口に出して読んでみよう。あれ、「本」は「ポン」と読んだり「ホン」と読んだり「ボン」と読んだりするけど、コンピュータにこれを読ませる(音声合成)するときにはどうするんだー、辞書はどうなってるんだとか疑問に思ったら読んでみると面白いかも(疑問に思わない人は、まさか、1兆本まですべての読み方が辞書に入っているとかバカなことがあるわけないでしょ、と考えてみるべし。じゃあどうする)。「哲学」なら「テツガク」だけど「哲学科」だと「テツガッカ」と読むでしょ。辞書には何でもかんでも全部登録されるのかな? それとも何かルールが見つかれば、全部登録する必要がないのかな?さあ、どうするんだ。ちょっと、カタイからさらっとは読めないかもしれないが、ゆっくり読めば面白いことが沢山かかれている。この論文の UniDic の基本概念のところに次のようにある。- 人文系の言語研究に違和感なく使える- 斉一な単位設定- 学校文法に準じた品詞体系の採用- 音声研究に使える- 実情に即した発音情報の記述- アクセント型情報の記述- 音韻交代・アクセント変化に関わる制約の記述方向性として、学校文法に準じた品詞体系の採用っていうのはいいかもしれない。つまり、人工無能に適用する場合、これまでの知識を基にした直感的なルールが作りやすいということ。結局、こういうものを作っていくときに一番大切なのは、辞書をどう作るか、話すルールをどうつくるかというところなので、これがやりやすい方がよいわけだ。UniDic が使えるようになったら、UniDic を使うことにしよう(と、転換が早い(笑))。どうせ遊びなので深くは考えないの。で、この論文を流し読みしていて、多層単位認定の例を見て、あーこれ欲しいと思ってしまった。神戸女子大学と「神戸」「女子」「大学」で切ってくれてさらに「神戸」と「女子大学」でも切ってくれて、まとめて「神戸女子大学」でも切ってくれると何がいいか。それは、「神戸女子大学に素敵な女性がいるよ」と入力されたら「え、奈良女子大学に素敵な女性がいるの?」ととぼけた反応もやりやすいからだ。そして、何処かしらから画像を取ってきて表示するとか。問題は人の画像をとってくるところ。Google API を使ってイメージ検索すればいいのね。で、奈良女子大学だと思いっきり風景がでてきてしまうので、適当な名前で AND 検索かけてやればいいのさ。冗談はさておき、普通は、「神戸女子大学」でまとめてくれた方が扱いやすいけれども、特殊「女子大学生」ルールというのを作り、「女子大学」を含む場合は前半の語を変更してやるなどと小技をきかせることもできる可能性があるので、多階層の解析はうれしいなということ。「積極的だ」というのも、「積極」「的」「だ」と分けたパターンと、「積極的」「だ」とまとめたパターンの両方で簡単にアクセスできれば、いろんな書き換えルールを作りやすくなる。要するに UniDic を使った多階層単位認定を形態素解析器がやってくれれば、人工無能側の手間が省けていろいろやりやすくなるということで、うーん、これの方が都合がいいなーと思ったわけ。あとは、そのうち音声合成のプログラムがフリーで入手できたら、しゃべらせてみるとまた面白いだろうな。「シーマン」みたいにむかつくこと言わせる。SEAMAILは買おうと思っていて結局まだ買ってない。新バージョンってでないのかな。 504iシリーズ用iアプリ待受画面「シーマン」登場なんて出ていたのか。携帯シーマンなんてあるのか。でも携帯電源切っているときが多いしな。PS2用のシーマンは発売延期か。
2003.01.07
コメント(0)
新年早々、日本語の形態素解析器 MeCab (和布蕪) がバージョンアップされていた(2002/01/03)。新しいバージョンでは、Darts: Double-ARray Trie Systemというやつに対応してるらしい。おや Windows のバイナリも すでに新しいのが公開されている。ちなみに、MeCab の祖先は、CaSen (茶筌)。ChaSen の祖先は、JUMAN。もともと MeCab を作っている工藤氏は京都大学の言語メディア研(旧長尾研)で JUMAN の開発していた人なのだな。だから、JUMAN も ChaSen もその短所と長所をよく理解してさらに独自路線で MeCab を作ったということかな。祖先をたどると面白い。で、JUMAN 3.0 と 茶筌 との関係について 眺めてみると、京都大学長尾研究室の JUMAN からどういう経緯で、奈良先端大松本研究室の ChaSen が派生したかが分かるようだ。それから、JUMAN の品詞体系は益岡体系で、ChaSen はIPA 体系ならしい。で、このあたりの話は、MeCab のメーリングリストで知ったのだが、MeCab のページからメーリングリストの記述が消えているな・・・。まあいいや。で、MeCab は品詞体系に依存しない汎用形態素解析器を目指しているらしく、増岡品詞体系(JUMANがこれ) の辞書も使えるようにと開発しているようだ。MeCab や ChaSen は IPA品詞体系 というやつのようだ。ChaSen は unidic というのを将来使うようになるみたいだ。まあ、そのへんはほっておいて、人工無能でできるだけ簡単な処理を使用としたら、益岡品詞体系の方が IPA品詞体系より直感的にやりやすそうな感じがする。益岡品詞体系 や IPA品詞体系は、Google へ直行。でも、とりあえずいいや(^^;;○ ロボット的鸚鵡返しの術 (Python で人工無能)MeCab のメーリングリストで「単純なカナ漢字変換プログラムを作ってみましたって」流れてきたので、これにヒントを得て、ちょっとロボット的おみくじ付き鸚鵡返しの術を使ってみることにした。やり取りは、こんな具合になる。ちょっと人工無能っぽくなってきたのだ。単なる鸚鵡返しとおみくじ的ランダム返答を組み合わせるだけでも、MeCab のおかげで、やけに賢く見えるではないか(笑)。あなたの名前は? 傀儡師傀儡師 > 今日は寂しいよ。「キョー ワ サビシイ ヨ 。」 なんて、間抜け だね。傀儡師 > 今日は元気だよ。「キョー ワ ゲンキ ダ ヨ 。」 なんて、幸せ だね。傀儡師 > 今日は笑える。「キョー ワ ワラエル 。」 なんて、純粋 だね。で、今回のプログラムリストは、次のような感じ。ちょっと長くなってきてしまった。でも、今までのを日記を全部読み返すと、理解できるはずなんで、今回は説明省略。何せ、色をつけるのが面倒なので疲れた(^^;; #!/usr/bin/env python import sysimport whrandomdef raw_input(prompt=’’): """プロンプトを表示して、入力を得て、末尾の1文字(改行)を削除して返す。 @prompt 入力を促すためのプロンプト文字列 """ sys.stdout.write(prompt) return sys.stdin.readline()[:-1] def keitaiso_kaiseki(s): """MeCab で形態素解析した結果を返す。 解析結果は、形態素ごとにディクショナリ形式で格納したリスト。 @s 解析する文字列 """ from popen2 import popen2 fi, fo = popen2(’"c:¥¥program files¥¥mecab¥¥bin¥¥mecab"’) fo.write(s) fo.close() klist = fi.read() fi.close() sentence = [] for gyou in klist.split(’¥n’): keitaiso = gyou.split(’¥t’) dic = {} if len(keitaiso) == 2: dic[’表層形’]= keitaiso[0] n = keitaiso[1].split(’,’) dic[’品詞’]=n[0] dic[’品詞細分類1’]=n[1] dic[’品詞細分類2’]=n[2] dic[’品詞細分類3’]=n[3] dic[’活用形’]=n[4] dic[’活用型’]=n[5] dic[’原形’]=n[6] dic[’読み’]=n[7] dic[’発音’]=n[8] sentence.append(dic) return sentence def get_hatsuon(klist): """形態素解析結果から「発音」を取得し文字列として返す。 getHatsuon を klist の各要素に適用し、 「発音」を取得して、1つの文字列に結合して返す。 @klist 形態素解析結果リスト """ # 各形態素の情報から「発音」を取り出してリストにする hatsuon_list = map(getHatsuon, klist) # 発音リストの要素をスペースを間にいれてつなげる return " ".join(hatsuon_list) def getHatsuon(kinfo): """形態素解析情報から「発音」を取り出して返す。 @kinfo 形態素解析の結果 """ return kinfo[’発音’] def get_random_answer(rlist): "リストの中からランダムに一つ選択して返す。" return whrandom.choice(rlist) # メインのプログラムとして読み込まれたときには以下を実行 if __name__ == ’__main__’: # ランダム回答用のリスト # この中から、ランダムに後で人工無能が選択して答える。 # おみくじと同じ。 random_list =[’平和’, ’幸せ’, ’平凡’, ’悲壮’, ’不幸’, ’純粋’, ’間抜け’] # 名前を入力させてプロンプトにする。 name = raw_input(’あなたの名前は? ’) prompt = name + ’ > ’ # 繰り返しに入る while 1: answer=raw_input(prompt) # リターンだけなら終了 if not answer: break else: # 入力を形態素解析する klist = keitaiso_kaiseki(answer) # ロボット返答用の発音を取得する robot_answer = get_hatsuon(klist) # おみくじ的返答をランダムに発生させる。 random_anser = get_random_answer(random_list) print "¥n「%s」 なんて、%s だね。¥n" % (robot_answer, random_anser) # 終わりだよん print "バイバイ"
2003.01.06
コメント(0)
このところ急激に 5Kg も太ってしまった。いかんいかんと思いつつ、寒いからと食べる。食べたら少し暖かくなるだろうと。単なる言い訳なんだけど。でも、皮下脂肪がどんどん蓄えられるから、ほんとに寒さに強くなるという話が・・・。肉襦袢というやつだ。でも、いかんね。気をつけよう。いったん太ると落とすのがまた大変だから。身長-100程度には抑えておかないといけないな。それくらいでも、最近は健康診断行くと、太るなと言われるぐらいだから。食う量が減れば食費も減るから財布が重くなる。体重を軽くして、財布を重くするように努力しよう。今年は、間が空くと書くのが億劫になりがちなので、くだらないことだけ書く日も作ることにした。よって、できるだけ毎日、書くことを目標とする。がいつまで続くか分からない。でも、継続は力なり。飽きっぽさ解消の治療薬として続けてみる(笑)
2003.01.05
コメント(0)
去年のアクセスログを眺めた。全部はとってはいないのだけど、時々保存していたのだ。で、co.jp と ac.jp を見ていると、うーん、やっぱりこの分野はまだ限られた範囲の人しか興味をもっていないのかなーという感じだった。つまり、ドメイン名を見るだけで、あぁ、あそこかと分かってしまうようなものが多い。CMS にしても、自然言語処理もいまいちマイナーなのね。Googleで「人工無能 Python」で検索すれば、このページがトップに出てくるけど、そういう探し方をする人はいないみたいだ(笑)。だいたいできあがってもいないものがトップに来るのもヘンだな。「人工無能 Python Eliza」までいったら、ほとんど全滅だものなー。日本以外のサイトだと「artificial intelligence Python Eliza」なら、287件、「artificial intelligence Python」にいたっては、67100件だよ。「人工知能 Python」だとわずか 197件。「人工知能」が61,900件。「artificial intelligence」が1,540,000件。日本だと人工知能の検索に比べて人工知能 + Python が0.3%。全ウェブだと 4.35%。「人工知能 Java」が 5,400件。「人工知能 Perl」1,250件、「人工知能 lisp」が1,710件、「人工知能 prolog」が1,490件。「人工知能 scheme」425件。「人工知能 smalltalk」419件。そうすると、人工知能関連では、Java → Lisp → Prolog → scheme → smalltalk → Python ということか。なんていう検索はある意味当てにならないのだな。「人工知能 COBOL」だと 640件なのだ(爆笑. COBOL は主として事務処理系で使われてきた言語)。コンピュータの歴史みたいな話のページに両方出てくる可能性が高いからこういうことになるんだろう。とはいえ、Java がこの分野でかなり重要な位置を占めるようになってきたことだけは間違いないだろう。日本語のページを対象に言語ごとに検索してみると、Java は 86,200件、Lisp 49,700件、Python 60,100件、Scheme 29,900件、Prolog 19,000件、SmallTalk 24,300件、COBOL 43,300件、Fortran 42,600件。さて、ここで Perl 389,000、Ruby 289,000件だ。やっぱりそれぞれ宝石の名前とかぶるから桁違いになる。Python は蛇のパイソンともダブるけどやっぱりああいうものを趣味とする人は少ないだろうし、モンティーパイソンの Python も熱狂的な人はいるだろうけど、やはり限られている。直接関係ないページを省くようなアルゴリズムで件数を計算できるとおもしろいのだがな。まあ、プログラミング固有の単語を入れてやれば、もう少しちゃんと分かるだろう。「def python」で検索すれば、まあ、よほどのことがない限りそのページはプログラミング言語としての python だろうし、「java buffer」で検索すれば、よほどのことがないかぎり Java コーヒーにはならないだろうし。ということで検索結果のページ自体の内容を簡単にフィルターしていけば、ほんとは、もう少しまともな結果が得られるだろうがまあいいや。あと、ジェネラルな記述を消去していくとかね。あ、やっぱりもう少しだけ。「人工無能 Java」が 2,430件。「人工無能 Perl」が 1,720件。なんにせよ、Java の普及度はかなり高くなっているみたいだ。[人工知能」61900件、「人工無能」14,400件。「人口無能」2,990件。うーむ、人口無能はやっぱり人工知能にはかなわないのだなー。こうやって、継続的にときどき、検索件数を記録しておいて、たまに推移を見ると面白いことが分かるだろう。ちなみに Zope だと日本語サイトで 53,100件、Python が 60,100件。全ウェブで、Zope が 11,200,000、Python が 4,840,000件。Java が 31,900,000件。JDK 92,600件、JRE 255,000件。ふーん、Monty Python と、蛇の Python、ギリシャ神話の Python、魚の Zope が果たしている役割は、けっこう大きいということだろうか。Monty Python を排除しようとして Monty があったら排斥しようとしても、それこそ Python を作った Guido van Rossum 氏のページまで省かれてしまうだろうし、Zope の開発プロセスは fishbowl プロセスとか言われているから、なかなか排除するのが難しいのだな。そうすると、やっぱりリンクもある程度追わないと、重要なページを削除してしまうことになる。さてさて、とにかく今年もマイナーの楽しみをじっくり味わうことにしよう。○ 形態素解析(MeCab)の呼び出しを関数に (Python で人工無能)前回、関数の作り方をちょっとやったので、今回は MeCab を呼び出しているところを関数化してしまうことにする。で、さっそく次のようにしてみる。def keitaiso_kaiseki(s): from popen2 import popen2 fi, fo = popen2(’"c:¥¥program files¥¥mecab¥¥bin¥¥mecab"’) fo.write(s) fo.close() klist = fi.read() fi.close() sentence = [] for gyou in klist.split(’¥n’): keitaiso = gyou.split(’¥t’) dic = {} if len(keitaiso) == 2: dic[’表層形’]= keitaiso[0] n = keitaiso[1].split(’,’) dic[’品詞’]=n[0] dic[’品詞細分類1’]=n[1] dic[’品詞細分類2’]=n[2] dic[’品詞細分類3’]=n[3] dic[’活用形’]=n[4] dic[’活用型’]=n[5] dic[’原形’]=n[6] dic[’読み’]=n[7] dic[’発音’]=n[8] sentence.append(dic) return sentenceで、これが保存されているファイルを読み込んだら、次のようにしてみる。作成した keitaiso_kaiseki 関数に解析させたい文字列を渡してやって、変数 result に結果を保存する。>>> result = keitaiso_kaiseki("今日はあなたに会えてよかった。")そうしたら、今度は、解析結果から一部を1行ずつ(形態素の1つ1つを取り出しながら、ディクショナリ形式で保存されている情報を引っ張り出して表示してやる。>>> for k in result: print k[’原形’], k[’品詞’], k[’活用形’], k[’活用型’]今日 名詞 * *は 助詞 * *あなた 名詞 * *に 助詞 * *会える 動詞 一段 連用形て 助詞 * *よい 形容詞 形容詞・アウオ段 連用タ接続た 助動詞 特殊・タ 基本形。 記号 * *実際の結果(result)の中身は、こんな感じになっている。>>> print result[{’品詞細分類1’: ’副詞可能’, ’原形’: ’今日’, ’品詞細分類3’: ’*’, ’品詞細分類2’: ’*’, ’表層形’: ’今日’, ’読み’: ’キョウ’, ’活用型’: ’*’, ’品詞’: ’名詞’, ’発音’: ’キョー’, ’活用形’: ’*’}, {’品詞細分類1’: ’係助詞’, ’原形’: ’は’, ’品詞細分類3’: ’*’, ’品詞細分類2’: ’*’, ’表層形’: ’は’, ’読み’: ’ハ’, ’活用型’: ’*’, ’品詞’: ’助詞’, ’発音’: ’ワ’, ’活用形’: ’*’}, {’品詞細分類1’: ’代名詞’, ’原形’: ’あなた’, ’品詞細分類3’: ’*’, ’品詞細分類2’: ’一般’, ’表層形’: ’あなた’, ’読み’: ’アナタ’, ’活用型’: ’*’, ’品詞’: ’名詞’, ’発音’: ’アナタ’, ’活用形’: ’*’}, {’品詞細分類1’: ’格助詞’, ’原形’: ’に’, ’品詞細分類3’: ’*’, ’品詞細分類2’: ’一般’, ’表層形’: ’に’, ’読み’: ’ニ’, ’活用型’: ’*’, ’品詞’: ’助詞’, ’発音’: ’ニ’, ’活用形’: ’*’}, {’品詞細分類1’: ’自立’, ’原形’: ’会える’, ’品詞細分類3’: ’*’, ’品詞細分類2’: ’*’, ’表層形’: ’会え’, ’読み’: ’アエ’, ’活用型’: ’連用形’, ’品詞’: ’動詞’, ’発音’: ’アエ’, ’活用形’: ’一段’}, {’品詞細分類1’: ’接続助詞’, ’原形’: ’て’, ’品詞細分類3’: ’*’, ’品詞細分類2’: ’*’, ’表層形’: ’て’, ’読み’: ’テ’, ’活用型’: ’*’, ’品詞’: ’助詞’, ’発音’: ’テ’, ’活用形’: ’*’}, {’品詞細分類1’: ’非自立’, ’原形’: ’よい’, ’品詞細分類3’: ’*’, ’品詞細分類2’: ’*’, ’表層形’: ’よかっ’, ’読み’: ’ヨカッ’, ’活用型’: ’連用タ接続’, ’品詞’: ’形容詞’, ’発音’: ’ヨカッ’, ’活用形’: ’形容詞・アウオ段’}, {’品詞細分類1’: ’*’, ’原形’: ’た’, ’品詞細分類3’: ’*’, ’品詞細分類2’: ’*’, ’表層形’: ’た’, ’読み’: ’タ’, ’活用型’: ’基本形’, ’品詞’: ’助動詞’, ’発音’: ’タ’, ’活用形’: ’特殊・タ’}, {’品詞細分類1’: ’句点’, ’原形’: ’。’, ’品詞細分類3’: ’*’, ’品詞細分類2’: ’*’, ’表層形’: ’。’, ’読み’: ’。’, ’活用型’: ’*’, ’品詞’: ’記号’, ’発音’: ’。’, ’活用形’: ’*’}]とりあえず、これで MeCab を使った形態素解析を Python からできるようになった。ちなみに、上記のリストは、楽天にアップロードするために全角半角が入り混じっているのでそのままだと動かない(全角の記号はすべて半角に直してやる必要があるし、スペースも全角で入っているので注意)。まあ、本当はオブジェクト指向的に作り直してやった方がよいし、そもそもエラー処理ぐらい入れんかいという話もある。ちゃんと抽象化してインターフェイスもきっちり分けて、MeCab と Chasen と Juman を簡単に切り替えられるようにとかした方がいいだろうし。なんていうのは、考えないことにする。とりあえず動きゃいいんだよ。そもそも、MeCab.exe のパスだって埋め込んでるレベルなんだから、Windows でしか動かんじゃない(笑)。で、次は、いよいよ、ここで得られた情報を使って何かしてみよう。かと思いきや、やっぱり形態素レベルで分かち書きされているだけより文節にちゃんと分かれていた方が使いやすいので CaboCha/南瓜 を使って係り受け解析までやってからの方がいいな・・・。と誘惑に駆られる。たが、モデル作成に毎日新聞のデータを使っているので研究目的以外での利用は原則として認められないということだ。遊びに使うとあとで怖いので、CaboCha の方は手をつけないことにする。ブツブツブツ(以下、省略)。
2003.01.04
コメント(0)
寒い日だった。家に縮こまっていたのだが、コンビニに行くために夜外に出たら雪がちょっとだけ積もっていた。なんだ、どうも寒いと思ったら雪が降ったのか。しばらく前にTed Nelson の Xanaduについて、日記に書いたことがある(Ted Nelson と Xanadu (2002/07/17) 、知識をいかに蓄えるか、そして Xanadu(2002/07/13))。で、ZigZag プロジェクトについても、ちょっとだけ触れた。この ZigZag をオープンソースで Java 言語を使って作っている人たちがいたのだな。Gzz がそれだ。いったんは GZigZag という名前になっていたのだが、ZigZag は登録商標の問題があるということで、Gzz になったらしい(zz は Ted Nelson が唱える ZzStructure の zz からきているようだ。ZzStructure は、端的に言えば、情報をどのような形でコンピュータに蓄えるかという構造)。この Gzz 自体は、Ted Nelson のプロジェクトではなくて、Tuomas J. Lukka という人が中心になって、Ted Nelson が協力する形で行われているもののようだ。ちなみに、Gzz では Java で効率的にプログラミングするために、Jythonを使っているようだ。日本語の情報は、Jython.jpでチェックできる。TedNelson- Ted Nelson Home PageXanado- 伝説の『ザナドゥ』ついにコード公開- Xanadu Australia- Xanadu Goes Open Source- Xanadu Goes Open SourceZigZag- ZigZag- "The MULTIDIMENSIONALITY of ZigZag"- COSMICBOOK
2003.01.03
コメント(0)
新しい年になったので、とりあえずなんか新年感じるような本を読んでみようと思った。で、『ネクスト・ソサエティ-歴史が見たことのない未来がはじまる』(P・F・ドラッカー, ダイヤモンド社, ISBN4-478-19045-3)を読んだ。さすがに、大御所だけあってよくまとまった本だった。ドラッカーは、1909年生まれなのだな。1929年の恐慌も経験しているし、2度の世界大戦も経験している。だからこそ冷静に歴史をとらえられるところがある。アメリカが非営利団体( NPO, Non Profit Organizaion) がさかんで、その他の国ではどうして NPO が坂にならないのかといえば、それは、「国民国家なるものの公僕がコミュニティなるものを破壊してしまったからである」なんていうのは、まっとうな考えだ。また、知識労働者を社会現象としてちゃんととらえなおしている。また、インターネットなんかについても、けっこう早い時代から認識していて「eコマースにおいてはわれわれが今日生産と読んでいるものは調達ということになる」なんて書いてある。これってよくよく考えてみると深い言葉なのだな。92才で健在で、これだけまとまった本が書けるというのは、ほんとうにすごいことだと思う。ちなみに上のリンクはamazon.co.jp に張ってあるが、日経BP企画の書評はなんだかなぁと思う。最後の分は「結果として」とせめて入れておかないと、もう、ぜんぜん違った意味になってしまうよ・・・と思う。特にアメリカの中に日本の官僚が無用だし、邪魔者だと考えるような人たちがいるが、現状としてそれに変わるエリート層がいないのであるから、官僚が指導者層となっているのは不可避であるし、それを急速に解体したら社会はガタガタになってしまうし、また、そう簡単に息の根を止められるようなものでもないので、単純な官僚排斥などは間違っているといっているだけなのではないか。積極的に官僚にリーダーシップをとれなんて書かれていない。むしろ、失敗してばかりしてきたと書かれている。何もしないことが結果としてうまくいったように見えるパターンもあるが、それは単に結果論としていっているだけだし。官僚に任せて日本が進めば明るい未来が待っているなんて一言も書かれていない。むしろ、これはしょうがない。不可避であると言っているのだろう。でなければ、最後の章でわざわざ NPO についてまたまとめるようなことはしないはずではないか。一番最後の章「第4章 NPOが都市コミュニティをもたらす」を読んでいて、ふと思った。まず、「都市社会の文明化が、あらゆる国、特にアメリカ、イギリス、日本などの先進国にとって最重要課題となる」という点はもっともなことだ。田舎社会というものは、牧歌的でなんだかよいもののように思える半面、そこでのコミュニティーは、「強制的かつ束縛的」なものであったし「侵害的」なものでもあったからこそ田舎の人が都市に出たがったという面をとらえている。単に経済的問題だけでなく、社会現象として捉えると、そういう見方ができると思う。都市社会は魅力的ではあるけれども、「匿名の社会」で無法につながる側面がある。そこには、コミュニティが欠如している。コミュニティが欠如しているからこそ、新しい芸術家や学者のしあがることも可能だと。で、こういう記述を読んでいると、2ちゃんねるが頭に浮かんでくる。2ちゃんねるのようなものは、日本のインターネットの都市、歌舞伎町のようなところなのだなぁと。ドラッカーの本を読んでいて、それほど新鮮に感じることはなかったのだが(違和感はなく、基本的に正しい思考だなぁと思った)、逆に言えば、92才の老人の思考から踏み出た考えをそれほど持たない自分もふがいないと思った。しょうがないので NPO が結局、そのコミュニティとしての役割を果たせずに、数十年後には、より自分の好みに合った集団を形成すべく住居の移動が始まるとでもしておくことにしよう。つまり、現在は仕事によって住処がある程度限定されているが、好みによって住処の比較的自由な移動が指向されるようになる。より、緊密な共同体を目指して。ところが、そこには、束縛が生じ、新たな都市の創生へとつながっていく。これは、ネクストではなくて、その次の次の段階の社会だ。すでに、その動きは少しずつでてきているが、まあ、大勢となるのは先の先のお話だ。いずれはこうなるという話は、「いつ」というのが特定できない限りは、たわごとに過ぎない。当然に見えるようなことも、ちゃんと時代に即した思考をするのは案外難しいことなのだ。人形のロボットがやがては、人間社会の中に溶け込んでいく時代が来るのはまあ確実なことだろうが、それが「いつ」であるかを正確に予想し、その社会を的確に記述し、その上で的確な発言をするのは難しい。なんにせよ、ドラッカーの本なんかは、新しく感じなかったとしても、今、的確に書かれているところが偉いんだと思う。老人パワーはあなどれないと思う。
2003.01.02
コメント(0)
年が明けると、なんだかやる気になってくるのが不思議だ。今年は思い切りガラにもなく頑張ることにした。とはいえ、この日記の更新はちんたらやるに違いない・・・でも、一応、今年のうちに、まともな人工無能を仕上げることにしようと思う。ということで、今日は人工無能の話はお休み。#脈絡が・・・。だって1年長いもの。
2003.01.01
コメント(0)
全28件 (28件中 1-28件目)
1

![]()
![]()