Microsoft Ignite 2021の基調講演で発表された「Azure OpenAI Service」。
公式ページにある通り OpenAI でOpenAI APIを発行してもらったのでExpamplesにある49個のアプリから「English to French」をPythonから実行して試行錯誤します。
OpenAIのExpamplesにあるEnglish to Frenchとは
公式の説明では、「Translates English text into French.」とあり“英語をフランス語に翻訳”となっております。
公式のタグでは「Transformation」と「Generation」の2つが付与されています。
プログラムを見るとエンジンは「Davinci」を使っています。
サンプルコードではいきなり英語の文章とそれに対するフランス語訳があり、いくつかの文章と翻訳を用意することで言語変換できることがわかります。
早速使ってみた
公式にあるコードを参考に、好きな文章を入れられるように str という変数に会話を入れて実行できるようにします。
1Python Code
2
3‘’’
4
5import os
6
7import openai
8
9
10
11openai.api_key = os.getenv("OPENAI_API_KEY")
12
13str = """English: I do not speak French.
14
15French: Je ne parle pas français.
16
17
18
19English: See you later!
20
21French: À tout à l'heure!
22
23
24
25English: Where is a good restaurant?
26
27French: Où est un bon restaurant?
28
29
30
31English: What rooms do you have available?
32
33French: Quelles chambres avez-vous de disponible?
34
35
36
37English: What time is breakfast?
38
39French:"""
40
41
42
43response = openai.Completion.create(
44
45 engine="davinci",
46
47 prompt=str,
48
49 temperature=0.5,
50
51 max_tokens=100,
52
53 top_p=1.0,
54
55 frequency_penalty=0.0,
56
57 presence_penalty=0.0,
58
59 stop=["\n"]
60
61)
62
63
64
65print(response["choices"][0]["text"])
66
67‘’’英語の文章がフランス語に翻訳される
実行すると「What time is breakfast?(朝食は何時からですか?)」にあたるフランス語「Quelle heure est le petit-déjeuner?」が返ってきます。
辞書から機械的に返ってきているわけではなく、実行するたびに「À quelle heure est le petit déjeuner?」や「À quelle heure est le petit-déjeuner?」のように微妙に違う答えが返ってきます。
日本語にも翻訳できる
フランス語ができるなら日本語にも、ということで日本語への翻訳を試みてみます。Strの部分を以下のように変更してみます。
「English: I do not speak French.
Japanese: 私はフランス語が話せません。
English: See you later!
Japanese: またお会いましょう!
English: Where is a good restaurant?
Japanese: 美味しいレストランはどこですか?
English: What rooms do you have available?
Japanese: どんな部屋がありますか?
English: What time is breakfast?
Japanese:」
日本語でも問題なく「朝食は何時ですか?」と翻訳されました。
1行でも使える
サンプルのように何行もの会話を作るのは労力が必要です。1行だけでも使えるか試してみます。
「English: I do not speak French.
Japanese:」
1行だけでも「私はフランス語を話しません。」と返ってきました。辞書データなしでも問題なく翻訳できるようです。
複数行文章を入れる理由
なぜ1行でも翻訳できるのに、何行も入れる必要があるでしょうか?
大阪弁変換サイト を使って以下の文章を用意しました。
「English: I do not speak French.
Japanese: ウチはフランス語が話せまへん。
English: See you later!
Japanese: またお会おな!
English: Where is a good restaurant?
Japanese: 美味しいレストランはどこでっか?
English: What rooms do you have available?
Japanese: どんな部屋がありまっか?
English: What time is breakfast?
Japanese:」
なんと「朝食は何時でっか?」と見事に翻訳されました。
どんなときに使えるのか?
翻訳するだけであれば、DeepL翻訳やGoogle翻訳といったサイトでも可能です。
ただし、上記にあるように会話にあわせて翻訳を変えたりすることは出来ません。
敬語や硬い表現にしたくないときに、柔らかい表現をした翻訳を用意することで適した言葉遣いをすることが出来ます。
自分の文語・口語の表現を用意することで自分に似た表現をする、といった活用もできます。
また、Azureのサービスとなるのでセキュリティが確保され、社外には出したくない情報の翻訳なんかができるようになる可能性が高いと思われます。