はじめに
私は都内のWeb系企業で、自然言語処理をメインに機械学習について研究をしています。
そこで、最近AWS
のAI系のサービスも調査をしています。
そこで、使って分かったAWSのAIという本でサービスを一通り触れています。
この本では、各サービスをとりあえず動かしてどのようなものかを紹介する内容になっています。
その中でAmazon Translate
を利用する箇所でエラーが出ましたので、そちらについてまとめます。
問題
英語から日本語に翻訳する際に、カスタム用語を設定しました。
csv
で以下のようなファイルを作成して、モデルに読み込ませます。
en,jp
Sukiyaki,上を向いて歩こう
これはSukiyaki
をスキヤキ
と翻訳せず、上を向いて歩こう
に翻訳するように設定しています。
読み込ませるためのコードは以下のようになっています。
import boto3
import json
client = boto3.client('translate', region_name='us-east-1')
with open('my_terminology.csv', 'rb') as mt:
bytes_data = mt.read()
response = client.import_terminology(
Name='my_terminology',
MergeStrategy='OVERWRITE',
TerminologyData={
'File': bytes_data,
'Format': 'CSV',
}
)
print(response)
すると、以下のエラーが発生しました。
---------------------------------------------------------------------------
InvalidParameterValueException Traceback (most recent call last)
<ipython-input-17-8cd1f28f9f90> in <module>()
11 TerminologyData={
12 'File': bytes_data,
---> 13 'Format': 'CSV',
14 }
15 )
/opt/conda/lib/python3.6/site-packages/botocore/client.py in _api_call(self, *args, **kwargs)
355 "%s() only accepts keyword arguments." % py_operation_name)
356 # The "self" in this scope is referring to the BaseClient.
--> 357 return self._make_api_call(operation_name, kwargs)
358
359 _api_call.__name__ = str(py_operation_name)
/opt/conda/lib/python3.6/site-packages/botocore/client.py in _make_api_call(self, operation_name, api_params)
659 error_code = parsed_response.get("Error", {}).get("Code")
660 error_class = self.exceptions.from_code(error_code)
--> 661 raise error_class(parsed_response, operation_name)
662 else:
663 return parsed_response
InvalidParameterValueException: An error occurred (InvalidParameterValueException) when calling the ImportTerminology operation: Unsupported target language. (line 1)
調べたところ該当するものがなく、ターゲットがサポート外とのことでよくわからず困りました。
解決方法
結論から言うと、これはcsv
に問題がありました。
en,jp
Sukiyaki,上を向いて歩こう
ですが、en,jp
となっていますが、本当はen,ja
でした。
こちらが正しいです。
en,ja
Sukiyaki,上を向いて歩こう
エラーがcsvで起きているとは思わず、読み込むほうのコードを疑って時間を使ってしまいました。
ですので、このエラーが出た場合言語の指定をしている箇所が間違っていないか確認するとよいかもしれません。
おわりに
エラーがら原因がわかりづらいと感じたものは記事にするようにしています。
同じミスをする人はかなり少ないと思いますが、誰かの参考になればと思います。