4つのAIを通して見えるコーポレートアイデンティティ(NTTコムウェア)の本質

この記事は[NTTコムウェア Advent Calendar 2022](https://qiita.com/advent-calendar/2022/nttcomware) 9日目の記事です。

# はじめに
NTTコムウェアの掛内です。
普段は、AWSを使ったアジャイル開発やテックリードとして組織課題の解決を行っていますが、今回は少し業務と関係ない誰でも無料で使えるAIネタを投稿したいと思います。

弊社NTTコムウェアは、今年1月からNTTドコモグループに参画となりました。
それにともない、9/1にNTTコムウェアの存在意義や大切にしている価値観などを踏まえて、コムウェアアイデンティティ(以下、CWアイデンティティ)やコーポ―レートメッセージが一新されました。
* [弊社ニュースリリース](https://www.nttcom.co.jp/news/pr22090101.html)

CWアイデンティティは、その中でも特に象徴的な価値観が記載されています。CWアイデンティティの内容は、人間にはすごくよく分かりますし思いも伝わるのですが、AIはどう判断するのかな？っと考えたことがこの記事で検証する内容のきっかけです。

ということで、今回はこのCWアイデンティティをAIのインプットにし、アウトプットが人間の感覚に合うのか？ということを調べてみたいと思います。具体的には、以下のように4つのAIの入出力をつなげて途中経過や最終結果を調べたいと思います。

![qiita.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311160/880f6179-7514-71b8-bded-e94085335b8f.png)

::: note
各APIのアカウントの作成方法やAPIKEYの払い出し方法は割愛させて頂きますので、それぞれの公式サイトで手順をご確認ください。
:::


# Step0. CWアイデンティティの確認
なにはともわれ、CWアイデンティティの文章を確認します。
[公式Webサイト](https://www.nttcom.co.jp/corporate/identity/)から引用します。

```CWアイデンティティ.txt
私たちは、未来を技術の力でデザインし、心がつながる豊かな世界を実現します。
誰もが感動・喜び・安心を感じられる豊かで持続可能な世界の実現をめざして私たちは、ソフトウェア開発力をはじめとした技術の力であらゆる人・もの・コトが自由につながる人と社会にやさしい未来を描き、カタチにしていきます。
日本の社会インフラを支えてきた品質と信頼。
私たちは、これまで培ってきた強みを礎に変化し続け、自らの枠を超えイノベーティブに取り組むプロフェッショナル集団としてお客さまに、世界に、新たな価値を提供し続けます。
```

人間が読んだときに感じるのは、`これまでの品質や信頼の実績のもとになった高い技術力`を使って、`多様で様々な人が幸福になれるコミュニケーション社会を実現`したいといったところでしょうか。

# Step1. コーポレートメッセージを要約する
まず、この文章を1行に要約してみます。
使うのは、リクルート社が提供するA3RTの「[Text Summarization API](https://a3rt.recruit.co.jp/product/TextSummarizationAPI/)」です。

```TextSummarization.py
import requests
import json

# エンドポイント
url = "https://api.a3rt.recruit.co.jp/text_summarization/v1"
# APIキー
key = "XXXXXXXXXX"

# 要約する文章
sentence = """
私たちは、未来を技術の力でデザインし、心がつながる豊かな世界を実現します。
誰もが感動・喜び・安心を感じられる豊かで持続可能な世界の実現をめざして私たちは、ソフトウェア開発力をはじめとした技術の力であらゆる人・もの・コトが自由につながる人と社会にやさしい未来を描き、カタチにしていきます。
日本の社会インフラを支えてきた品質と信頼。
私たちは、これまで培ってきた強みを礎に変化し続け、自らの枠を超えイノベーティブに取り組むプロフェッショナル集団としてお客さまに、世界に、新たな価値を提供し続けます。
"""

# パラメーターの設定
# 1行に集約する
# separationはデフォルトに従い「。」なので、4行と判定される
params = {"sentences": sentence, "apikey": key, "linenumber": "1"}

# リクエスト
res = requests.post(url, data=params)
values = json.loads(res.text)

# レスポンスから要約されたテキストを取り出す
for summary in values["summary"]:
    print(summary)
```

## 結果
出力された要約文は次のようになりました。
`誰もが感動・喜び・安心を感じられる豊かで持続可能な世界の実現をめざして私たちは、ソフトウェア開発力をはじめとした技術の力であらゆる人・もの・コトが自由につながる人と社会にやさしい未来を描き、カタチにしていきます`

もともと4行と短いので、内容はそこまで変わらずうまく文章をつないだ印象です。
個人的には、実現したいコミュニケーション社会の比重が高くなり、実現方法や技術力は少し比重を落としたように感じました。また、前半の文章が多く採用されており、重要で言いたいことは初めの方に書かれていると判断されたのかもしれません。

# Step2. 要約文を英訳する
つづいて、要約された文章を英訳してみます。
次に使うのは、DeepLの「[翻訳API](https://www.deepl.com/ja/pro-api?cta=header-pro-api/)」です。

```translate.py
import requests
import json

summary_centence = "誰もが感動・喜び・安心を感じられる豊かで持続可能な世界の実現をめざして私たちは、ソフトウェア開発力をはじめとした技術の力であらゆる人・もの・コトが自由につながる人と社会にやさしい未来を描き、カタチにしていきます"

key = "XXXXXXXXXX"

source_lang = "JA"
target_lang = "EN"

# パラメータの指定
params = {
    "auth_key": key,
    "text": summary_centence,
    "source_lang": source_lang,
    "target_lang": target_lang,
}

# リクエストを投げる
request = requests.post("https://api-free.deepl.com/v2/translate", data=params)
result = request.json()["translations"][0]["text"]

print(result)
```
## 結果
英訳された要約文は次のようになりました。
`Aiming to realize a rich and sustainable world in which everyone can feel excitement, joy, and peace of mind, we will use our software development capabilities and other technologies to envision and shape a future friendly to people and society in which all people, things, and services are freely connected.`

翻訳精度はかなり高いように見えます。
要約文は1行にしては長いほうで、自動生成ゆえの語順や文法上の意味がどこに係るが若干曖昧な部分がありましたが、基本的に忠実に訳したと思います。


# Step3. 英訳から画像を生成する
続いて、最近話題の画像生成AIです。Midjourneyがアメリカの美術品評会で1位を取ったことも記憶に新しいかと思います。
今回は、[Stable Diffusion 2](https://huggingface.co/spaces/stabilityai/stable-diffusion)の「[stability-sdk](https://github.com/Stability-AI/stability-sdk)」を使います。

```pic.py
import io
import os
from PIL import Image
from stability_sdk import client
import stability_sdk.interfaces.gooseai.generation.generation_pb2 as generation

result = "Aiming to realize a rich and sustainable world in which everyone can feel excitement, joy, and peace of mind, we will use our software development capabilities and other technologies to envision and shape a future friendly to people and society in which all people, things, and services are freely connected."
key = "XXXXXXXXXX"

# APIインタフェースの準備
stability_api = client.StabilityInference(
    key=key,
    verbose=True,
)

# テキストからの画像生成
answers = stability_api.generate(
    samples=5,
    prompt=result,
)

# 結果の出力
i = 0
for resp in answers:
    for artifact in resp.artifacts:
        if artifact.type == generation.ARTIFACT_IMAGE:
            img = Image.open(io.BytesIO(artifact.binary))
            img.save(f"pic{i}.png")
            i += 1
```
## 結果
このソースコードサンプルでは1度に5つの画像が生成されるのですが、3回実行して計15枚の画像を生成しました。

基本的に全然違う画像が生成されるのですが、いくつかの傾向？系統？があるようです。
大きく4つに分類できました。

1つ目は、コミュニケーションを表したようなイラストです。
![cw1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311160/65e5a657-53a1-45b0-d36d-268a6245b76c.jpeg)
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311160/f3a04a5f-fd07-931c-d058-eee2e8cd378e.png)

2つ目は、1つ目とも少し近いのですが世界とその周りに情報があるような印象をうけるイラストです。
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311160/904588a7-3f8e-0ceb-0804-c5cadb64471d.png)
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311160/47e6601e-9192-0eb3-75c3-9a43678c3ef2.png)

3つ目は、大量の情報/キーワードを表すようなイラストです。
![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311160/a7a62555-6085-e47c-f97c-4292e8414805.png)
![16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311160/5aca559e-b7f0-0e2f-75a6-1de1bc35e86c.png)

4つ目は、プロセスや構造を表すようなイラストです。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311160/c8a86488-3a28-dff3-5d98-8fd430eac24d.png)
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311160/d8c25a9f-b1d8-0c12-a65a-2ccb8c48dd54.png)


変わり種で、文字がないものもありました。
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311160/e7df2063-26cb-e7ee-a753-ead33169bc24.png)

# Step4. 画像からラベルを付ける
最後に生成された画像のラベリングをします。
最後に使うのは、GCPの「[VisionAPI](https://cloud.google.com/vision/)」です。

```vision.py
import io
import os
from google.cloud import vision

# 認証情報の設定
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "./key.json"

# 画像ファイルの準備
file_name = os.path.abspath("./pic.png")
with io.open(file_name, "rb") as image_file:
    content = image_file.read()

# ラベリング解析
image = vision.Image(content=content)
client = vision.ImageAnnotatorClient()
response = client.label_detection(image=image)
labels = response.label_annotations

# ラベルの表示
for label in labels:
    print(label.description)
```

## 結果
全ての画像をラベリングすることは大変なので、代表して3つの画像のラベリングを行います。

![cw1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311160/65e5a657-53a1-45b0-d36d-268a6245b76c.jpeg)
⇒`Blue, World, Product, Yellow, Font, Red, Sharing, Community, Circle, Recreation`

フォントや色などを除くと、World,Product,Sharing,Community,Recreationなどの世界をつないだだり、プロダクトを作ったり、再構築するようなキーワードが抽出されました。

![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311160/904588a7-3f8e-0ceb-0804-c5cadb64471d.png)
⇒`Human body, Font, Happy, Circle, Science, Symmetry, Graphics, Slope, Celebrating, Event`

こちらは、人間的なや幸福、祝福といったものが表現されているようです。

![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311160/e7df2063-26cb-e7ee-a753-ead33169bc24.png)
⇒`Hand, Table, Computer, World, Product, Green, Personal computer, Laptop, Output device, Tableware`

最後のイメージは、World,Productなどは表現されているものの、Hand,Table,Computerなどの単語から、グループワークのような印象も合わせて受ける結果となりました。


# 全体的な結論
CWアイデンティティを4つのAIを通して抽象化してみると「World, Product, Community, human, Happy, computer」といった用語が見られました。
これらは、もともとの文章の中で、大きな意味を持つを主要なキーワードに近いものだと思います。

従って、AIもCWアイデンティティの解釈は人間と近しいのかもしれません。(たぶん)

# おまけ 
最後に、「[AIのべりすと](https://ai-novel.com/)」という小説生成AIにCWアイデンティティの続きを書いてもらいました。

```CWアイデンティティ(AIのべりすと追記版).txt
私たちは、未来を技術の力でデザインし、心がつながる豊かな世界を実現します。
誰もが感動・喜び・安心を感じられる豊かで持続可能な世界の実現をめざして私たちは、ソフトウェア開発力をはじめとした技術の力であらゆる人・もの・コトが自由につながる人と社会にやさしい未来を描き、カタチにしていきます。
日本の社会インフラを支えてきた品質と信頼。
私たちは、これまで培ってきた強みを礎に変化し続け、自らの枠を超えイノベーティブに取り組むプロフェッショナル集団としてお客さまに、世界に、新たな価値を提供し続けます。
～続きを書くを3回実施～
私たちの挑戦は続きます。
私たちは、人々の暮らしを支えるために日々努力を続けていきます。
この先も、新しい時代を切り開くイノベーションを起こし続けるためさらなる飛躍を目指し、挑戦を続けていきます。
その原動力となるものは、情熱です。
私たちにとって情熱とは、仕事への想いであり、仲間とともに創り上げる達成感であったりします。
私たちには、どんな時もあきらめずに挑戦し続ける姿勢があります。
困難に直面したとしても、立ち止まることなく、次の一手を考えながら前に進んでいきます。
この行動力こそ、未来へはばたくための翼になるのです。
私たちは、これからもこの先もずっとお客様一人ひとりのかけがえのない想いを大切にしながらともに歩んでまいります。
```

すごくそれっぽい文章が続いています！
「私たち」が何回も登場しており、これは主体性の強調でしょうか。また、将来に向けて頑張る様子が伺え、人々の暮らしや時代を動かすポジティブな文章が続いています。さらに、背景的な情熱や仕事への想い、仲間とともに困難に立ち向かう姿も描かれています。お客様との想いを共有するという点も素晴らしいと思います。

「未来へはばたくための翼」などの少しかっこいい表現がAIから作られたことに少し驚きました。

# おわりに
CWアイデンティティをインプットにAIで画像生成やラベリングをしてみたところ、比較的人間の感覚に合うアウトプットを作ってくれるという結果が得られました。

皆さんの学校・企業・組織の理念やアイデンティティから、AIがどのような画像を作ってくれるのか試してみてはいかがでしょうか？

---
:::note warn
本稿に記載されている情報は、2022年12月時点のもので、各製品やサービスは常に機能追加/変更が行われているため、ご留意ください
:::

記載されている会社名、製品名、サービス名は、各社の商標または登録商標です。