ディープラーニングのCNNとKerasを対応づけてみたーその1機械学習(8日追加)
http://blog.goo.ne.jp/xmldtp/e/1c82e996ddb3029a53279a8cfe891b14
で学習を行った。ここでは、その行った学習結果を実運用で使って判別するプログラム部分
●学習で行ったこと
最後のほうに
model.to_json でJSON形式になり
model.save_weights で重みを保存できる
とかいてあるけど、このjson形式と、保存した重みが、「学習済みモデル」となる。
この学習済みモデルを作るのが、学習作業ですること。
運用時は、この学習済みモデルを読み込み、判別することになる。
以下、ロリポおじさんなみのKeras解説
●運用(判別)
1.学習済みモデルのよみこみ
keras.modelsにmodel_from_jsonがあるので、それでJSON形式の部分を読み込み、
(それをmodelにいれたとして)
model.load_weightsで、保存した重みを読み込むと
学習済みモデルが読み込める
中身を出すには
model.summary()
2.判別
model.predict(判別するイメージ)
で、結果に判別結果が返ってくる。
http://blog.goo.ne.jp/xmldtp/e/1c82e996ddb3029a53279a8cfe891b14
で学習を行った。ここでは、その行った学習結果を実運用で使って判別するプログラム部分
●学習で行ったこと
最後のほうに
model.to_json でJSON形式になり
model.save_weights で重みを保存できる
とかいてあるけど、このjson形式と、保存した重みが、「学習済みモデル」となる。
この学習済みモデルを作るのが、学習作業ですること。
運用時は、この学習済みモデルを読み込み、判別することになる。
以下、ロリポおじさんなみのKeras解説
●運用(判別)
1.学習済みモデルのよみこみ
keras.modelsにmodel_from_jsonがあるので、それでJSON形式の部分を読み込み、
(それをmodelにいれたとして)
model.load_weightsで、保存した重みを読み込むと
学習済みモデルが読み込める
中身を出すには
model.summary()
2.判別
model.predict(判別するイメージ)
で、結果に判別結果が返ってくる。
今は違うかもしれない。むかしやっていたときのメモ
【概要】
ローカライゼーションの工程は、大体こんな感じだと思う
・大きな流れは、下訳→用語統一→本訳→確認の順
【下訳】
1.対象語の抽出
poファイルにすべてまとまっているのなら簡単
そうでないときは、自動抽出方法を開発し、それを使う
ただし、下訳は用語統一するためのものなので、
完全に抽出できなくて良い(適当に手作業でもいい)
2.用語統一したい言葉を選び、翻訳にまわす
→類似のソフトがローカライズされている場合には、
そこから取ってきてしまうことも
→人が訳す場合、Google翻訳を使う場合、訳してもらうのは
長い単語のほうが意味がわかりやすくていい。
例」承認より承認ユーザーのほうがいい
3.翻訳にまわす
何人かに分担して訳してもらう(わざと、用語のゆれが出るようにする)
そのうちの1人にGoogle翻訳も今の精度ならありえると思う
(感触レベルでいうと、下訳の精度はこれくらいってこと)
【用語統一】
4.下訳してきた結果をExcelで
対象語 1人目の訳 2人目の訳 3人目・・・
とならぶようにする(別にExcelでなくてもいいが、とにかくわかるようにする)
5.その結果をもとに、この用語はこの訳でというように
きめる
例:承認ユーザー情報が
information of Approval userと
Authorized user informationの2種類あった場合、
承認ユーザー情報は、Authorized user information
承認ユーザーはAuthorized user
承認はAuthorization
というように、訳した人何人かで合議(ないし、1人の独断と偏見)
→このとき、画面の場合は、画面をみながら訳語が確認できると良い
そのため、訳語につけるIDは、ソースファイルがわかるようにする
(ソースファイルから画面がわかるようにする。画面番号などを
IDに入れてしまうと、画面以外のところで困るので、ソースコード)
6.決めた訳を辞書に入れる。
【本訳】
7.全ての翻訳対象語を抽出する
日本語の場合、コードが違うので(2バイトのところ)抜き出しやすい
自動化ソフトを使う。
8.訳語がでてきたら、6で訳が決まってしまうところは、埋める
9.翻訳にまわす。
翻訳メモリを使っているのであれば、8で訳が入っているので、
その部分は出てくるからOK。
そうでなく、Excelなどを使う場合、
とりあえず、8の部分も含んでいるものを用意し、
F12001_3220 承認ユーザー Authorized user
F12001_3241 承認ユーザー Authorized user
F12001_3256 承認ユーザではありません
のように、日本語のところを元にソートし、英語が入っていないところを
埋めてもらうようにすると、訳語が合いやすい(ただ、訳の箇所を見落としやすいので
訳すべきところは薄い黄色で表示するとかにしておくとBetter
Excelだと、条件付書式でできるのかな?)
【確認】
10.訳が終わってきたら、自動チェック
・訳が漏れているところがないか
・コードが違うところが無いか(英語のところに日本語が入ってる、とくにスペース)
・異常なところは無いか(短い単語に長い文)
・あきらかにずれていることは無いか?
(9のExcel版の場合、訳をいれておいたところの訳が違っている)
11.(9と同じように)コード、日本語、対象語の順にして、
不自然なところがないか(文字の長さなど)
12.自動的に翻訳語を入れて、対象語のソースファイルを作成、
そのソースファイルをコンパイル等して、実行できるまでを確認する
→さらに、自動的に画面を開いて、ハードコピーとれるとBetter
その場合、ハードコピーを見て、文字化けしていないか確認する
13.12で作成されたソースから、翻訳対象語を抽出する
→7は日本語を抽出したが、今回は対象語を抽出する
7でつけたID(上の例だとF12001_3256)と同じ方法で
採番する
14.13でできた結果と11でOKになった結果を比較(IDをそろえて対象語を比較)
ちがっていれば、12の自動化でずれている。
15.画面を出して、(ネイティブないしは、翻訳する人が)画面を確認、
文字を入れて確認。
→画面から出てくる言葉に違和感が無いか
こんな感じかな。
結局15が勝負なので、はやく15に行く方向にする
それ以前の工程では、ミスがでてしまうもの・・・
なので、15でつじつまが合うように、それ以前の工程は
できるだけ自動化できるようにがんばる。
※追加修正があったときは、自動抽出と採番のしかたに工夫があるんだけど、
話がディープで長くなるので、このへんで切る。
【概要】
ローカライゼーションの工程は、大体こんな感じだと思う
・大きな流れは、下訳→用語統一→本訳→確認の順
【下訳】
1.対象語の抽出
poファイルにすべてまとまっているのなら簡単
そうでないときは、自動抽出方法を開発し、それを使う
ただし、下訳は用語統一するためのものなので、
完全に抽出できなくて良い(適当に手作業でもいい)
2.用語統一したい言葉を選び、翻訳にまわす
→類似のソフトがローカライズされている場合には、
そこから取ってきてしまうことも
→人が訳す場合、Google翻訳を使う場合、訳してもらうのは
長い単語のほうが意味がわかりやすくていい。
例」承認より承認ユーザーのほうがいい
3.翻訳にまわす
何人かに分担して訳してもらう(わざと、用語のゆれが出るようにする)
そのうちの1人にGoogle翻訳も今の精度ならありえると思う
(感触レベルでいうと、下訳の精度はこれくらいってこと)
【用語統一】
4.下訳してきた結果をExcelで
対象語 1人目の訳 2人目の訳 3人目・・・
とならぶようにする(別にExcelでなくてもいいが、とにかくわかるようにする)
5.その結果をもとに、この用語はこの訳でというように
きめる
例:承認ユーザー情報が
information of Approval userと
Authorized user informationの2種類あった場合、
承認ユーザー情報は、Authorized user information
承認ユーザーはAuthorized user
承認はAuthorization
というように、訳した人何人かで合議(ないし、1人の独断と偏見)
→このとき、画面の場合は、画面をみながら訳語が確認できると良い
そのため、訳語につけるIDは、ソースファイルがわかるようにする
(ソースファイルから画面がわかるようにする。画面番号などを
IDに入れてしまうと、画面以外のところで困るので、ソースコード)
6.決めた訳を辞書に入れる。
【本訳】
7.全ての翻訳対象語を抽出する
日本語の場合、コードが違うので(2バイトのところ)抜き出しやすい
自動化ソフトを使う。
8.訳語がでてきたら、6で訳が決まってしまうところは、埋める
9.翻訳にまわす。
翻訳メモリを使っているのであれば、8で訳が入っているので、
その部分は出てくるからOK。
そうでなく、Excelなどを使う場合、
とりあえず、8の部分も含んでいるものを用意し、
F12001_3220 承認ユーザー Authorized user
F12001_3241 承認ユーザー Authorized user
F12001_3256 承認ユーザではありません
のように、日本語のところを元にソートし、英語が入っていないところを
埋めてもらうようにすると、訳語が合いやすい(ただ、訳の箇所を見落としやすいので
訳すべきところは薄い黄色で表示するとかにしておくとBetter
Excelだと、条件付書式でできるのかな?)
【確認】
10.訳が終わってきたら、自動チェック
・訳が漏れているところがないか
・コードが違うところが無いか(英語のところに日本語が入ってる、とくにスペース)
・異常なところは無いか(短い単語に長い文)
・あきらかにずれていることは無いか?
(9のExcel版の場合、訳をいれておいたところの訳が違っている)
11.(9と同じように)コード、日本語、対象語の順にして、
不自然なところがないか(文字の長さなど)
12.自動的に翻訳語を入れて、対象語のソースファイルを作成、
そのソースファイルをコンパイル等して、実行できるまでを確認する
→さらに、自動的に画面を開いて、ハードコピーとれるとBetter
その場合、ハードコピーを見て、文字化けしていないか確認する
13.12で作成されたソースから、翻訳対象語を抽出する
→7は日本語を抽出したが、今回は対象語を抽出する
7でつけたID(上の例だとF12001_3256)と同じ方法で
採番する
14.13でできた結果と11でOKになった結果を比較(IDをそろえて対象語を比較)
ちがっていれば、12の自動化でずれている。
15.画面を出して、(ネイティブないしは、翻訳する人が)画面を確認、
文字を入れて確認。
→画面から出てくる言葉に違和感が無いか
こんな感じかな。
結局15が勝負なので、はやく15に行く方向にする
それ以前の工程では、ミスがでてしまうもの・・・
なので、15でつじつまが合うように、それ以前の工程は
できるだけ自動化できるようにがんばる。
※追加修正があったときは、自動抽出と採番のしかたに工夫があるんだけど、
話がディープで長くなるので、このへんで切る。
そのツールが一般の私立学校3校に提供されることになった。
シリコンヴァレーの“新時代の学校”AltSchool、その「秘密」を公開
http://wired.jp/2017/01/04/altschool-shares-secrets/
シリコンヴァレーの“新時代の学校”AltSchool、その「秘密」を公開
http://wired.jp/2017/01/04/altschool-shares-secrets/