K40c上で行ったところ、計算終了まで54.7時間(~2.3日)かかりました。今回1エポックで学習を行いましたが、10エポックで学習を行うと単純計算して23日もかかることになります。依存するので注意が必要です。学習時は文を分かち書きしておく必要がありましたが、適用時にはその必要はありません。関数を、あらかじめ以下のように書き換えて、日本語に対応させる必要があります。list_sent_parsed]ここではMeCabを用いて分かち書きを行っていますが、学習時と同じ辞書を使う必要があることに気をつけてください。アルゴリズム紹介時に述べたように、モデルのロード時には事前に学習したWord2vecモデルを必要とします。作成した単語辞書とモデルのパスで置き換える必要があります。時に単語embedding間のリッジ回帰が行われるため、上記コードの実行には数分かかります。[u'ここで入力した文にskip-thoughtベクトルが与えられます。■類似した文の検索ここでは学習したSkip-thoughtモデルを用いて、Skip-thoughtベクトル間のコサイン類似度を計算することにより、検索クエリとして与えた文に最も類似したWikipediaの文を検索したいと思います。事前学習したWord2vecモデルとして、同じWikipediaのコーパスを用いて学習した、次元数300のモデルを使用します。「こんにちは、アナリティクスサービス本部の三浦です。クエリとして与えた際の、類似度が高い文は以下のとおりです。奥さんどうもすいません、三平です。みなさん、これがチューバッカです。33歳みんなの妹、大村小町です。~こんにちは、女優の相楽樹です。つなげてくださったのは小田さんです。0.768「呼びかけ」+「、」+「名前」で高い類似度となることがわかります。事前学習したWord2vecモデルを用いているということもあり、名前らしき単語がきちんと認識され、Skip-thoughtベクトルに反映されているということがわかります。ちなみに「~こんにちは、女優の相楽樹です。」の方が類似度が高そうに思えますが、これはテキストの前処理が不完全で、本文にチルダを含んでしまっているためです。チルダを除去した「こんにちは、女優の相楽樹です。」との類似度は0.801となり、1位の文よりもこちらの方が類似度が高くなることがわかります。「研究会もいいですけど、研究もしたらどうですか。検索クエリとして与えます。思想的に世の中を変えたと思っているじゃないですか。いうのがいいじゃないですか。いうほうが盛り上がるもんじゃないですか。越地の人が来るのを期待しているようですが、力不足ではないでしょうか。本当に批判するんだったら、ぐうの音も出ない批判をすればいいじゃないですか。0.781語尾が「じゃないですか。」で終わる文が、高い類似度となっています。4位と5位の文の方が言い回しとしてはクエリに似ている気がしますが、登場する単語がクエリに似ていないために、そこまで類似度が高くなっていないものと思われます。5位の文を「本当に研究するんだったら、ぐうの音も出ない研究をすればいいじゃないですか。」と、単語を置換することで類似度は0.870まで増加します。「研究」を「勉強」にすると、クエリとの類似度は0.810となります。一方で2位や3位の文にはクエリと共通する単語もあまりなく、類似度が高くなる理由がよくわかりません。いま検索クエリと「じゃないですか。」という文の類似度は0.780となるため、そこから下手に単語を追加しないことで、高い類似度をキープしていると考えることができます。「いつの時代でも必ず立ちはだかる逆境に遭遇したとき、その中でも力強く生き抜く、やり遂げる、という意志を持って立ち向かってほしいと願っています。クエリとして与えます。これは当社の社内報に掲載された、代表の佐藤から今年入社した新卒社員に向けたメッセージ中の一文です。成功している時も奢らず、失敗した時も落ち込まず、という風に自分なりに理解しています。私たちは一緒にいることができないというだけの理由で、団らんの時を頻繁には持てないのだと理解しています。戦争で荒廃した国土を立て直し、かつ、改善していくために当時の我が国の人々の払った努力に対し、深い感謝の気持ちを抱いています。誰も見てくれていなかったとしても、将来の自分、10年後、20年後の自分が見てくれています。衆生の一切の悪因縁を絶ち、終世に一切の至福をもたらす事の出来る大法が秘められているといわれています。0.835そもそもクエリが長い場合、どのような文が似ているのか直感的に把握するのは難しくなります。いま文をベクトル化して類似度を算出しているだけなので、文中のどの部分が特に類似しているかを可視化することはできません。そのような中でも名言らしき文や、スピリチュアルな文を類似度が高いとして抽出できていることがわかります。これらの文が登場する文脈(前後の文の内容)というものがある程度決まっており、結果として同じようなベクトルになるのではないかと推察されます。■まとめ長くなってしまいましたが、いかがだったでしょうか。Skip-thoughtベクトル同士のコサイン類似度を計算することで、構文・意味的に近い文の抽出が可能となることが理解いただけたかと思います。今回は類似した文の検索だけに留めましたが、文を数値ベクトル化することで検索の他にもさまざまな場面で応用が可能です。前後の文との関係性を考慮するというアルゴリズムの特性上、会話文などと相性が良いのではないかと思います。データが自然言語である必要はありません。アイテムを単語とみなし、1回の購買アイテムを文とみなせばSkip-thoughtを適用できることから、POSデータを用いたマーケティングなどにも応用できるかもしれません。さまざまな場面に応用できそうなSkip-thoughtですが、デメリットとしては学習に長い時間がかかることが挙げられます。論文中では計算を回せば回すほど良いベクトルが得られるとありますが、数十日計算を実行するのは現実的ではないと思います。学習を高速化した手法としてFastSentなど後続の手法が次々と考案されており、機会があればここでまたご紹介させていただきたいと思います。GitHub当社は、深層学習などの技術をビジネスに活用するべく、最先端の取り組みを積極的に実施しています。ウィキペディア日本語版」(http://ja.wikipedia.org/)2017年4月27日12時(日本時間)時点での最新版を取得しました。採用ページスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。