環境システム株式会社公式HP

〒660-0083 兵庫県尼崎市道意町7-1-3
尼崎リサーチ・インキュベーションセンター512

アイコン06-6657-5130

アイコンsales@hydrolab.co.jp

お問い合わせ

アイコン06-6657-5130

アイコンsales@hydrolab.co.jp

お問い合わせ

蛇使いな彼女BLOG

【第91回】 翻訳プログラムを作るーGoogl Translate APを利用して #2.

2023.08.18

皆さんお盆休みはエンジョイ出来ましたか?
連休明けで仕事が辛いという方も、これからお休みに入る人もこんにちは!
モトハシです。

そして冒頭から聞いてください、悲報です・・・。
先月7月の3連休は愛知県内で最大39℃の酷暑でしたが、モトハシの住んでいる付近も例外では無く・・・
玄関入ってすぐのキッチンに設置してある水槽でスネークヘッドを飼っていましたが火曜の朝★になっていました。
前日水替えをしたはずですが45cm水槽の水はお湯になっていました。
こんなことは初めて経験しましたが、今の日本の夏は熱帯魚だろうと、その他の生き物であろうとエアコンかファンが要りますね。
可哀想なことをしたと反省しています。


さて、気を取り直して前回の続きと行きましょう。
ライブラリのインストールと動作確認まで行ったので、今日は簡単な
インスタンス生成を練習してみましょう。
まずコード全体を示しますね。

※コード説明の本文中、htmlテキスト画面上の都合で「半角1連アンダーバー」が「全角アンダーバー」のように表示されている事をお断りいたします。

まずざっと全体の構造を説明すると、Class宣言以下、メソッドを含むインデントされている部分までがすべてgreeting_transクラスオブジェクトの設計図です。
オブジェクト内で使用したい任意の変数(ここでは変数txt)がある場合、def__init__()の括弧内にあらかじめ与えないとクラス内で参照出来ません。
__init__はそのための初期設定のようなものです。
NumpyPandasなど一般的なライブラリのモジュール使用はdef__init__もしくはメソッドの中で可能です。
最もシンプルなクラス構造は例のように__init__とメソッドで構成することが出来ます。
今回使用するTranslateは、モデルやどちらかというとエンジン的な立ち位置にあります。

任意変数Translator()
として、一度インスタンスを生成(翻訳機の呼び出し)しないといけないので、この外部のオブジェクトをgreeting_transのインスタンス自身で使えるように
self.trans= Translator()」という形で受け取っています。
例えば以下のようにdef__init__以下に記述しても構いません。

通常のモジュールはインポートしておけば問題なく使用できますが、クラスメソッドの中で生成した値をクラスの外側から参照したい場合、変数に「self」を追加しないと後から参照が出来ないので気をつけてください。
言わずもがな、「self」はgreeting_trans自身を指します。
なので、greeting_transに含まれる__init__やメソッドの第一引数には「self」が必須です。

昔、Tesseractを使った文字の認識と読み取りを行った記事にもあったと思いますが、確かこのような外部エンジンがローカル環境にある場合には、def__init__にパスを通さないと機能しませんでしたね。

次に、インスタンス生成後、クラスの外側から新しい値を入力したい場合は第二引数以下に新規の変数を与えます。
ここではnewtxtとしました。↑

それではこのクラスを呼び出して実行してみましょう。
呼び出したクラスが格納されている変数gtが一般的にインスタンスと呼ばれるものです。

1つめのメソッドを呼び出すと、4行目で入力したテキストの値が日本語に翻訳されて帰ってきます。

次に2つめのメソッドを呼び出して任意のテキストを入力すると、
最初に__init__で設定した値が新しい値に書き換えられえて、その値を保持する事が来ます。

このクラス構造を上手く使うことで、大きなアプリケーションを作る際、処理系統を見やすくする効果と、後から修正しやすいというメリットがあります。
ライブラリのソースコードもクラス構造ばっかりですよ。
慣れないうちは上手く動かなかったりエラーに困ったりしますが、便利なので是非覚えて頂きたいです。

では今日はここまで。

pagetop