FC2ブログ

誰もがやさしく微笑みあえる、その日まで

東日本大震災で被災された方々、心を痛めた方々に送ります。

来年も、よろしくお願いいたします


 今年の更新は、今回で最後です。

 今年は、『Reborn-Art Festival in 石巻』以外は、ずっとPythonについて書き続けました。
 Pythonについて学んだことを書きましたが、表面的な理解にとどまっていることが多かったです。
 来年は、もう少し、価値がある記事を書きたいと思います。

 記事がPython関連に偏重して、興味が無い方には面白くないと思います。
 個人的に、機械学習や深層学習、自然言語処理を学ぶ必要があるため、しばらくこのような形になります。
 ご容赦ください。

 それでは、来年も、よろしくお願いいたします。
 

スポンサーサイト



テーマ:プログラミング - ジャンル:コンピュータ

Python(パイソン) ~その52:『Chainerによる実践深層学習』の紹介~


 今回は、「Python(パイソン) ~その52:『Chainerによる実践深層学習』の紹介~」です。

  Python (パイソン) はプログラミング言語です。
 オランダ人のグイド・ヴァンロッサムさんが開発しました。
 名前の由来は、イギリスのテレビ局 BBC が製作したコメディ番組『空飛ぶモンティ・パイソン』です。
 Pythonには次のような特徴があります。
  ・とても読みやすい文法
  ・直感的なオブジェクト指向
  ・広範囲に及ぶ標準ライブラリ
 詳細は、以下のリンクをご参照ください。
  http://www.python.jp/about/
  https://ja.wikipedia.org/wiki/Python

 ※注1
「オブジェクト」は、「データと処理の集まり」です。
「オブジェクト指向」は、「オブジェクト同士の相互作用としてシステムの振る舞いをとらえる考え方」です。
 以下のリンクをご参照ください。
  http://tdak.hateblo.jp/entry/20140406/1396773476

 ※注2
 「ライブラリ」は、一種の「道具箱」です。
 様々なライブラリがPythonで記述されており、テキスト処理、画像処理、音声処理、WEBから情報収集、機械学習など様々な機能を持ったライブラリ(道具箱)を利用することができます。
 →SB Creativeから出版された『Python「超」入門』p158を参照しました。
  本にご興味がある方は下記のリンクをご覧ください。
  http://www.sbcr.jp/products/4797384406.html



 私は人工知能を理解するために、Pythonを学びます。
 Pythonには、人工知能に関連したライブラリが豊富にあります。
 以下の順番で学ぶ予定です。
  ①Pythonの文法を理解し、プログラムを書けるようになること
  ②Pythonの各種ライブラリを理解し、使いこなすこと
  ③人工知能に関連したライブラリを理解し、使いこなすこと
  ④現実の問題を人工知能を使って解くこと





 今回は、オーム社から発刊された『Chainerによる実践深層学習』(著者:新納浩幸様)を紹介します。
 この本には、深層学習を用いて自然言語処理を行う方法について、基礎的なことが丁寧に書かれています。
 本の中のソースコードは下記のリンク先からダウンロード可能です。
  →http://www.ohmsha.co.jp/data/link/978-4-274-21934-4/
  →「本ファイルは、本書をお買い求めになった方のみご利用いただけます。本書をよくお読みのうえ、ご利用ください。また、本ファイルの著作権は、本書の著作者である、新納浩幸氏に帰属します」とのことです。
  →ソースコードの意味や実行方法は、本をご参照ください。


 Chainerは、ニューラルネットワークの計算および学習を行うためのオープンソースソフトウェアライブラリです。
 Preffered Networks社が開発しました。
 複雑なニューラルネットワークの構築を必要とする深層学習で主に用いられています。
 Chainerの特徴は、「Flexible(柔軟性)」「Intuitive(直感的)」「Powerful(高機能)」です。
 詳細は、下記のリンクをご参照ください。
  →https://chainer.org/
  →https://www.ossnews.jp/oss_info/Chainer
  →https://ja.wikipedia.org/wiki/Chainer


 Chainerには豊富なチュートリアル(使用方法に関する技術的な説明書)があるので、コードを書いてプログラムを動かしながら、Chainerの使い方を学ぶことができます。
 詳細は、下記のリンクをご参照下さい。
  →https://play.chainer.org/book/1/1/1
  →https://docs.chainer.org/en/stable/tutorial/index.html





 今回は、『Chainerによる実践深層学習』の第9章「Caffeのモデルの利用」を紹介します。
 第9章では、「Caffe」を使って学習したmodelをChainerに読み込んで利用する例が挙げられています。

・「Caffe」について
 「Caffe」は、深層学習のフレームワークの一つです。
 カリフォルニア大学バークレー校で開発されました。
 詳細は、下記のリンクをご参照ください。 
 →http://caffe.berkeleyvision.org/

・「Caffe」を使って学習したmodelを使う理由は以下のとおりです。
 →通常、深層学習modelを作り出すためには、データや計算機を準備して、長時間学習する必要があります。
 →一部の学習済みmodelは公開されています。
 →同じ用途でデータ予測したい場合は、自作しないで公開されているmodelを利用可能です。
 →似たようなmodelを作りたい場合は、公開済みのmodelを初期値として使用することで、短い計算量で所望の予測modelを導き出すことが可能です。
 
・「Ceffe」のmodelの読み込み
 今回は、bvlc_googlenet.caffemodelを読み込みます。
  →https://github.com/BVLC/caffe/tree/master/models/bvlc_googlenet
  →物体画像識別model
  →1000種類のラベルから選択
  →オーム社のウェブサイトからダウンロードした"caffe.py"を実行 
 
・「Ceffe」model評価用のフリー画像入手
 →https://www.pakutaso.com/animal/
 →エイ、インコ、犬、猫 

・modelを使って予測した結果
 →確率が高い上位5候補を表示しました。

例1)エイ
 →圧倒的に「stringray(アカエイ)」の確率が高いです。
 →確率が高い上位5候補
stingray 0.933242
electric ray, crampfish, numbfish, torpedo 0.0448349
tray 0.0081969
tiger shark, Galeocerdo cuvieri 0.00502694
shield, buckler 0.00126844

 →入力画像



例2)インコ
 →「lorikeet(ヒインコ)」と「goldfinch(ゴシキヒワ)」の確率が高いです。
 →確率が高い上位5候補
lorikeet 0.514504
goldfinch, Carduelis carduelis 0.43496
toucan 0.0121087
macaw 0.00973446
rock beauty, Holocanthus tricolor 0.00369879

 →入力画像



例3)犬
 →何種類かの犬が候補に挙がっていて、どれがもっともらしいか悩んでいるようです。
 →確率が高い上位5候補
German short-haired pointer 0.264205
miniature poodle 0.230794
curly-coated retriever 0.159836
standard poodle 0.146018
English setter 0.0575392

 →入力画像



例4 : 猫
 →何種類かの猫が候補に挙がっていて、どれがもっともらしいか悩んでいるようです。
 →確率が高い上位5候補
tabby, tabby cat 0.46045
Egyptian cat 0.330623
tiger cat 0.205539
lynx, catamount 0.00126677
mouse, computer mouse 0.000465012

 →入力画像





 今回で、『Chainerによる実践深層学習』の紹介は終了です。



 以上、「Python(パイソン) ~その52:『Chainerによる実践深層学習』の紹介~」でした。




テーマ:プログラミング - ジャンル:コンピュータ

Python(パイソン) ~その51:『Chainerによる実践深層学習』の紹介~


 今回は、「Python(パイソン) ~その51:『Chainerによる実践深層学習』の紹介~」です。

  Python (パイソン) はプログラミング言語です。
 オランダ人のグイド・ヴァンロッサムさんが開発しました。
 名前の由来は、イギリスのテレビ局 BBC が製作したコメディ番組『空飛ぶモンティ・パイソン』です。
 Pythonには次のような特徴があります。
  ・とても読みやすい文法
  ・直感的なオブジェクト指向
  ・広範囲に及ぶ標準ライブラリ
 詳細は、以下のリンクをご参照ください。
  http://www.python.jp/about/
  https://ja.wikipedia.org/wiki/Python

 ※注1
「オブジェクト」は、「データと処理の集まり」です。
「オブジェクト指向」は、「オブジェクト同士の相互作用としてシステムの振る舞いをとらえる考え方」です。
 以下のリンクをご参照ください。
  http://tdak.hateblo.jp/entry/20140406/1396773476

 ※注2
 「ライブラリ」は、一種の「道具箱」です。
 様々なライブラリがPythonで記述されており、テキスト処理、画像処理、音声処理、WEBから情報収集、機械学習など様々な機能を持ったライブラリ(道具箱)を利用することができます。
 →SB Creativeから出版された『Python「超」入門』p158を参照しました。
  本にご興味がある方は下記のリンクをご覧ください。
  http://www.sbcr.jp/products/4797384406.html



 私は人工知能を理解するために、Pythonを学びます。
 Pythonには、人工知能に関連したライブラリが豊富にあります。
 以下の順番で学ぶ予定です。
  ①Pythonの文法を理解し、プログラムを書けるようになること
  ②Pythonの各種ライブラリを理解し、使いこなすこと
  ③人工知能に関連したライブラリを理解し、使いこなすこと
  ④現実の問題を人工知能を使って解くこと





 今回は、オーム社から発刊された『Chainerによる実践深層学習』(著者:新納浩幸様)を紹介します。
 この本には、深層学習を用いて自然言語処理を行う方法について、基礎的なことが丁寧に書かれています。
 本の中のソースコードは下記のリンク先からダウンロード可能です。
  →http://www.ohmsha.co.jp/data/link/978-4-274-21934-4/
  →「本ファイルは、本書をお買い求めになった方のみご利用いただけます。本書をよくお読みのうえ、ご利用ください。また、本ファイルの著作権は、本書の著作者である、新納浩幸氏に帰属します」とのことです。
  →ソースコードの意味や実行方法は、本をご参照ください。


 Chainerは、ニューラルネットワークの計算および学習を行うためのオープンソースソフトウェアライブラリです。
 Preffered Networks社が開発しました。
 複雑なニューラルネットワークの構築を必要とする深層学習で主に用いられています。
 Chainerの特徴は、「Flexible(柔軟性)」「Intuitive(直感的)」「Powerful(高機能)」です。
 詳細は、下記のリンクをご参照ください。
  →https://chainer.org/
  →https://www.ossnews.jp/oss_info/Chainer
  →https://ja.wikipedia.org/wiki/Chainer


 Chainerには豊富なチュートリアル(使用方法に関する技術的な説明書)があるので、コードを書いてプログラムを動かしながら、Chainerの使い方を学ぶことができます。
 詳細は、下記のリンクをご参照下さい。
  →https://play.chainer.org/book/1/1/1
  →https://docs.chainer.org/en/stable/tutorial/index.html



 今回は、『Chainerによる実践深層学習』の第8章「翻訳モデル」を紹介します。
 第8章では、「LSTM(Long short-term memory)」を用いて「機械翻訳」する例が挙げられています。
 「機械翻訳」とは、ある自然言語を別の自然言語に翻訳する変換を、コンピュータを利用して全て(ないし、可能な限り全て)自動的に行おうとする技術です。
 詳細は、下記のリンクをご参照ください。
  →https://ja.wikipedia.org/wiki/%E6%A9%9F%E6%A2%B0%E7%BF%BB%E8%A8%B3

 「LSTM(Long short-term memory)」は、RNN(Recurrent Neural Network)の拡張として1995年に登場した、時系列データ(sequential data)に対するモデル、あるいは構造(architecture)の一種です。
 その名前は、Long term memory(長期記憶)とShort term memory(短期記憶)という神経科学における用語から取られています。
 LSTMはRNNの中間層のユニットをLSTM blockと呼ばれるメモリと3つのゲートを持つブロックに置き換えることで実現されています。
 詳細は、下記のリンクをご参照ください。
  →https://qiita.com/t_Signull/items/21b82be280b46f467d1b

・訓練データの準備
 第8章に関しては、自分で日英間の対訳データを準備する必要がありますが、前回のブログで準備済みです。

・Encoder-Decoder翻訳モデル + attention
 前回紹介した「encoder-decoder翻訳モデル」に加えて、今回は、注意機構(Attention mechanism)を付加しました。
 複数のベクトルがあった時に、どのベクトルを重要視するかも含めて学習させる仕組みのことを注意機構(Attention mechanism)といいます。
 詳細は、下記のリンクをご参照ください。
  →http://www.ie110704.net/2017/08/21/attention-seq2seq%E3%81%A7%E5%AF%BE%E8%A9%B1%E3%83%A2%E3%83%87%E3%83%AB%E3%82%92%E5%AE%9F%E8%A3%85%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F/

・Encoder-Decoder翻訳モデル+attentionを学習するために、オーム社のウェブサイトからダウンロードした"attention.py"を実行

・翻訳処理を行うために、オーム社のウェブサイトからダウンロードした"test-attentiont.py"を実行 

・翻訳結果
 →input文(日本語)、0回目、10回目、20回目、...、50回目学習終了時の翻訳文(英文)の順に表示
 →訓練データと同じ文は、正確に翻訳可能
 →訓練データの文からほんの一部でも変更があると、翻訳不可
 →今回も、前回同様、学習した翻訳モデルでは、訓練データが少ないせいか、柔軟に翻訳するのは難しそうです。

例1-1:訓練データとinput文が同じ場合
input : 子ども 達 が 英語 の 勉強 を し ました 。
0 : Children studied English .
10 : Children studied English .
20 : Children studied English .
30 : Children studied English .
40 : Children studied English .
50 : Children studied English .

例1-2:訓練データとinput文が一部異なる場合
input : 子ども 達 が 歴史 の 勉強 を し ました 。
0 : Children studied English without any problems .
10 : Children studied English without water to get more .
20 : Children studied English .
30 : Children are around the hot spring .
40 : Children have no small conscious .
50 : Children studied English .

例2-1:訓練データとinput文が同じ場合
input : 彼 が X に 挑戦 する 。
0 : He really feel a mental hotel .
10 : He has been quite sick X .
20 : He will try X .
30 : He will try X .
40 : He will try X .
50 : He will try X .

例2-2:訓練データとinput文が一部異なる場合
input : 彼 が アルバイト に 挑戦 する 。
0 : He has going to understand X .
10 : He is desperate to X .
20 : He has been quite sick the last few days .
30 : He will try X .
40 : He has been making up .
50 : He always have a care of same answers increases .


 次回も、『Chainerによる実践深層学習』を紹介します。



 以上、「Python(パイソン) ~その51:『Chainerによる実践深層学習』の紹介~」でした。




テーマ:プログラミング - ジャンル:コンピュータ

Python(パイソン) ~その50:『Chainerによる実践深層学習』の紹介~



 今回は、「Python(パイソン) ~その50:『Chainerによる実践深層学習』の紹介~」です。

  Python (パイソン) はプログラミング言語です。
 オランダ人のグイド・ヴァンロッサムさんが開発しました。
 名前の由来は、イギリスのテレビ局 BBC が製作したコメディ番組『空飛ぶモンティ・パイソン』です。
 Pythonには次のような特徴があります。
  ・とても読みやすい文法
  ・直感的なオブジェクト指向
  ・広範囲に及ぶ標準ライブラリ
 詳細は、以下のリンクをご参照ください。
  http://www.python.jp/about/
  https://ja.wikipedia.org/wiki/Python

 ※注1
「オブジェクト」は、「データと処理の集まり」です。
「オブジェクト指向」は、「オブジェクト同士の相互作用としてシステムの振る舞いをとらえる考え方」です。
 以下のリンクをご参照ください。
  http://tdak.hateblo.jp/entry/20140406/1396773476

 ※注2
 「ライブラリ」は、一種の「道具箱」です。
 様々なライブラリがPythonで記述されており、テキスト処理、画像処理、音声処理、WEBから情報収集、機械学習など様々な機能を持ったライブラリ(道具箱)を利用することができます。
 →SB Creativeから出版された『Python「超」入門』p158を参照しました。
  本にご興味がある方は下記のリンクをご覧ください。
  http://www.sbcr.jp/products/4797384406.html



 私は人工知能を理解するために、Pythonを学びます。
 Pythonには、人工知能に関連したライブラリが豊富にあります。
 以下の順番で学ぶ予定です。
  ①Pythonの文法を理解し、プログラムを書けるようになること
  ②Pythonの各種ライブラリを理解し、使いこなすこと
  ③人工知能に関連したライブラリを理解し、使いこなすこと
  ④現実の問題を人工知能を使って解くこと





 今回は、オーム社から発刊された『Chainerによる実践深層学習』(著者:新納浩幸様)を紹介します。
 この本には、深層学習を用いて自然言語処理を行う方法について、基礎的なことが丁寧に書かれています。
 本の中のソースコードは下記のリンク先からダウンロード可能です。
  →http://www.ohmsha.co.jp/data/link/978-4-274-21934-4/
  →「本ファイルは、本書をお買い求めになった方のみご利用いただけます。本書をよくお読みのうえ、ご利用ください。また、本ファイルの著作権は、本書の著作者である、新納浩幸氏に帰属します」とのことです。
  →ソースコードの意味や実行方法は、本をご参照ください。


 Chainerは、ニューラルネットワークの計算および学習を行うためのオープンソースソフトウェアライブラリです。
 Preffered Networks社が開発しました。
 複雑なニューラルネットワークの構築を必要とする深層学習で主に用いられています。
 Chainerの特徴は、「Flexible(柔軟性)」「Intuitive(直感的)」「Powerful(高機能)」です。
 詳細は、下記のリンクをご参照ください。
  →https://chainer.org/
  →https://www.ossnews.jp/oss_info/Chainer
  →https://ja.wikipedia.org/wiki/Chainer


 Chainerには豊富なチュートリアル(使用方法に関する技術的な説明書)があるので、コードを書いてプログラムを動かしながら、Chainerの使い方を学ぶことができます。
 詳細は、下記のリンクをご参照下さい。
  →https://play.chainer.org/book/1/1/1
  →https://docs.chainer.org/en/stable/tutorial/index.html



 今回は、『Chainerによる実践深層学習』の第8章「翻訳モデル」を紹介します。
 第8章では、「LSTM(Long short-term memory)」を用いて「機械翻訳」する例が挙げられています。
 「機械翻訳」とは、ある自然言語を別の自然言語に翻訳する変換を、コンピュータを利用して全て(ないし、可能な限り全て)自動的に行おうとする技術です。
 詳細は、下記のリンクをご参照ください。
  →https://ja.wikipedia.org/wiki/%E6%A9%9F%E6%A2%B0%E7%BF%BB%E8%A8%B3

 「LSTM(Long short-term memory)」は、RNN(Recurrent Neural Network)の拡張として1995年に登場した、時系列データ(sequential data)に対するモデル、あるいは構造(architecture)の一種です。
 その名前は、Long term memory(長期記憶)とShort term memory(短期記憶)という神経科学における用語から取られています。
 LSTMはRNNの中間層のユニットをLSTM blockと呼ばれるメモリと3つのゲートを持つブロックに置き換えることで実現されています。
 詳細は、下記のリンクをご参照ください。
  →https://qiita.com/t_Signull/items/21b82be280b46f467d1b

・訓練データの準備
 第8章に関しては、自分で日英間の対訳データを準備する必要がありますが、前回のブログで準備済みです。

・Encoder-Decoder翻訳モデル
 encoder-decoder翻訳モデルは入力から出力までの全ての過程がニューラルネットで記述された翻訳モデルです。
 詳細は、下記のリンクをご参照ください。
  →https://qiita.com/odashi_t/items/a1be7c4964fbea6a116e

・Encoder-Decoder翻訳モデルを学習するために、オーム社のウェブサイトからダウンロードした"mt.py"を実行

・翻訳処理を行うために、オーム社のウェブサイトからダウンロードした"test-mt.py"を実行 

・翻訳結果
 →input文(日本語)、0回目、10回目、20回目、...、90回目学習終了後の翻訳文(英文)の順に表示
 →訓練データと同じ文は、正確に翻訳可能
 →訓練データの文からほんの一部でも変更があると、翻訳不可
 →今回学習した翻訳モデルでは、訓練データが少ないせいか、柔軟に翻訳するのは難しそうです。

例1-1:訓練データとinput文が同じ場合
input : 子ども 達 が 英語 の 勉強 を し ました 。
0 : The city will be a lot of the .
10 : Children studied English .
20 : Children studied English .
30 : Children studied English .
40 : Children studied English .
50 : Children studied English .
60 : Children studied English .
70 : Children studied English .
80 : Children studied English .
90 : Children studied English .

例1-2:訓練データとinput文が一部異なる場合
input : 子ども 達 が 歴史 の 勉強 を し ました 。
0 : The city will be a lot of the .
10 : Children studied up on the brink .
20 : Children studied English .
30 : Children studied English .
40 : Children studied English .
50 : Children studied English .
60 : Children studied English .
70 : Children studied English .
80 : Children completely name once .
90 : Children are in your or Ms. are strategy .


例2-1:訓練データとinput文が同じ場合
input : 彼 が X に 挑戦 する 。
0 : He has been his head .
10 : He is none other than X .
20 : He is already spent a There a lot of time .
30 : He will more his face with his name .
40 : He has more than X .
50 : He will try X .
60 : He will try X .
70 : He will try X .
80 : He will try X .
90 : He will try X .

例2-2:訓練データとinput文が一部異なる場合
input : 彼 が アルバイト に 挑戦 する 。
0 : He has been his head .
10 : He is busy to work .
20 : He was relieved .
30 : He will play the guitar in a big band for the first time .
40 : He will try to his children on X .
50 : He will play the guitar in a big band for the first time .
60 : He will not possible to understand his work .
70 : He will not possible in takes .
80 : He will try X .
90 : He will try to his head .


 次回も、『Chainerによる実践深層学習』を紹介します。



 以上、「Python(パイソン) ~その50:『Chainerによる実践深層学習』の紹介~」でした。




テーマ:プログラミング - ジャンル:コンピュータ

Python(パイソン) ~その49:『Chainerによる実践深層学習』の紹介~


 今回は、「Python(パイソン) ~その49:『Chainerによる実践深層学習』の紹介~」です。

  Python (パイソン) はプログラミング言語です。
 オランダ人のグイド・ヴァンロッサムさんが開発しました。
 名前の由来は、イギリスのテレビ局 BBC が製作したコメディ番組『空飛ぶモンティ・パイソン』です。
 Pythonには次のような特徴があります。
  ・とても読みやすい文法
  ・直感的なオブジェクト指向
  ・広範囲に及ぶ標準ライブラリ
 詳細は、以下のリンクをご参照ください。
  http://www.python.jp/about/
  https://ja.wikipedia.org/wiki/Python

 ※注1
「オブジェクト」は、「データと処理の集まり」です。
「オブジェクト指向」は、「オブジェクト同士の相互作用としてシステムの振る舞いをとらえる考え方」です。
 以下のリンクをご参照ください。
  http://tdak.hateblo.jp/entry/20140406/1396773476

 ※注2
 「ライブラリ」は、一種の「道具箱」です。
 様々なライブラリがPythonで記述されており、テキスト処理、画像処理、音声処理、WEBから情報収集、機械学習など様々な機能を持ったライブラリ(道具箱)を利用することができます。
 →SB Creativeから出版された『Python「超」入門』p158を参照しました。
  本にご興味がある方は下記のリンクをご覧ください。
  http://www.sbcr.jp/products/4797384406.html



 私は人工知能を理解するために、Pythonを学びます。
 Pythonには、人工知能に関連したライブラリが豊富にあります。
 以下の順番で学ぶ予定です。
  ①Pythonの文法を理解し、プログラムを書けるようになること
  ②Pythonの各種ライブラリを理解し、使いこなすこと
  ③人工知能に関連したライブラリを理解し、使いこなすこと
  ④現実の問題を人工知能を使って解くこと





 今回は、オーム社から発刊された『Chainerによる実践深層学習』(著者:新納浩幸様)を紹介します。
 この本には、深層学習を用いて自然言語処理を行う方法について、基礎的なことが丁寧に書かれています。
 本の中のソースコードは下記のリンク先からダウンロード可能です。
  →http://www.ohmsha.co.jp/data/link/978-4-274-21934-4/
  →「本ファイルは、本書をお買い求めになった方のみご利用いただけます。本書をよくお読みのうえ、ご利用ください。また、本ファイルの著作権は、本書の著作者である、新納浩幸氏に帰属します」とのことです。
  →ソースコードの意味や実行方法は、本をご参照ください。


 Chainerは、ニューラルネットワークの計算および学習を行うためのオープンソースソフトウェアライブラリです。
 Preffered Networks社が開発しました。
 複雑なニューラルネットワークの構築を必要とする深層学習で主に用いられています。
 Chainerの特徴は、「Flexible(柔軟性)」「Intuitive(直感的)」「Powerful(高機能)」です。
 詳細は、下記のリンクをご参照ください。
  →https://chainer.org/
  →https://www.ossnews.jp/oss_info/Chainer
  →https://ja.wikipedia.org/wiki/Chainer


 Chainerには豊富なチュートリアル(使用方法に関する技術的な説明書)があるので、コードを書いてプログラムを動かしながら、Chainerの使い方を学ぶことができます。
 詳細は、下記のリンクをご参照下さい。
  →https://play.chainer.org/book/1/1/1
  →https://docs.chainer.org/en/stable/tutorial/index.html



 今回は、『Chainerによる実践深層学習』の第8章「翻訳モデル」を紹介します。
 第8章では、「LSTM(Long short-term memory)」を用いて「機械翻訳」する例が挙げられています。

 「機械翻訳」とは、ある自然言語を別の自然言語に翻訳する変換を、コンピュータを利用して全て(ないし、可能な限り全て)自動的に行おうとする技術です。
 詳細は、下記のリンクをご参照ください。
  →https://ja.wikipedia.org/wiki/%E6%A9%9F%E6%A2%B0%E7%BF%BB%E8%A8%B3

 「LSTM(Long short-term memory)」は、RNN(Recurrent Neural Network)の拡張として1995年に登場した、時系列データ(sequential data)に対するモデル、あるいは構造(architecture)の一種です。
 その名前は、Long term memory(長期記憶)とShort term memory(短期記憶)という神経科学における用語から取られています。
 LSTMはRNNの中間層のユニットをLSTM blockと呼ばれるメモリと3つのゲートを持つブロックに置き換えることで実現されています。
 詳細は、下記のリンクをご参照ください。
  →https://qiita.com/t_Signull/items/21b82be280b46f467d1b

・訓練データの準備
 第8章に関しては、自分で日英間の対訳データを準備する必要があります。
 私は下記のリンクから、京都大学 日英中基本文データ"JEC_basic_sentence_v1-2.xls"をダウンロードしました。
  →http://nlp.ist.i.kyoto-u.ac.jp/index.php?%E6%97%A5%E8%8B%B1%E4%B8%AD%E5%9F%BA%E6%9C%AC%E6%96%87%E3%83%87%E3%83%BC%E3%82%BF
  →エクセルで、5000セットの日英間対訳データをファイル分割しました。
   英語:JEC_basic_sentence_v1-2_en.csv
   日本語:JEC_basic_sentence_v1-2_jp.csv
  →日本語ファイルは、京都大学の形態素解析器jumanppで分かち書きしました。
   以下は、解析例です。
   ['子供', 'たち', 'が', '水', '遊び', 'を', 'する', '。']
   ['三', '人', 'が', '店', 'を', '後', 'に', 'する', '。']
   ['パソコン', '初心', '者', 'が', '人', 'の', 'マネ', 'を', 'する', '。']
   ['彼', 'が', '簡単に', '商品', 'の', '紹介', 'を', 'し', 'ます', '。']
   ['先生', '方', 'が', '訪問', '指導', 'を', 'し', 'ます', '。']
 →listをsentenceに変更しました。
  以下は変換例です。
   その 言葉 を 誰 も が 一 度 は 耳 に した 。
   人 が 選別 業務 を し ます 。
   概ね 次の とおり と する 。
   一定 期間 の パスポート の 残存 期間 を 必要 と し ます 。
   そんな 事 を 誰 か が 口 に した 。
 →英語の文を修正しました。
  以下は、Pythonで処理したソースコードの一部です。
for line in lines:
  if '"' in line:
    line = re.sub('"', '', line)
  if '/' in line:
    line = re.sub('/', ' or ', line)
  if line[-2] == '.':
    line = line[:-2] + ' .' + '\n'
  if line[-2] == ':':
    line = line[:-2] + ' :' + '\n'
  if ',' in line:
    if not re.search('[0-9],[0-9]', line):
      line = re.sub(',', ' , ', line)
  for key in search_dict:
    if key in line:
      line = re.sub(key, search_dict[key], line)
  result_list.append(line)



 次回も、『Chainerによる実践深層学習』を紹介します。



 以上、「Python(パイソン) ~その49:『Chainerによる実践深層学習』の紹介~」でした。




テーマ:プログラミング - ジャンル:コンピュータ