読者です 読者をやめる 読者になる 読者になる

フツーって言うなぁ!

フツーなサラリーマンのフツーな嘆き.

国際学会AIRS2015に参加してきた

研究 雑記

気がつけば前に記事書いてから3ヶ月経ってました…
文章を書く習慣をつける目的でブログを続けてきましたが,一度途切れるとやる気が無くなってしまうの,本当に良くないですね.

本題.
修論の内容をまとめた論文が国際会議に通ったので,有給取って参加してきました.

今回参加したのは,AIRS2015という会議.
"IR"という文字が示す通り,情報検索系の研究が中心の国際会議で,オーストラリアのブリスベンで開催されました.

AIRS2015

以下に参加記を記しますが,会議メモというよりは,ほぼ旅行記だと思ってもらえれば.

  • 1日目(移動日)

幸いにも,成田<->ブリスベンは今年の8月から直行便が出ているらしく,そちらで向かうこととなった.

f:id:lethe2211:20151206155743j:plain

  • 2日目(会議初日)

会議当日5時*1ブリスベン国際空港着というなかなかのきついスケジュール.
とりあえずホテルに荷物を預け,会場のクイーンズランド工科大学に向かった.

f:id:lethe2211:20151206155929j:plain f:id:lethe2211:20151206155947j:plain

f:id:lethe2211:20151206160001j:plain ↑会場

現地は夏だと聞いていたので,半袖のTシャツも持って行ったが,25度ぐらいのちょうどいい気温.*2

f:id:lethe2211:20151206160042j:plain

会場付近でしばらく時間を潰していると,会議がスタート.

最初のキーノートセッションは,量子力学の考え方を,情報検索における適合性の考え方に導入しようという試みについての講演.
正直,よくわからなかった…

この日の昼に自分の発表があった.
内容は,検索エンジン結果ページ(SERP)の改善について.

f:id:lethe2211:20151206160029j:plain

発表自体はトチらずに終わらせたが,英語での質疑応答があまりにもできず,質問者に日本語で話させるという,国際学会ではありえない失態を犯してしまった.

↑つらい

その後のポスターセッションでは,大きなスクリーンに圧倒されながらも,お酒を飲みながら,つたない英語でポスターやデモの話を聞いていた.

f:id:lethe2211:20151206160219j:plain

f:id:lethe2211:20151206160232j:plain f:id:lethe2211:20151206160241j:plain

  • 3日目(会議2日目)

この日最初のセッションに,2つ目のキーノートがあった.
検索における正解集合(テストコレクション)をどのように作っていくか,という話.
現在の情報検索の研究は,従来の「適合」「非適合」といった単純なものではなく,検索者の様々な要求に対応する必要があり,それに応じて,テストコレクションの方も,評価者の専門性を考慮したり,ユーザのごとの視点の違いを取り入れる必要がある,とのことだった.
こちらは,内容的にも自分たちの分野と近く,比較的聞きやすかった.

あとは,自分の発表が終わったこともあり,のんびりと発表を聞きつつ,後輩とお昼休みに外に出て,大学の近くを流れるブリスベン川を眺めていたりした.

f:id:lethe2211:20151206160508j:plain f:id:lethe2211:20151206160521j:plain

会場の大学で見つけた面白いもの.
ポスターセッションでも使われた大きなモニタに,重力や元素への理解を深めるための(?)タッチパネルを使ったゲームや,果ては,全く関係ないブロック崩しができたりする.
どこに金をかけてるんだろう大学というよりまるで科学館のアトラクションのような展示だった.

f:id:lethe2211:20151206162044j:plain f:id:lethe2211:20151206162055j:plain f:id:lethe2211:20151206162109j:plain

この日のセッション終了後には,バンケットという形で,ブリスベン川を遊覧するディナークルーズがあった.

f:id:lethe2211:20151206160550j:plain f:id:lethe2211:20151206160615j:plain f:id:lethe2211:20151206160623j:plain f:id:lethe2211:20151206160636j:plain f:id:lethe2211:20151206160646j:plain

  • 4日目(会議最終日)

この日もセッションを聞きつつ,ちょこっと抜け出してコアラ見に行った.

行ってきたのは,ブリスベン郊外にある,Lone Pine Koala Sanctuaryという動物園.

Lone Pine

f:id:lethe2211:20151206161038j:plain

日本では珍しい動物のコアラだが,この動物園はコアラの保護区になっているらしく,そこら中コアラだらけで,もはやありがたみが薄くなるレベル.

f:id:lethe2211:20151206160845j:plain

また,コアラを抱いて一緒に写真を撮ることができる場所があり,もふもふのコアラを抱いたまま引きつった笑顔で写真に撮られていた.

コアラかわいい.けど結構重い.*3

他にも,カンガルーに直接触れられる場所があったり,カモノハシ見れたり,カラフルな鳥に餌をやるイベントがあったり…
ブリスベンに来る機会があれば絶対に行くべきスポットだと思う.

f:id:lethe2211:20151206160919j:plain f:id:lethe2211:20151206160941j:plain f:id:lethe2211:20151206160953j:plain f:id:lethe2211:20151206161004j:plain f:id:lethe2211:20151206161012j:plain f:id:lethe2211:20151206161019j:plain f:id:lethe2211:20151206161028j:plain

ブリスベンの町並み.
観光地って感じはしないけど,キレイで普通に良い街だと思う.

f:id:lethe2211:20151206165811j:plain f:id:lethe2211:20151206165815j:plain

市街に戻ってきた後は,tukka restaurantという,地球の歩き方に載ってたレストランで夕食.
メニューにはカンガルーの肉やエミューの肉なんかもあって,せっかくだし食べようと思ったけど,直前で日和ってアヒルを食べてしまった.
これ,たぶん後で「食べとけばよかった」って後悔するやつだな…

f:id:lethe2211:20151206161142j:plain

その後は,Queen Street Mallという,ブリスベンの中心街をブラブラしたり,カジノに行ったりしていた.
後輩氏はスロットで掛け金を2倍にしている中,わずか3分で10$を擦り,自分にギャンブルは向いていないと再び痛感.

f:id:lethe2211:20151206161219j:plain ↑カジノ

それまでは,会場とホテルを往復するだけだったが,この日は結構観光できて楽しかった.

  • 5日目(移動日)

帰りの飛行機は朝早く出発だったので,出発後特に何かすることもできず空港まで直行.

おみやげにワインとお菓子を買って,飛行機に乗った.
飛行機内で見た,「ミッション・インポッシブル」の新作と,「夜は短し歩けよ乙女」*4が面白かった.

f:id:lethe2211:20151206161309j:plain

夜は短し歩けよ乙女 (角川文庫)

夜は短し歩けよ乙女 (角川文庫)


こんな感じです.

国際会議への出席は2回目ですが,口頭発表したのは初めてだったので,質疑応答がつらかったですね.
もっと英会話うまくなりたいです.

学会について. 採択率はfull paperで32%(29/92)と,そこまで高くない会議です.
発表者がポスター・デモ発表含めて40人程度と,あまり規模が大きくなく,すべてシングルセッションで聞くことができるため,「発表をする/聞く場」としてよくできているな,という印象でした.
著者同士のコミュニケーションもわりと活発だったので,初めて行く国際会議としては結構いいところだと思います.

こういう学会に出るたびに,自分も何か研究続けたくなりますね…

*1:時差があるので日本的には早朝4時

*2:結果的に半袖は不要だった

*3:オーストラリアの中でも,地域によりルールが異なるらしく,コアラを抱けるのは実質この動物園だけらしい

*4:行く前に買った

「人工知能は人間を超えるか」を読んだ

書評 勉強

表紙に釣られて読みました.

著者,松尾豊先生は,日本における人工知能分野のトップクラスの研究者の一人です. Webにおけるビッグデータ分析と,その人工知能への応用について研究しておられます*1

松尾 豊

本書の主題として挙げられているのは,タイトル通り,「人工知能は人間を超えるか」です. 現在,Googleによるネコ画像の認識技術の公開や,IBMの質問応答システム「ワトソン」がクイズ番組で優勝するなど,人工知能分野は,メディア等でたびたび話題に上がる「春の時代」となっています. こういったものの裏返しとして,人工知能については様々な情報が錯綜していることから,「人工知能によってこれから実現するようになることと実現しないこと」,「人工知能の技術を使ってできることのうち,本当にすごいこととそこまですごくないこと」などを,研究者としての冷静な視点から紹介していく,というのが本書の目的となっています.

本書の流れとしては,まず,人工知能の現在までに至る研究の歴史を紹介し,人工知能の定義を,「気づくことのできる」コンピュータ,つまり「データの中から特徴量を生成し現象をモデル化することのできるコンピュータ」とした上で*2,これからの人工知能関連技術の発展についての著者の予測を述べるという形で締めくくられています.

人工知能研究の歴史

本書では,人工知能研究には大きく分けて,

  1. 第1次AIブーム:「推論」,「探索」をベースとした「古典的な」人工知能の時代(例:パズルを解くためのプログラム).パズルやゲームなどは高速に解けるようになったが,現実の問題が解けないため廃れてしまった.
  2. 第2次AIブーム:「知識」の導入による人工知能の汎用化(例:エキスパートシステム.人間がルールベースの「知識」をコンピュータに与えることで,病気の診断や投資判断などに役立てる).「知識」の定義は難しいことと,それを人間が与えるには莫大なコストがかかることがネックとなった(フレーム問題,シンボルグラウンディング問題).
  3. 第3次AIブーム(現在):「機械学習」の導入,特に「ディープラーニング」の発見による人工知能のさらなる飛躍(例:サポートベクターマシン,ディープラーニング).パターン認識の分野技術を応用し,大量のデータに対して分類器を構築することで,自動的な「学習」が行えるようになる.特に,「ディープラーニング」を始めとする「特徴表現学習*3」では,今まで手動で設定していた,分類のための特徴量についても,自動で構築することが可能になり,データさえあれば,ほぼ全自動で分類器を構築することができるようになる(「目が2つあって,ヒゲが生えてて…」のような「ネコらしい画像の特徴」を人間が与えることなく,ネコの画像とそうでないものを分類することができる).

の3つの時代があるとしています.

自分は情報系の大学出身ですが,人工知能については残念なほどにわかなので,人工知能研究の歴史的過程をまとまった形で知ることができただけでも,「この本を買った価値はあったな」と感じることができました. 特に,ディープラーニングについては,名前こそ聞いたことがありましたが,具体的に何か知っていたわけではなかったので…

また,自分が面白いと感じたのは,言語を「シニフィアン(記号としての言語,「ネコ」という字面,発音など)」と「シニフィエ(概念としての言語,「ネコ」というものは,目が2つで,ヒゲが生えてて…というアレ)」に分けた上で*4,「シニフィエ」に機械学習における特徴を対応させるという考え方です. 本書で挙げられていた例として,今までの人工知能は言語の「意味」を理解することができないため,シマウマを知らない状態で「シマのあるウマがシマウマである」という情報だけを与えられても,「シマ」と「ウマ」に対応する概念が理解できないため,「シマウマ」を理解できないという問題がありました*5. これに対し,「特徴表現学習」では,こうした概念を「特徴量」と「その値(概念)」をセットにして学習することができるようになるため,「シマ」,「ウマ」それぞれに対する「シニフィエ」を学習することができるようなり,後は,それらが「シマ」,「ウマ」であるという「シニフィアン」さえ与えられれば,上記の情報から「シマウマ」を新たに定義できるようになります. 言語の概念を機械的に定義する手法としては,Mikolovらのword2vecが有名ですが,こういった考え方自体は前からあったものだったというのが発見でした.

人工知能研究の「これから」

その後は,「特徴表現学習」という大きな武器を得た人工知能のこれからについての話になります.

詳しくは本書を読んでいただきたいのですが,「データから特徴量を学習する」という大きな山を超えた人工知能は,最終的には,人間の言語を(字面だけではなく,概念として本質的に)獲得し,大量にある言語データから知識を獲得できるようになる,と著者は予測しています. そうなった時,おそらく人間にはとうてい太刀打ちできないような「知能」が誕生するのでしょう.

同時に,著者は,少なくとも現状の研究を進めていくだけでは,「人工知能が自らより賢い人工知能を作ったり,人間を征服しようとしたりする」未来は訪れないとしています. 人間と違い,人工知能には「生命」が結びついていないため,自己を複製したり,何かを征服しようとする「本能」が存在し得ないから,というのが理由です.

完成した人工知能というのは,本質的にはただただ「世界の分類器」であり,世界中の事象をセンサから学習し,分類アルゴリズムにしたがって予測を行う,自分が子供の頃に描いていた「スーパーコンピュータ」のようなものなのでしょうか?

加えて,著者は,特徴表現学習によって生み出される「人工知能」が,必ずしも「人間の知能」を模倣したものにならない可能性を指摘しています. 特徴表現学習によってコンピュータが獲得する「概念」が人間のそれと必ずしも一致しないためです.

同じ「ネコ」というものを,人間とコンピュータが全く別の「概念」として認識するというのは,一見直観的ではないように感じられますが,よくよく考えてみると,人間一人一人にしても,同じものに対して同じ「概念」を持っているのではないので,不自然なことはないのだろうな,と思いました. もしこのギャップが本質的なものではなく,努力によって埋められるものであれば,コンピュータと人間の相互理解,なんてことも現実になるのかもしれません.

産業への影響

最後に,人工知能の飛躍によってもたらされる,産業への影響について述べられています.

読んでいて面白かった部分として,著者は,人工知能技術を一部の企業が独占することについての懸念を述べています. 特徴表現学習をはじめとするこれからの人工知能技術は,学習結果から,リバースエンジニアリングなどによってその中身のアルゴリズムを知ることが非常に困難です. そのため,一度よい学習アルゴリズムを作ってしまえば,それを秘匿した上で学習結果のみを公表する形でのビジネスモデルが形成可能であり,それを進めていくうちに,よい学習結果が得られるところにデータもどんどん集まっていく…という,独占の構造ができあがってしまいます.

様々なIT企業がこぞって人工知能分野に手を出しているのも,こういったことを睨んでということなのでしょうが,人工知能が人間を征服する世の中よりも,よっぽど起こり得るこわい話だな,という印象でした.


「シンギュラリティ(技術的特異点*6」という言葉があります. 定義はいろいろあるようですが,要するに,近々,人間より知性のある人工知能が誕生し,それが人間に取ってかわりこれからの技術革新の担い手となる,という考え方です. これまでも,人間の歴史の中でこういったパラダイムシフトは何度かありましたが,今度は,人間が最も誇りにしていた「知性」を機械に取られてしまう,というわけですね. そうなった時,人間はどうやって生きていったらいいのか,僕の人間の仕事はどうなるのか,というのは非常に考えさせられる話題でした.

また,本書の特徴として,なるべく数学的な話には触れず,直感的な理解を促すような例示をしながら解説するような配慮がなされている点が挙げられます. 人工知能に関しては,抽象的な話題が多くありますが,特に数学的な素養がなくとも読み進められるようになっており,これ一冊で人工知能の歴史と展望について,十分に理解することができるのではないかと思います.

「イヴの時間 劇場版」 [Blu-ray]

「イヴの時間 劇場版」 [Blu-ray]

*7

*1:自分も一度だけ講演を聞く機会がありました

*2:データを中心に人工知能を考えるのも,ビッグデータ分析に携わってきた著者の特徴的な考え方なのかな,と感じました

*3:"Representation learning"の本書における日本語訳

*4:https://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%8B%E3%83%95%E3%82%A3%E3%82%A2%E3%83%B3%E3%81%A8%E3%82%B7%E3%83%8B%E3%83%95%E3%82%A3%E3%82%A8

*5:これを「シンボルグラウンディング問題」というそうです.初めて知りました

*6:https://ja.wikipedia.org/wiki/%E6%8A%80%E8%A1%93%E7%9A%84%E7%89%B9%E7%95%B0%E7%82%B9

*7:本書帯のキャラクターは,こちらのアニメ「イヴの時間」に出てくるアンドロイド,サミィです.「イヴの時間」は,人間とアンドロイドの共生を描いた,非常に考えさせるSF作品なのでぜひ見ていただきたいです

Web系企業に入社して4ヶ月,思うこと

雑記

気づいたら1ヶ月記事書いてませんでした.
放置してる間になぜか前の記事がホッテントリに入ってました.な,何を言ってるk(ry

b.hatena.ne.jp

本題.

就活という名の血を血で洗う厳しい競争の末,なんとか希望だったWeb系企業に入社して4ヶ月が経ちました.
現在,夏休みを頂いてゆるゆる暮らしております.

実際に企業に入ってみて,外から見ているだけではわからないような,いいこと悪いこといろいろあったのですが,備忘録も兼ねて文章に残しておこうかと思います. なるべく,自分の学生時代に漠然と考えていた「かいしゃ」のイメージとの比較で書けたらいいなと思っています. なお,実名については一切出す気はありませんので,もし読んでいて何かを察したとしても心の中にとめておいてください…

よかったこと

お金がもらえる

当たり前のことですが非常に大事です.

金銭を得られるということは,生活にある種の自由度が与えられるということであり,例えば,学生時代には行けそうもなかった,6,000円/人の居酒屋とかに行けたりするわけです. これは,その人のメンタリティや,その人が関わるコミュニティの変化にもつながってきます.

また,与えられる金銭が,その人にかかる「責任」への対価であるということも重要です. 遅刻一つ例にとっても,学生時代にはせいぜい怒られて済む問題ですが,企業だとその分確実に給料から引かれ,ヘタをするとクビになる可能性すらあります.よく言われることではあるのでしょうが,自分のやっていることに責任を持つということが,社会人になるということの大きな意味なのかなとは感じました.

コードが書ける

企業を選ぶ時点で,「Excelと戯れるだけでコードを書かない」タイプの企業ではないと思っていましたが,わりとコーディングの機会も多そうで,その点は満足しています.

現在はOJTという形で,PHPSymfonyを使った小規模開発案件を1つ任されています. やはり,自分が書いたプログラムが世間様にさらされ,サービスとして使われるというのは感慨深いものがありますね.

ちなみに,コーディングスキルそのものについては,研修も含め,誰も教えてくれませんでした. 一応,入社試験にプログラミングの試験が含まれているので,新卒にもある程度のスキルは担保されているのだと思いますが,そういう意味では即戦力を求められているのかなと感じました.*1

向上心の高い人が多い

エンジニアとして最も大切なことは,「今より良い方向へ改善する」という気持ちだと思います. その点,先輩社員の方々は,ただ今のシステムに詳しいだけでなく,常に「次はこれをどうしていったらいいか」を考えられる人たちだと感じました. また,業界柄か,転職によるステップアップを考えている方も多そうでした.

ギャップを感じたこと

コードを書くだけが仕事ではない

これは,企業/部署によって大きく違うと思うので,あまり強く主張できないかもしれないのですが.

自分もITサービスをかじったことがあるのである程度はわかっているつもりなのですが,趣味のコーディングとは異なり,企業でのシステムは「開発してハイ終わり」というわけにはいきません. 作ったものを運用し,適宜改善していくことではじめて,継続的に価値を生み続けられるものになるのです.

私が実際に業務に入ってすぐに感じたのは,「あ,このシステムの仕様全部把握するの無理だ…」ということでした. 企業の規模が大きくなるにつれ,システムの規模も大きくなり,かつ複雑化していきます. 企業としてビジネスを回していく以上,可用性の極めて高いシステム作りをしていく必要があり,そのために,「そのシステムについてはなんでも来いの専門家」というのが絶対に必要になってきます. その「システムの専門家」は,技術的にシステムに詳しいことはもちろん,他部署からのシステムについての質問や改善の要望にも答えないといけませんし,トラブルが発生した時には対処する必要があります.*2 また,退職,休暇など,その「システムの専門家」が会社からいなくなる可能性もあるので,*3他の人を教育する必要もあります. 加えて,システムの全体像に関するドキュメント,仕様書などを書く必要があります. これも,システムが改修されるとすぐに古くなったり,散逸してしまうので,適宜更新していかないといけません. こういった「地味な」運用業務を行うことも,エンジニアとして重要なのだと感じたのは,企業に入って得られた気づきなのかなと思っています.

使える技術の制限

前項で述べたように,ビジネスを回すことを中心にシステムを運用することを考えると,(イケてそうだけど)「信頼できない」技術に手を出すのが怖くなるのも仕方ないのかな,とは思います. それに加え,特に大企業になると,開発に携わる人の技術力・システムへの熟練度もピンキリになってしまいます.*4 そこで,開発ノウハウやライブラリが蓄積されている技術を使うことで,起こる問題を減らすということが行われています.

救いなのは,多くのエンジニアが「それはよくないことだ」と捉えて,常に新技術を使える可能性を模索し続けていることです. 初めは社内ツールなど,比較的影響の少ない所から始めてノウハウを蓄えていき,徐々に本番環境にも適用していくという形が一般的なのかなと思いました.

コミュ力は大事

結局,この記事はこれが書きたかっただけなのかもしれません.

「Web系の技術職なんてコードを書くだけの仕事なのになぜコミュ力が必要なのか」,私もコミュ力を要求する面接を受けながらそう思っていました. しかし,今考えてみると,直属の上司,他チーム,他部署の人たち,などなど,会社内部の様々な人達と関わることが,この仕事の本質なのだろうかとすら感じるようになってきました.

前述の通り,大規模なシステムの全てを理解するということは非常に困難であり,仕様を把握するだけでも,コードから全てを読み解くのは相当の時間を要します. また,その人がいかにスーパーなエンジニアであっても,その企業独自の仕様(自分が経験したものとして,社内ツールの使い方,ドキュメントの場所,サーバの独自仕様とか)については,事前知識として知りようがありません. こういう「外からでは勉強しようのないこと」は,自分が考えていた以上に多かったです. このように,「聞かなければわからないこと」,また「聞かなくてもわかりそうだけど聞いたほうが早いこと」については,さっさと聞いて覚えてしまうことが重要です. また,大きな企業だと,多人数(といってもうちの部署はアジャイルが中心なので10人弱ぐらい)で開発を行ったり,アプリケーション担当とシステム担当が部署的に分かれていたりして,他部署に依頼する形でサーバの設定を行うことなんかも多々あります.

ここで言う「コミュ力」とは,気のおけない友達と楽しくやるための能力ではなく,面識のない人(や苦手な人)と上手くやっていく能力です. *5 一度も話したことのない人に絡みに行くのは,コミュ障の自分には結構つらいものがありましたが,それでも「これも含めて仕事だ」と思うようにすることで,なんとかやっていっています.

番外

可処分時間の大幅な減少

学生時代に比べると,自分の自由にできる時間は感覚的に1/5ぐらいになっていると思います. 定時に働く必要があるのはもちろん,帰ってからも疲れが残っているため,なかなかその後に何かしようという気にもなれません.*6 逆に,土日を有効活用して遊びに行ったり,読書をしたりということは増えたような気がします. 要するに,時間が少なくなった分,メリハリを付ける必要に迫られるわけですね. 何が言いたいかと言うと,もう少し休みをください…

「同世代」コミュニティの崩壊

これもよく言われることですが,10代後半~20代の人間がほとんどを占める大学と比較して,企業では20代以上の様々な世代の人が一緒に働いています. もちろん,Web系企業は比較的「若く」,自分の会社でも40代以上の人はあまり見かけないのですが,それでも話が合わないことが結構あります. これは,友達を探す上で非常に厄介. うーむ,なんとかならんものか…


自分が入社したのはWebサービスを自社で開発,運用しているタイプの大企業であり,「Web系企業」と題するのは主語が大きい気はするのですが,雰囲気は感じ取ってもらえたかと思います.
自分の就活時代を思い出すと,エンジニアとお話させていただく機会は何度かありましたが,このような「ナマの感想」を聞く機会はあまり多くなかったように思います.*7
参考になれば幸いです.

SHIROBAKO 第8巻 (初回生産限定版) [Blu-ray]

SHIROBAKO 第8巻 (初回生産限定版) [Blu-ray]

*8

*1:大変な分,子供扱いされずに一人の社員として見てくれるのは嬉しくもあります

*2:トラブルはわりと頻繁に起こります.その際は直接会社へ行くか,リモートで解決することが多いようです

*3:これはWeb系全般に言えることだと思いますが,離職率が高く,本当にぼつぼつ抜けていきます

*4:これに関しては,Web系はまだマシな方だと思います

*5:個人的には,この2つは全く別の能力だと思っています

*6:そこら辺はバイタリティによるのかもしれませんが

*7:先方が話したがらなかったというよりは,こちらの発想力が貧困で,聞きたいことをうまく掘り返せなかったといった方が正しい?

*8:24話の「目先のことばかり考えている時期はもう終わりだよ。そろそろ、少し高い所から遠くを見る時がきたんだよ。」というセリフが本当に刺さります.早くBDで見たいです

言語処理100本ノックを(第5章まで)やってみた

Python 研究

久しぶりに技術関係のネタ書きます.

「言語処理100本ノック」という,自然言語処理関係の問題集があることを知ったので取り組んでみました.
これは,東北大学乾・岡崎研究室でのプログラミング勉強会にて使われている教材だそうです.
「100本ノック」の言葉通り,100問の問題からなる問題集をこなすことで,自然言語処理に関する基礎力と,プログラミング言語運用能力が同時に培えるようになっています. こういうものが公開されるとは,「いい時代になったなー」と純粋に思います.

www.cl.ecei.tohoku.ac.jp

内容は,自然言語処理だけでなく,データベース,機械学習など,今の言語処理関係の研究に必要なスキルがこれ1つで身につくように設計されています.
対象プログラミング言語Pythonのようですが,基本的に他の言語でも問題なく進められるようにはなっていると思います(言語処理に強いプログラミング言語でないと難易度跳ね上がるとは思いますが).

一応,半分(問題49)まで終わらせたので,軽く感想を述べておきたいと思います.*1

Pythonによる実装を

github.com

↑に載せています.

第1章: 準備運動

プログラミング言語を用いた文字列操作の経験があれば,この辺はラクラク進められるのではないかと.

個人的に気になるのは,問題04で,元素記号のディクショナリを作るのに,

{'Be': 4, 'C': 6, 'B': 5, 'Ca': 20, 'F': 9, 'S': 16, 'H': 1, 'K': 19, 'Al': 13, 'Mg': 12, 'Ne': 10, 'O': 8, 'Li': 3, 'P': 15, 'Si': 14, 'Ar': 18, 'Na': 11, 'N': 7, 'Cl': 17, 'He': 2}

ではなく,

{'Be': 4, 'C': 6, 'B': 5, 'Ca': 20, 'F': 9, 'S': 16, 'H': 1, 'K': 19, 'Al': 13, 'Mi': 12, 'Ne': 10, 'O': 8, 'Li': 3, 'P': 15, 'Si': 14, 'Ar': 18, 'Na': 11, 'N': 7, 'Cl': 17, 'He': 2}

になってるところ(12番目が"Mi"になってる).

あと,nltk.tokenizeは英文をいい感じにTokenizeしてくれるめちゃくちゃ便利なライブラリなのでみなさん使いましょう…*2

第2章: UNIXコマンドの基礎

言語処理というよりはUnixコマンドを用いたTSVファイルの扱いの練習.
「わざわざスクリプト書かなくてもここまでできるんだー」というのが個人的な学びだった.

sortとuniq -cのコンボとか,cut辺りはググりながら進めたので要復習ですかね.*3

第3章: 正規表現

ここからが本番.
難易度もかなり高くなる.

まず,入力である,イギリスについてのWikipedia記事のソースコードがそこそこ汚いため,MediaWikiの文法通り書いても正規表現にマッチしたりしなかったりするのが苦痛だった.
問題27,28辺りは,期待される出力を出すのが精一杯で,他のWikipedia記事にこのプログラムを適用してもうまくいかないような気がする.

正規表現を使う際は,

RegExr: Learn, Build, & Test RegEx

のように,視覚的にマッチされる文字列が見えるサービスを使って出力を確認しながらやるのが精神的にいいと思う.*4

正規表現のグループ化と最短マッチを初めて使った.
なかなか使いこなせていない部分もあったが,勉強になった.
でも二度とやりたくない.

第4章: 形態素解析

第3章で削られたSAN値を回復するのにちょうどいい箸休めだった.
MeCabはこれまで何度か使った経験があったし,問題も比較的簡単(もちろん頻出な操作だが)だったように思う.

問題37,38,39では,matplotlibを使用した.
Pythonを使ったデータ分析でよく用いられる可視化用のライブラリで,今回初めて利用したが,あまりデザインにこだわらなければすぐにグラフを出力できるような気がした.
これからもデータ分析をやっていきたいと考えているので,ぜひとも習得したい.

あと,今回の実装では,cPickleモジュールを用いて形態素オブジェクトの永続化を行っている.
これは,Python専用のデータ構造で,Pythonオブジェクトであれば簡単に内容の保存,再利用が可能になる.
自分はよくキャッシュの用途でcPickleを用いることが多いですね.

第5章: 係り受け解析

CaboChaを用いて係り受け解析を行った結果をさらに分析していく.
最初,ダウンロードしてきたテキストを

$ curl http://www.cl.ecei.tohoku.ac.jp/nlp100/data/neko.txt | cabocha > neko.txt.cabocha

てな感じでCaboChaにかけたが,

EOS
EOS
         ---D
      吾輩は-D
    猫である。
EOS
名前は---D
    まだ-D
    無い。
EOS
EOS
 どこで-D
  生れたか-----D
      とんと---D
        見当が-D
        つかぬ。
EOS
        何でも-D
          薄暗い---D
      じめじめした-D
                所で---D
          ニャーニャー-D
                  泣いて---D
              いた事だけは-D
              記憶している。

のように,構文木だけの表示になってしまい(簡易Tree表示というらしい),「ここからどうやって構文解析したらいいんだ」ってなった.

正しくは

$ curl http://www.cl.ecei.tohoku.ac.jp/nlp100/data/neko.txt | cabocha -f1 > neko.txt.cabocha

こう.

これで,

* 0 -1D 0/0 0.000000
一      名詞,数,*,*,*,*,一,イチ,イチ
EOS
EOS
* 0 2D 0/0 -0.764522
       記号,空白,*,*,*,*, , ,
* 1 2D 0/1 -0.764522
吾輩    名詞,代名詞,一般,*,*,*,吾輩,ワガハイ,ワガハイ
は      助詞,係助詞,*,*,*,*,は,ハ,ワ
* 2 -1D 0/2 0.000000
猫      名詞,一般,*,*,*,*,猫,ネコ,ネコ
で      助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ
ある    助動詞,*,*,*,五段・ラ行アル,基本形,ある,アル,アル
。      記号,句点,*,*,*,*,。,。,。
EOS
* 0 2D 0/1 -1.911675
名前    名詞,一般,*,*,*,*,名前,ナマエ,ナマエ
は      助詞,係助詞,*,*,*,*,は,ハ,ワ
* 1 2D 0/0 -1.911675
まだ    副詞,助詞類接続,*,*,*,*,まだ,マダ,マダ
* 2 -1D 0/0 0.000000
無い    形容詞,自立,*,*,形容詞・アウオ段,基本形,無い,ナイ,ナイ
。      記号,句点,*,*,*,*,。,。,。
EOS
EOS

上記のような,「lattice形式」と呼ばれる,計算機で扱いやすい形で解析結果が表示されるようだ.

その後は,わりとサクサク進められたほうだと思うが,問題49だけが,問題の意味を読み解くのに時間を要した.

問題49では,コーパスの各文について,

  1. 名詞句(名詞の連続)を含む文節を2つ探す(これらの名詞句が含まれる文節の番号をそれぞれi,jとする.i < j).

  2. 文節iが含む名詞句を"X",文節jが含む名詞句を"Y"に,それぞれ置き換える.

  3. 文節iから述語(構文木の根)までのパス,文節jから述語までのパスを求め,

    • 文節iからのパスが文節jからのパスを完全に包含していれば,文節iから文節jのパスを表示
    • そうでない場合は,文節iのみに含まれるパスの要素,文節jのみに含まれるパスの要素,両方のパスが合流してから述語までのパスのそれぞれを,"|"で連結して表示.

という操作を行うのだと思う.

でも,これだと,問題49の例の,

Xは | Yで -> 始めて -> 人間という -> ものを | 見た
Xは | Yという -> ものを | 見た
Xは | Yを | 見た
Xで -> 始めて -> Y
Xで -> 始めて -> 人間という -> Y
Xという -> Y

の最後の3パターンに合わない(Yの後に助詞がつくべき)ので,もし間違ってたら指摘欲しいです…


もちろん,教科書を読むことも重要だと思いますが,こういう風に実装してみることで,より理解が深まる部分もあると思います.
また,実際に研究を進める際にも,プログラミング言語の運用能力はあるに越したことはないと思います.
教材として,重々しい課題というよりは,面白さを重視した設計になっているとは感じたので,一度取り組んでみてはいかがでしょうか?

*1:本当は4月から解き始めていたのですが,「さすがに10問解いたぐらいで記事書いてそのまま放置,だとカッコ悪いな」ということで,50問解くまでは記事を書かないようにしてました.3ヶ月ちまちまやり続けてやっとここまで来れたので,個人的には一段落かなと

*2:NLTKのインストールが必要

*3:この前grepが使えなくて上司に笑われたのを思い出す

*4:正規表現は言語ごとに少しづつ文法違うのが厄介だが…

「きんいろモザイクと英語レッスン」を読んだ

英語学習 書評

「きんいろモザイク」と英語レッスン

「きんいろモザイク」と英語レッスン

発売日に買って,「流れに乗り遅れないうちに記事書くぞ~」って感じで1週間ぐらいで読了したまでは良かったのですが,なぜか最近あまり文章を書く気が起こらず,こんな時期になってしまいました.

きんいろモザイクと英語レッスン」は,アニメ第2期が大人気放送中の「きんいろモザイク」をモチーフとした英語学習本です.
きんモザキャラと一緒に英語が学べる!という触れ込みにまんまと釣られ心惹かれて購入しました.

ご存じの通り,「きんいろモザイク」は,日本の高校にイギリスからの留学生がやってくるお話であり,「異文化交流」が作品テーマの一つになっています. 特にアニメ版では,声優さんが流暢な英語を話すシーンが結構ありますし,もともと英語学習との親和性が高い作品なのではないでしょうか.

この本では,アニメ第1期から印象的なセリフを抜粋し,思い出のシーン画像とともにシノ達が振り返る,という形で話が進んでいきます.
例えば,第1話,アリス(シノのホームステイ時)の"Can I sleep next to you?"から,"Can I?"の使い方を勉強したり,第3話でアリスとカレンが英語で話している時の"Have you already tried Natto?"から,"Have you?"についておさらいしたり.
その後に続く会話では,アリス,カレンが教師役,忍,綾,陽子が生徒役となり,講義が進んでいきます.
しかし,そこはきんモザ,普通のおしゃべりではありません.
相変わらずキンパツのことしか考えてないシノ,そこにツッコまないアリス,陽子のことしか見えてない綾に,とにかくその場をひっかきまわそうとするカレン…
普通にマンガを読む感覚で読み進められました.*1
所々挟まるコラムでは,イギリスの風習や英会話のコツなど,思わず「へー」と言いたくなる知識が載ってました.

アニメ,マンガをモチーフとした参考書は世の中に数多くありますが,*2 どちらかと言うと中高生向けのものが多く,「学習参考書」の側面が強いのではないかと思います.
ですが,この本は,いわゆる「大きなお友達」を対象にしているからか,受験英語というよりは,実際の英会話に重点を置いた構成になっているように感じました.
いい歳したサラリーマンがこの本片手にニヤニヤとしながら勉強してる様子を思い浮かべたらなかなか笑えてきますね(棒読み)

欲を言うなら,せっかく英語の上手い声優集めてるんだし,学習用CDとかつけてほしかったなー,とかですかね.
CV東山奈央の英会話CDとかあったらたぶん毎日聞いてる気がします…

*1:この手の本にありがちな,極端に偏差値の高い会話も少なかったように思います.作られた方はきんモザをよく理解しておられるのでしょう

*2:現に,私が本屋でこの本を手に取った時,隣には「進撃の巨人」の英語参考書がありました

「ネイティブなら子どものときに身につける英会話なるほどフレーズ100」を読んだ

英語学習 書評

CD付 ネイティブなら子どものときに身につける 英会話なるほどフレーズ100 (スティーブ・ソレイシィの英会話シリーズ)

CD付 ネイティブなら子どものときに身につける 英会話なるほどフレーズ100 (スティーブ・ソレイシィの英会話シリーズ)

Amazonでそこそこの評価だったので買って読みました.

自分自身,中学から大学院までずっと英語は勉強してきたつもりで,TOEICの点数も800台後半くらいは持ってます.
実際,この本で出てくる表現を見ても,大半が「言われればわかる」というものでした.

でも,いざ英語で誰かと話そうとすると,全く言葉が出てこない.
「これ借りていい?」みたいな簡単な表現すら,頭に浮かんでこないのです.

この本のまえがきには,

日本人は英語になると器用貧乏なのかもしれない

ということが書かれています.

発音や慣用句に関する知識は多くあっても,それを使いこなす基礎的な会話能力についての学習が不十分なため,外国人を目の前にして何もできなくなってしまう,ということです.

このことを著者らは,

道具箱からいったいどれを取り出して、どう使えばいいのかがわからないほど、道具が雑然としまわれている

と表しています.

道具箱の中の道具をどうやって(できるだけ素早く)取り出せばいいのかを考え,実践していくことが,当面の自分の課題なのだと感じました.

この本の特徴は,言葉を覚えたばかりの赤ちゃんが徐々に成長していく過程になぞらえ,非常にシンプルな表現から難しい(といっても中学英語レベルです)ものに進んでいっているという点です.
例えば,最初の"BABY"のチャプターでは,"Here."(はいどうぞ)や,"Not yet."(まだだよ)のような,本当に向こうの子どもが言いそうなフレーズが並んでいます.
こういう簡単な表現を復習することにより,「あまり難しいことを考えなくてもちゃんと受け答えできるんだ」と考えることができるようになりました.

あと,この本では,表現を使うべきシチュエーションについての説明と例文に紙面を割き,文法事項などの他の要素はできるだけ省かれています.
これにより,「話すための英語」の学習に集中することができるようになっていると思います.
特に,(ネイティブと話す際には)微妙なニュアンスの違いなどに注意したいですね.

フレーズの数が100とそれほど多くないため,これだけで「英語が話せるようになる」とは言いがたい部分はありますが,焦点を絞った良書だと思います.
この本を何度も読み返すことで,英語を使いこなすための基礎力をつけていきたいです!


話は少し変わりますが,最近,東京特有の殺人的な通勤電車に押しつぶされながら,TOEIC presents English Upgraderをやっています*1

TOEICの本家本元が出しているAndroid/iOSアプリで,TOEICテストのPart 3のような,会話を中心としたリスニングの問題を聞くことができます.
各問にスクリプトと解説が付いているだけでなく,全部無料でできるというのが,太っ腹というかなんというかだと思います.
こういうアプリにありがちな広告も,今のところ見かけていないです.

これもおすすめです.

*1:どうでもいいですが最近ケータイをiPhoneに替えました

英語の勉強がしたい

英語学習 雑記

GWですが,特にすることもなく実家でゆるりと過ごしております.
どうでもいいですが,繁忙期の夜行バス高すぎです.

本題.

現在,研修でスクラムを用いたチーム開発をしているのですが,言葉の壁が立ちはだかって,十分に相手に意思を伝えられないことがありました*1
また,配属面談は英語だったのですが,第一志望の部署との面談で「スキルセットは大体うちの部署が欲しい感じだね.後は……イングリッシュかな」と言われてわりとガチ凹みしました*2

今まで,英検,大学受験,TOEICなどの試験勉強での英語学習はしてきましたが,実際の会話に向けた勉強は全くしてきませんでした.
畳の上の水練という言葉がありますが,私の英語力は,畳の上でフォームを寸分狂いなくチェックし続けた結果のものなのでしょう.

英語を意思疎通のツールとして使うだけなら,"will"と"be going to"の違いなんてどうでもいいのです.
"should"と"ought to"を書き換えられたところで何の意味もないのです.
そんなことよりも,「これから研修で何をやるの?」とか,「その服似合うね」とか,「今週末飲みに行かない?」とかの表現を(できれば反射的に)適切に引っ張り出してきて話せる方が圧倒的に大事です.

"Yes"でも"No"でも"ハロー"*3でもいいから,とにかく自分の意思を英語で伝えられるようになりたい.
そして,それに対する他の人の反応が知りたい.
そのためには,ある程度会話のパターンを覚えることと,とりあえず英語で話しかけて,失敗から学ぶことが必要だと痛感しました.

というわけで,GW前に買った英会話の参考書を読んでいます.
読み終わったら,読書録でも残しておこうかと.

CD付 ネイティブなら子どものときに身につける 英会話なるほどフレーズ100 (スティーブ・ソレイシィの英会話シリーズ)

CD付 ネイティブなら子どものときに身につける 英会話なるほどフレーズ100 (スティーブ・ソレイシィの英会話シリーズ)

「きんいろモザイク」と英語レッスン

「きんいろモザイク」と英語レッスン

*1:Web知らない人にBootstrapを英語で説明するにはどうすればいいんだ

*2:その時はただ「はい…あ,はい…」というしかなかった

*3:TVアニメ「ハロー!!きんいろモザイク」絶賛放送中!