見出し画像

Pythonでやってみた3:Word自動翻訳

概要

Wordに記載した文章を翻訳します。翻訳の機械学習モデルを作成する場合は自然言語処理を極める必要がありますが、私には無理なので既設のサービスを使用します。

1.処理フロー

処理イメージは下記の通りです。

①Wordファイルを読み込み文章情報を抽出
②HTTPクライアントを使用してDeepL APIに情報を投げる
③翻訳した結果を抽出
④翻訳結果を元テキストから置換

1.翻訳サービスの紹介:DeepL-API

DeepLは高精度な翻訳ツールです。個人的にはGoogle翻訳よりすごいと感じており、特に業務で中文翻訳に使用したときは感動しました。

クレジットカードの登録は必要ですが無料版の使用により特定文字数までは無料で使用できます(サイトはこちら)。

画像1

登録完了すると赤塗りつぶし箇所にAPI KeyがありこれでAPIをたたきますAPI Keyを使用して翻訳します

画像2

2.Wordファイルの情報抽出:python-docx

Wordから情報を抽出します。詳細は下記記事をご参照ください。

使用するファイルは下記Wordファイルです。

画像3

[In]
import docx

filepath = '211118_article_nikkei.docx'
doc = docx.Document(filepath) #ドキュメントを読み込み
for paragraph in doc.paragraphs: #段落ごとにテキストを抽出
   print(paragraph.text)

[Out] 
自民税調会長「賃上げ税制、控除率拡大」、基本給引き上げ条件。

2021/11/18  日本経済新聞 朝刊  1ページ  390文字 

自民党税制調査会の宮沢洋一会長は17日の日本経済新聞のインタビューで、賃上げした企業への優遇税制について税額控除率を現在の15%から拡大する方針を示した。要件は「基本給が軸となる」と述べ、基本給を引き上げた企業を対象にすると強調した。(関連記事5面に)
2022年度の税制改正で対応する。年末の与党税制改正大綱に盛り込む。基本給を優遇の基準にして賃金上昇の傾向を定着させる狙いがある。
現在は大企業で新規採用者への給与支払い分の15%を法人税から税額控除する仕組みなどがある。基本給を変えなくてもボーナスなど一時金を増やせば優遇措置が適用される。
宮沢氏は「基本給が1年に1%ずつでもずっと上がる状況にしたい」と話した。控除率について「効果があるものは引き上げていく」としたうえで引き上げ幅への言及は避けた。「1人あたりの賃金がどう上がっていくかが一番のポイントだ」と指摘した。  

3.自動翻訳:DeepL-API×python-docx

HTTPクライアントでリクエストをDeepL-APIに送って帰ってきた文字を置換します。
(※HTTPクライアントライブラリのrequestsは別途記事作成予定)

[In]
import requests
import docx 

API_KEY = '自分で作成したAPIキーを入れてね' #APIキー

#API用関数
def get_api(key:str=API_KEY, text:str=None) -> str:    
   params = {                        
               "auth_key": API_KEY,
               "text": text,
               "source_lang": 'JA', # 日本語:JA
               "target_lang": 'EN'  # 英語:EN
           }
   request = requests.post("https://api-free.deepl.com/v2/translate", data=params) # free用のURL、有料版はURLが異なります
   result = request.json()
   text_English = result["translations"][0]["text"]
   return text_English

filepath = '211118_article_nikkei.docx'
doc = docx.Document(filepath) #ドキュメントを読み込み

for paragraph in doc.paragraphs:
   # 文章を取得
   text_JP = paragraph.text
   text_En = get_api(text=text_JP)
   paragraph.text = text_En
   
doc.save('./211118_article_nikkei_jp2en.docx.docx')

画像4

翻訳家の人から見たらわかりませんが個人的には十分な翻訳だと思います。ちなみに実行時間は17sでした。今回段落ごとに処理しましたAPIを叩いたが、まとめて処理するともう少し早くなると思います。

あとがき

StreamlitみたいなWebアプリにファイルをアップロードして裏側でこのような処理をさせた後にダウンロードすれば自動翻訳機ができます。
英語が苦手な人に書類を作らせるくらいなら文法がめちゃくちゃなことが多く上司のチェックもしんどいためこちらの方が圧倒的にコスパはいいと思います。

いいなと思ったら応援しよう!