WatsonAssistantのコンテントカタログ（Covid-19)をLanguage Translatorで翻訳してみた。

# 概要
- WatsonAsistantには、コンテントカタログという、インテントのサンプルデータが予め用意されています。
- この記事では、Language TranslatorとPython3を使用して、英語版のサンプルを日本語に変換する方法を説明します。
- また、実際に日本語コンテントカタログとして問題なく利用できるのか見解を共有します。

---

# 前提
- Python3はインストール済
- IBM CloudとWatsonAssistantは既に利用している。
- PCはWindows10を使用している。

---

# WatsonAssistantのコンテントカタログに「Covid-19」が追加されてた。
WatsonAssistantを利用することが少なくなっていたのですが、久しぶりに使ってみたら、コンテントカタログに、「Covid-19:Common questions about the Covid-19 virus.（コロナウィルスの一般的な質問）」が追加されていました。
いつ頃追加されたのか分からないですが、なんとなくコロナウィルスの問い合わせ対応に使えそうな感じがしますよね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555232/09c5620d-25f4-4444-9a05-7adef5fc4036.png)




---

# 日本語版がないのでLanguage Translatorで翻訳
残念ながらこのCovid-19は英語のみで日本語版は提供されていませんでした。
最近、機械翻訳されたページを見かけることが多くなりましたよね。
英語版が先行するのは理解できるのですが、Watsonのプラットフォームを使えば、すぐに対応できるのではとも思えますよね。そこで、同じくIBM CloudにあるLanguage Translatorを使用して英語から日本語への翻訳を試みました。


## IBM Cloud側手順
1. WatsonAssistantのContent Catalogページを開き、英語版のCovid-19をインテントに取り込みます。
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555232/393574fc-73da-d2b6-ff7f-868c5c610072.png)


2. Intentsページを開き、取り込んだIntensを全選択しダウンロードボタン（↓）をクリックしてcsvファイルに取り出します。ファイル名は、仮にinput.csvとします。

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555232/e8232408-5e80-8cdb-fc9e-a1570a6bde53.png)


3. IBM CloudのダッシュボードからLanguage Translatorを選択してリソースを作成します。

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555232/e0186ea4-abb9-dae8-7496-d9cbcb09d9eb.png)

## PC側手順
1. 以下コマンドでibm-watsonのライブラリをインストールします。その後、Pythonのスクリプトを実行すると、同じディレクトリにoutput.csvが作成されます。

  ```
  pip install --upgrade "ibm-watson>=4.3.0"
  ```
- Pythonのコード
- {apikey}と{url}のところは、作成したLanguage Translatorの資格情報に合わせて書き換えてください。

```
import json
import codecs
from ibm_watson import LanguageTranslatorV3
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator

f_in  = codecs.open('input.csv', 'r', 'utf-8')
f_out = codecs.open('output.csv', 'w', 'utf-8')

authenticator = IAMAuthenticator('{apikey}')
language_translator = LanguageTranslatorV3(
    version='2018-05-01',
    authenticator=authenticator
)
language_translator.set_service_url('{url}')

def main():
    lines = f_in.readlines()
    for line in lines:
        ln=line.split(',')
        print(line)
        translation = language_translator.translate(
            text=ln[0],
            model_id='en-ja').get_result()
        for key in translation['translations']:
            text=key['translation']+','+ln[1]
            print(text)
            f_out.write(text)
    f_out.close()
    f_in.close()

if __name__ == '__main__':
    main()
```


## IBM Cloud側手順
1. WatsonAssistantのIntentsページを開き、アップロードボタン（↑）をクリックしてcsvファイルを取り込みます。

以上で手順は完了です。

---

# 翻訳結果
初めの10件だけ掲載します。
言いたいことは分からなくもないのですが、自然な日本人の文章では、こういう入力にはならないと思います。
前後の文脈から訳が決まる場合もあるので、１文だけとりあげて翻訳するというのは限界がありそうです。


| 元文章 | 翻訳結果 |
|----|----|
| Does the US have a confirmed COVID case? | 米国は、 COVID の事例を確認していますか。|
|How many cases of the virus are there in the world?|世界にはウイルスの感染例がいくつあるのか。|
|How many coronavirus cases are there in my area?|私の地域にはコロナウイルスの症例がいくつあるのか ?|
|how many people are infected in the us?|何人の人が我々に感染しているのか ?|
|how many people are sick in the US?|アメリカには何人の人が病気になっているのでしょう|
|is anyone near me sick|私の病気の近くにいる|
|what is the count of coronavirus infected people?|コロナウイルスの感染者数は何ですか ?|
|Where are cases?|ケースはどこにある ?|
|Are there any cases near me?|私の近くには何か事件が ?|
|covid number in my state?|同数の番号を私の国で ?|


# まとめ
英語版しかないコンテントカタログもLanguage Translatorを使用すれば、簡単に日本語翻訳できることが分かりました。ただ、1文1訳で単純に翻訳すると日本人が問い合わせする際に使用する自然な文章は生成できませんでした。コンテントカタログは、インテントとして学習させるデータですので、翻訳は、まだ不十分といえます。