90年代でとまった知識でホームページを作成してみた
ここ最近WPA2の脆弱性でちょっと忙しくなってしまい、やっとこさ落ち着いて、さらに久しぶりに何も予定がない週末を迎えました。そこでなにを思いついたかホームページを作ってみようと思いったってしまいました。人間、暇な時間を与えてしまっていけないという一つの証拠となります。作るのは、きれいにスタイルを整えたかっちょいいWebページとかブログとかではなく、90年代の「ホームページ」だ。このホームページも誤用がそのまま定着してしまったものなのですが、90年代のインターネットを表す言葉としてとても有用になってしまったと思います。
タイトル文字化けてらぁ。 意外とタグを覚えているなぁと思いました。ほとんどHTMLタグを確認をしなくてもできました。体が覚えている。というか結局ここまでのレベルまでで、ここから先のかっちょいい、スタイルシートやらJavaScriptやらCGIには行けずに飽きてしまいました。つまみ食いしてはほかに行くスピリッツはこの時代から変わってないです。
90年代にGeoCitiesのWebサーバサービスを使ってこんな感じのホムペを作成して、見知らぬ人とちょっとした交流をしていました。Yahooに買われたとはいえ、いまだにGeoCitiesでできるのは感慨深いです。90年代掲示板といえばBBSだろとおもって検索したら teacup の掲示板を発見!当時も使ってたよ。これもGMOが運営しているようです。カウンタは当時はGeoCitiesで提供していたと思うのですが、今はやっていないようです。そこで、こちらも老舗のNinjaツールでカウンタを作成しました。
いままで書いたPythonスクリプトをまとめてみようかな、とも思うのですが、まあGitHubの使い方覚えてそこに入れろよ、と私の中のLittleホンダがささやいていて、どうしたもんかなと思ってます。たぶん、更新をしていくこともないと思いますが(ぉい)、もう少しパワーアップをしてみようかとも思ってます。久しぶりにフレームを使いたい気もします。
Chainerをつかった助詞の学習システムを作る (2)
続き
前回は助詞を学習して、正しい助詞をSuggestするシステムを作りました。ただ、テストをしてみたところ正答率が50%超とちょっと微妙な正解率。はじめてにしてはよかったと思うけど、でも実用的には使えないです。目標としては90%越え、できれば95%といったところでしょうか。
とりあえずいろいろ試してみる
せっかくなので以下のように学習方法を変えてみて検証結果に変化が出るか確認をしてみることにしました。
- 学習する記事の量を増やす (Double)
前回は1日分の記事でしたが、とりあえず2日分入れてみるとどうなるでしょうか - 学習する前後の単語を増やす (15Words)
前回は前後の10ワードずつ入れていましたが、15ワードに増やしてみるとどうなるでしょうか - 学習するモデルを変える (GRU)
前回は本に書いてあるがまま、LSTMで試してみましたが、さらに本に書いてあるままにGRUモデルで変化がでるのかを試してみます。
基準として前回の学習内容を (Single) というラベルを張っています。
結果をどん
- Double: 最高で70%程度の正解率、やはり上がってますね
- 15Words: こちらも同じく70%程度に上がっていて、効果がみられます
- GRU: 正解率は Single と同程度ですが、学習を繰り返すとしり上がりによくなっている?
- 全体を通して、学習は10~15 epoch内で終わってしまっていて、50までは不必要そうだが、微妙な変動で正解率に差がでている?
次は欲張って、全部組み合わせて正解率がどれくらい上がるのかみてみます。 学習する記事は4日分、前後15wordで、なんとなくGRUモデルで学習した検証結果が次のようになりました。
比較はGRUの1日分の記事、10Wordです。最初の方の学習はすごくよく、80%弱ぐらいの正解率までいきます。が、繰り返すをするたびに、だんだんと正解率は低下、ついには GRU にも負けてしまうようになります。学習に1日半ついやしたのに。こりつが過学習というやつなのでしょうか。
以下がまとめたテーブルです。時間とかの数値は裏でいろいろ動かしていたので正確ではないのですが、ご参考までに。また、今回は Chainerに付属するCudaの計算機能を使ってみたのですが、比較として、CPU Onlyの時間も最後に入れています。条件は Single 相当です。
まとめ
学習するサンプルを増やすことは成果はあるようですが、モデルとか回数とかのバランスが難しそうです。この学習に関していえば、正解か不正解かがすぐわかるので、ループさせれば半永久的に学習の追加ができます。 なので現在は新着の記事を読みに行って、間違ったサンプルのセットを自動的に再学習させる、ということを試みています。またまとまったらここに追記したいと思います。 なお、ソースコードの公開もしたいのですが、いかんせんぐちゃぐちゃになってしまっているので、まとめてからだしたいと思います。
<ネタバレ有り> スイス・アーミー・マン
この映画を最初に知ったのは芸人「アルコ・アンド・ピース」のラジオで取り上げられていたことです。
ある島で遭難した主人公がその島で遭遇した死体。その死体はサバイバルに必要な「死体のおならでジェットスキーのように海を渡る」などの便利な機能をもっていた。この時点ですでにぶっとんだ設定ですが、ダメ押しとして、その死体を演じるのがあのハリーポッターのダニエル・ラドクリフということです。これはあれだ、「打ち上げ花火ー」に続く、俺がみなくてはならない案件だ。流行りでいうならばにゃんこスターの「おいらが見なけりゃ、だれがみるってんだい」案件です。
祝日の昼間の映画館で人入りはまあまあ。カップル、女子通し、一人もの、の割合は 3:3:4 といったところでしょうか。 設定がぶっとんでいて、下品なネタも多いので、低俗な笑いで受けを狙う映画、として捉われてしまいそうですが、個人的にはいろいろ思うところがある映画でしたので、すべてを書かせてもらおうと思っています。そのため、ネタバレも含まれます。これから見に行く予定の方はご注意のほどをお願いいたします。
なお、映画を見てすぐに書いてますが、記憶があいまいなところが多く、会話の詳細が間違っている可能性が大きいですが、ニュアンスでとらえていただければと思います。
感想 - ネタバレ有
遭難した主人公はさえない人生をおくっていたさえない若者で、偶然バスで出会った女性に声をかけられずにスマホのカメラで隠し撮りをおこなって待ち受けにするという小心者。家庭環境もあまり恵まれてなく、偏屈な父親と、若くして亡くなった母親へのコンプレックスというのも背景としてかかれています。 遭難したときに偶然遭遇した「死体」の便利な機能に気づき、その機能を使いながら困難を乗り越えていきます。また一方でその死体はしゃべることもでき、ただ生前の記憶はない状態のようで、主人公は死体に言葉、感情、一般的な常識的行動などを教えながらコミュニケーションをとっていきます。
先ほどいったように、「死体のおならでジェットスキーのように海を渡る」「死体の口から飲み水がでてくる」「死体の勃起したイチモツがコンパスのように方向を示す」といった一見すると下品なネタで笑いを取っているだけにもみえてしまいます。実際、映画終わりでそのような感想を言っている声もきいたのですが、私としては下ネタだけで興味を持続させている映画ではないと思っています。
遭難しているという主人公の過酷な環境は言わば、「非常識・非現実」な世界に置かれています。それに加えて、道具として使え、しゃべる死体がいるという状況が非常識に拍車をかけており、その死体とのコミュニケーションのなかで、いままでの自分の生き方、常識と非常識、理想と現実、について自然と問いかけるようになっていきます。そもそもこの非常識な死体には、常識は通用しません。「人前でおならをしないのが常識なんだ」と教わると「わあ、なんて最悪な世界なんだ」(おならを道具として海を渡ったのに、という背景がある。)、などの純粋な感想を投げかけます。さらに終盤でも「そんなに常識にしばられているのに故郷に帰る必要があるのかい?」と主人公に問いかけをします。 また、ほかのポイントとして、主人公はその死体にうそをつくというシーケンスがあります。主人公がバスで隠し撮りした女性の写真に一目ぼれしてした死体は、その女性に会うことをモチベーションとして主人公を手伝うようになります。遭難中の森の中、バスを模した即席のセットを作成し、さらに主人公を女装させ、女性とバスで出会い、声をかけるシチュエーションを演出をしながら2人は絆を深めていくようになります。しかし、バスで出会った女性はすでに結婚していて子供もいるので、なんにせよかなわない恋となります。主人公はそのことを隠しながら死体を盛り上げる趣向を繰り返します。これは遭難、しゃべる死体、という非現実的な状況下でこそ積み上げられる、「現実ではない世界」の中に「理想の世界」を2人で作り上げていることにほかなりません。いわばこの妄想的な世界感においては、こんな非現実な世界でもとがめる人は出てきません。そこはだれも見ていない、自由な空間だからです。これは映画を見ている我々観客もその妄想の世界を一緒に楽しんでいくようになります。
その楽しい非現実世界にも終わりが来ます。現実世界にもどってしまうと妄想を繰り広げる自由はありません。やっと人里におりてきた2人を待ち受けるのは現実世界の人の目です。ボロボロの服をきた主人公、その携帯のカメラにはバスで隠し撮りした女性の画像、森の中には手作りされたバスのセットという妄想の亡骸、そしてしゃべっていた死体は、一般的な常識通りにしゃべらなくなってしまいます。一緒に非現実世界を楽しんでいた観客も、我に返りざるを得ません。私たちが楽しんでいたこの妄想の世界は、一般社会的には超異常な変態的な世界なのだと気づかされるからです。 この現実に戻る直前、死体がしゃべらなくなく前に死体は主人公にこういうのです。「人前で大きな声で歌をうたうことも、おならをすることも、誰かが少しづつ認めてくれれば、変わっていくんじゃないか」。 そして常識の目をもった人たちのまえで、狂人としてとらわれている主人公、そんな主人公はある「一般社会的に非常識的な行動」をします。この行動は常識をうちやぶる奇跡をおこすこととなります。
常識に「自由な発想」をつぶさせない
常識というのは社会生活では必要な規範となる一方、自由な発想を妨げる制約になります。せめて人目が届かないところでは、常識に問われることなく、自由な発想で、自分のやりたいことを突き通してもいいのではという提案にも感じ取れました。もしその発想に共感する人が一人あらわれ、さらに理解者の輪が広がっていけば、いつか常識を覆す新しいパラダイムシフトが生み出される、そんな励ましを勝手ながら感じ取ってしまいました。
そしてラドクリフがすごい!
この映画の見どころはやっぱり死体役のラドクリフとなってきます。便利な道具をおこなう死体、というなんのこっちゃわからない役を怪演しきっていたと思います。ほんと見事な死体っぷりでした。子役時代、ハリーポッターで華々しくデビューした彼ですが、実はこうした怪役のほうが性に合っているのではないかと思いました。日本のドラマでいう高嶋政伸のように、非常識的なキャラクターがぴったりくる印象をもってしまいました。願わくば、この路線を突き進んでほしいものです。
まとめ
このようにぶっとんだ設定や下ネタで笑いを起こして楽しいのですが、実はその裏には社会生活の常識と、それに自然と縛られている私たちの発想、というテーマを垣間見ることができました。入口はただただぶっとんだ映画ですが、持って帰るものも多かった一作、怪作となったのは間違いないと思います。
Chainerをつかった助詞の学習システムを作る
久しぶりにPythonでちょっとおおネタ。複数回にまたがりそうなうえ、個別項目の備忘録も必要になってくるかもしれないですが、見切り発車でGoです。
モチベーション
- 作者: 新納浩幸
- 出版社/メーカー: オーム社
- 発売日: 2016/09/09
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
この本のお勉強の続きで、7章Recurrent Neural Network, 8章で実用のケースとして翻訳モデルの実装方法について記載しています。せっかく得たこの知識を使ってなにか作れないか探していたところ、以下の記事を見つけました。
助詞の訂正かー、これ実装できたら面白うだし、課題としてはちょうどよいかもしれない。ということでコーディングを始めてみました。ちなみにですが、コーディングにつきましては以下のエントリをがっつり参照させてもらっています。この方も助詞検出を機械学習してコードを公開していらっしゃいます。こちらのコードをだいぶお手本として参照させていただきました。
今回作るものはChainer本とこちらのエントリのミクスチャーとなります。id:catindog さんはKarasというPythonライブラリでの実装を行っていますが、私が持っている武器は現在本に記載されているChainerだけなので、Chainerでの実装をめざしてみようと思います。
助詞の検出のための学習
学習のアイデア id:catindog さんの方法を丸々使わせてもらいました。*1
今回の助詞の検出モデルを作成するにあたり、何を学習させる必要があるのかを考えてみます。
助詞は前後の文節の流れで決まります。上の例で、私は/野球、に続く助詞を考えたときに、この後にくる助詞は、「が」、「を」、「も」など、一意に決まりません。しかし後に続く、好き、です、により「が」が適していることが分かります。つまり学習のプロセスは、1. 学習(検出)する文章の助詞をさがす。2.その助詞の前後の文章を入力値、助詞自身が正解の出力値として複数の文章を学習させる。 となります。
学習文章のサンプル取得方法
某地上波のWeb記事を抽出しました。その文章を文節ごとにスペースを空ける「分かち書き」をおこない、その文章の中で助詞にあたる文字を抽出して、その前後の文節を一定数、入力値として登録します。お手本に習い、助詞の前後10ワードずつとしました。
文章の抜き出し方法はそのまま公開するといろいろ問題がありそうなのでしませんが、Beautiful Soupを使っています。また分かち書きは MeCab のPythonモジュールを使いました。正直、ここの分かち書きが難所だと思ったのですが、こんなライブラリが用意されているとはほんとにインターネット時代様様です。
ちなみに、Mecabを使うと以下のような変換が行われます。(わかりやすく間に / を入れています。通常はスペース。)
せっかく得たこの知識を使ってなにか作れないか探していたところ、以下の記事を見つけました。
せっかく/得/た/この/知識/を/使っ/て/なにか/作れ/ない/か/探し/て/い/た/ところ/、/以下/の/記事/を/見つけ/まし/た/。
素敵。これをそのまま別の文節として学習できちゃう。 この例の場合、今回の学習の入力値と出力値は次のようになります。
- 入力1:/得/た/この/知識/を/使っ/て/なにか/作れ/ない//探し/て/い/た/ところ/、/以下/の/記事/を/
- 出力1:か
- 入力2:/この/知識/を/使っ/て/なにか/作れ/ない/か/探し//い/た/ところ/、/以下/の/記事/を/見つけ/まし/
- 出力2:て
学習文章と検証文章について
先ほどのWeb記事の10月1日の記事を学習サンプルとして、10月6日の記事を検証サンプルとしてみました。10月1日のデータ数は以下になりました。*2 学習の繰り返し回数は50にしてみました。根拠なくChainer本の値をそのまま入れただけです。
- 学習するUnit: 7154
- 学習において出てきた単語数: 5241
ちなみに検証の記事については2つ以上の助詞があっても1文章につき、1サンプルとしました。類似の検証用記事が偏ること避けるためなのですが、意味があるかはわかりません。
成功例と失敗例
今回のテストで学習させた結果、以下の例のように助詞を提案してくれます。正解の例と、失敗の例を示します。
正解例
ことし 7月 1 日 から 9月 1 0 日 まで [ の ] 夏山 シーズン の 登山 者 は 合わせ て 2 の 0.999983 に 1.62042e-05 と 4.91623e-07 や 9.80575e-08 で 8.98966e-08
失敗例
の 繁華 街 で は 悪質 な 客引き 行為 など [ が ] 相次ぎ 、 日本語 が わから ない 外国 人 観光 は 0.804192 の 0.0810047 を 0.0239791 が 0.0194065 に 0.00046254
正解率と損失率
今回の学習と検証では以下のような結果となりました。横軸は損失数を減らすようにアジャストした学習の反復回数です。
いえることとして、 - およそ 0.55 ~ 0.60 の正解率。微妙w - 10回の反復で損失数はほぼ0に張り付いてます。この学習では50も繰り返す必要はなさそうですね。
次のステップ
さて、今回のパターンでは微妙な正解率となってしまいました。次回からはこの学習率を高めるにはどうするかを実験してみたいと思います。あと、コードはぐちゃぐちゃになってしまったので、整理してからきちんと公開したいと思います。
追記
最初に間違ったスペルでIDコールを飛ばしてしまいました。お詫びして訂正いたします。
Rhymester Live 公開リハーサル・ゲネプロにいってきた話
10月5日に行われたRhymester Liveのゲネプロに行ってきました。いやー最高だったのですが、どうまとめたもんかと考えているうちに週末に入り、記憶が定かなうちに書きはじめてます。考えが全然まとまってねぇw
Rhymester
Rhymesterとは2MC(宇多丸/Mummy-D)と1DJ(DJ Jin)からなる日本のヒップホップグループで日本のHIPHOPシーンの創世記をささえてきたグループなのです。
Rhymesterの公開リハーサルライブ
で、そのRhymesterのツアー名は、「KING OF STAGE」といい、今回のライブは「KING OF STAGE VOL. 13 ダンサブル Release Tour 2017」の公開リハーサルとなっています。
9月6日に発売されたアルバム「ダンサブル」のリリースLiveツアーを始めるのですが、Rhymesterはここ最近「公開リハーサル・ゲネプロ」というのを最初に行っています。通常のライブチケットより安くして客を入れてリハーサルを見てもらい、そのフィードバックをもって本番のツアーをブラシュアップさせるという試み。
リハーサルといっても、本番さながらのセットでもちろん楽曲も本番と同じクオリティで行われます。一部、映像が間に合ってなかったり、予定のEvent (a.k.a 余興) をスキップしていたようですが内容的には本番とそん色ないQualityで行われます。
感想箇条書き
セットリストやサプライズの内容はネタバレになってしまうので抑えながら箇条書き。
- もちろん今回は新作アルバム・ダンサブルがメインでの構成。今回のアルバムはタイトル通りにノリやすく非常に自分好みでうれしい。
- 始まる前のクラブチッタ松井さんの始まりの言葉。「リハーサルであるため、一部演出、映像が間に合っておりません。ご容赦ください。また2人のリリック等も間に合っておりません。」のエクスキューズに爆笑。
- しょっぱなの3曲はマジあがる。たまらない。
- 新作曲から「テーマつながり」で旧作曲の流れが一つあったが最高だった。昔のライブでいうとアルバムPOP LIFEツアーでの「敗者復活戦」からの「Born to Lose」のような。歴史のあるRhymesterの旧名(迷)曲がフックされるととても気持ちいい。
- 旧作のつなぎで盛り上がる「鉄板」ネタも健在。上がりまくる流れにひと工夫加えてまじヤヴぁい。
- J-HIPHOP リスペクトのカバー曲が登場。そんな昔の曲とは思えないほどやばすぎのカバーだった。全然新曲としてもいける。
- さらに昔のJ曲のカバーもリクエストに登場。J-PopではなくJ歌謡曲の域。さすがの私もカバーしきれないほど古いw なぜそのチョイスw かっこよいんだけどそのチョイスに至った理由がききたいくらいぶっ飛んだ方向(笑) かっこよかったけど。そのあとのMCでハモリを披露する三人のおっさんHIPHOPレジェンドw
- MCは相変わらず面白い。2MCの掛け合いが最高すぎる。個人的には「俺の緩さは半端ないよー」とお決まりのフロウで観客に語りかけるDさんに大笑いしてしまった。
- 通常チケット5500円で、公開リハは3000円。宇多丸「2500円分を差し引いてパフォーマンスしますから。そうしないと割が合わないから!」。Mummy-D「それか2500円分、みなさんにはイヤーな思いをしてもらいます。」
- Mummy-Dさんが髪切ったあと初めてみたけど、似合ってた。マネしたいけど似合わないだろうな。
- 休憩の合間の偽CMはまだ間に合わず過去の迷作選でした。いいね。ひどいね。
- 舞台セットもアルバムのイメージにとてもあっていると思います。
すべてが終わって、クラブチッタの松井さんが「いつも出待ちをしていただいている方がいらっしゃいますが、今日はこのあと深夜までここでミーティングをする予定なのでお控えいただきますようお願いいたします。」楽しく愉快にパフォーマンスるようにみせて、きっちり反省会をその日のうちにおこないまじめにブラシュアップを練っているようです。レジェンドになっても決して手を緩めぬ姿勢にリスペクトで、好きなものを仕事にしている人たちはこうした地道な積み重ねをおこなっているんだと思い知らされました。
お台場にも行く予定なので、「本番」も楽しみにしています。
10年後に1998年を振り返る記事をみてからもう9年
Webクロール中にたまたまBuzzFeedさんの以下のエントリを見つけました。
あれ、これデジャブだなーと思って探したらそうそう、このまとめサイトを見てた記憶だ。
そうか、このまとめ見てからもう9年も経つんだ。というかBuzzfeedさんの19年前を振り返るのって中途半端じゃね? でもなんとなくわかるのですが、感覚的に「1997年が20年前」よりも「1998年が20年前」というほうがちょっと心に刺さるものがあります。それが2007年と2008年でも同じ。下一桁の8は大台にのる直前感を醸し出すマジックナンバーなのかもしれませんね。
ちょっと9年前の痛ニューのコメントについて、9年後の自分がコメントを入れてみます。
55 名前: グラドル(アラバマ州) 投稿日:2008/01/01(火) 00:58:38.53 ID:4teCgfiA0
MXとか2chとかなにやってたんだおれ
9年後、5chになるって言ってもだれも信じないだろうな。MXとかWinnyとかYouTubeなどなどでなくなっちゃいましたね。
64 名前: 建設作業員(埼玉県)[sage] 投稿日:2008/01/01(火) 00:59:35.81 id:oVqD1qdQ0
時のオカリナも10年前の作品に。
さらに9年。ゼルダも新ゲーム機で健在
120 名前: 日本語教師(北海道)[sage] 投稿日:2008/01/01(火) 01:07:06.72 id:zPUln/+60
宇多田ってどんだけ若いんだよw
20年近くたっても35ですからねー
383 名前: 留学生(長野県) 投稿日:2008/01/01(火) 01:46:23.75 ID:E+hBCPSk0
10年間何してきたか? 違うよ、これから10年何をするかが大切なんだよ
2028年を見据えて頑張ります
415 名前: 人気者(東京都)[sage] 投稿日:2008/01/01(火) 01:51:29.71 ID:6AOQYFO+0
人の人生で一番重要な時期って10歳~30くらいだろ この10年が2回くらい過ぎたら人間の人生なんて終わったようなもんだ 30歳からなんて老いていくだけだろ
30半ばを過ぎてきましたが、まだまだこれからのつもりです。
868 名前: 山伏(dion軍) 投稿日:2008/01/01(火) 08:06:11.75 ID:wBQoO+020
未だにスマップや宇多田が人気とか文化停滞しすぎだろw
解散、3人がジャニーズ脱退=>New(s) Mapへ いろいろありますがいまだに活躍中。
423 名前: あらし(アラバマ州) 投稿日:2008/01/01(火) 01:55:23.84 id:fzVGd+k50
ニコ動って10年後にも存在してんのかな? 2ch以上に廃人を生み出すだろ・・・
角川と合併も、課金ユーザの減少がニュースになっています。
442 名前: 人気者(東京都)[sage] 投稿日:2008/01/01(火) 01:58:57.00 ID:6AOQYFO+0
ネットが普及してからおかしくなった ネットで得たものもたくさんあったが失ったもののほうが大きいだろう 10年後はもっとネットが進化してるからどうなるのかな・・・
ネットの中心はPCからスマホへ。You Tuberなるものが職業に。
443 名前: 朝日新聞記者(東京都) 投稿日:2008/01/01(火) 01:59:05.63 ID:3L3hY0id0
オレが1998年に購入したVAIO505 ソニータイマー故障で現在も現役。
584 名前: ダンパ(アラバマ州) 投稿日:2008/01/01(火) 02:36:55.43 ID:1Y0Vdh3+P
10年前のこち亀 <こち亀モンスターPCマシンのキャプチャ・自重> そういやこち亀1000話って96年なのか・・・
こち亀がついに終わりました。このキャプチャは後になってみれば見るほど趣がでてきますね。
682 名前: ボーカル(コネチカット州) 投稿日:2008/01/01(火) 03:24:48.86 ID:+E7EmGMuO
この十年で国の借金がとんでもない額になりました
あっ。。。
829 名前: 愛のVIP戦士(アラバマ州) 投稿日:2008/01/01(火) 07:02:25.80 id:px9pfaj40
平成になってからもう20年も経つのが驚き
平成も30年(31年?)までということになりました。
844 名前: 自衛官(福岡県)[] 投稿日:2008/01/01(火) 07:20:36.47 id:p6cvu58s0
10年後2ちゃんがあるかどうか知らんが、日本はどうなっているのだろうか・・・・
2chは名前を変えましたが、日本は問題を抱えながらまだそれなりにやっていってます。これからの10年もがんばりましょう。
それでは、2028年にまた!
備忘録 - Python/WIn10 64bit でMeCabを導入
最近 Chainer本をやっているのは、ぼんやりと言語系の機械学習をいっちょかみしたいなと考えているからなのですが、そろそろ必要な環境についてもPCへの導入を始めました。その過程のお話し。
日本語の文章を学習させるにあたって必要になるのが「わかち書き」ってやつで、ようは機械に日本語を学習させるにあたり、意味で区切った文節の間に英語のようにスペースなどの記号を入れる必要が出てきます。これって結構難儀だよなって思っていたのですが、あっさりとMeCabというフリーの形態解析エンジンがでてきました。。
MeCab: Yet Another Part-of-Speech and Morphological Analyzer
MeCabは 京都大学情報学研究科−日本電信電話株式会社コミュニケーション科学基礎研究所 共同研究ユニットプロジェクトを通じて開発されたオープンソース 形態素解析エンジンです。 言語, 辞書,コーパスに依存しない汎用的な設計を 基本方針としています。 パラメータの推定に Conditional Random Fields (CRF) を用 いており, ChaSenが採用している 隠れマルコフモデルに比べ性能が向上しています。また、平均的に ChaSen, Juman, KAKASIより高速に動作します。 ちなみに和布蕪(めかぶ)は, 作者の好物です。
これぞ情報の海の産物。めかぶだけに。この時代に生まれてよかったと感じざるを得ませんでした。 これを自分の開発の環境に合わせなくてはいけません。Windows10 64bitのPC上で、Python 2.7を使って動かしています。Pythonも活発な言語なのでこのあたり導入したライブラリの情報がいくらでもあるだろうとたかをくくっていたのですが、実際に導入する方法はちょっとトリッキーでした。ただそのトリッキーな方法もわかりやすく記載したエントリーがでてきます。
hassiweb-programming.blogspot.jp
Mecab 32bitをインストールする。ただ動かしたいのは64bit版なので、そのソースコードをダウンロードして少し情報を書き換えたうえでコンパイル。Pythonモジュールのビルドをしてようやく導入が完了します。
おおむね参照させていただいたページのプロセスで進んだのですが、どうしてもPython モジュールのコンパイルの場所でエラーが発生してしまいます。 曰く、"Unable to find vcvarsall.bat" とのこと。実はこれも先のページのトラブルシュートで記載があったのですが、解決に至りませんでした。*1
なんのこっちゃよくわからず、ぐるぐると検索して回った結果、以下のページで解決しました。
例えば、Python本体がMSC v.1500、つまりVC++9.0(2008)でコンパイルされていてインストールされているVC++が11.0(2012)の場合、 set VS90COMNTOOLS=%VS110COMNTOOLS% と環境変数をセットしてやるとVC++11.0を使ってコンパイルしてくれます。
私の環境だと、Visual Stdio 2015を導入していて、これだとVCのバージョンは14になるようです。一方で、Microsoftから提供されているPython2.7用のコンパイラはVC9となり、Visula Stdioでいうと2008と相当古いものになってしまうのです。VC9のコンパイラがVisual Studio 2008のライブラリを探しに行くのですが、システム上にないためのこのエラーがでてきたということでしょうか。そこで上の環境変数のセットで存在するバージョンのライブラリのパスを設定する必要があったようです。私の環境の場合Visual Studio2015はVC14となるので、以下の設定になりました。
set VS90COMNTOOLS=%VS140COMNTOOLS%
これで、MeCabのPython2.7 (on 64bit) での導入は成功したようです。次のステップは日本語データの収集かな。
以下のサイトでも勉強させていただきました。
*1:よくよく確認すると、正しい対処法が書かれていたようです。解決できなかったのは理解不足が原因ですね。。。