JavaでCognitive ServicesのText Analyticsを使う

私の大学時代の専攻は人工知能でした。そのため、AzureのCognitive Servicesは触ってて楽しいです。普段はHTTPのAPIを素で叩くことが多いですが、Java向けのライブラリも充実しているようなので触ってみました。

Cognitive Servicesには色々な種類がありますが、今回はText Analyticsを試しました。その中でも色んな機能がありますが、今回はテキストの文章から言語を特定するものを使ってみました。

# 実行結果

先に結果を紹介します。以下のような日本語の文章をCognitive Servicesに食わせると

```java
String text = "私の推しメンは乃木坂46の大園桃子さんです。";
```

以下の結果になります。

```
検出した言語は Japanese です。ISO 6391の言語コードは ja 、スコアは 1.000000.
```

英語を入れてみます。

```java
String text = "Nogizaka46 is a Japanese female idol group produced by Yasushi Akimoto, created as the official rival of the group AKB48. ";
```

ちゃんと判定してくれます。

```
検出した言語は English です。ISO 6391の言語コードは en 、スコアは 0.990000.
```

# Javaプロジェクトの準備

Mavenでプロジェクトを作成して、pom.xmlに以下の依存性を追加します。

```xml
<dependency>
  <groupId>com.azure</groupId>
  <artifactId>azure-ai-textanalytics</artifactId>
  <version>5.0.4</version>
</dependency>
```

Javaのコードは簡単でこれだけです。xxxとなっている部分については後ほど紹介します。

```java
package com.example;

import com.azure.ai.textanalytics.TextAnalyticsClient;
import com.azure.ai.textanalytics.TextAnalyticsClientBuilder;
import com.azure.ai.textanalytics.models.DetectedLanguage;
import com.azure.core.credential.AzureKeyCredential;

public class App 
{
    public static void main( String[] args )
    {
        TextAnalyticsClient textAnalyticsClient = new TextAnalyticsClientBuilder()
            .credential(new AzureKeyCredential("xxxxxxxxxx"))
            .endpoint("https://xxxxxx.cognitiveservices.azure.com/")
            .buildClient();

        String text = "私の推しメンは乃木坂46の大園桃子さんです。";
        DetectedLanguage detectedLanguage = textAnalyticsClient.detectLanguage(text);
        System.out.printf("検出した言語は %s です。ISO 6391の言語コードは %s 、スコアは %f.%n です",
            detectedLanguage.getName(), detectedLanguage.getIso6391Name(), detectedLanguage.getConfidenceScore());
    }
}
```

# Text Analyticsの設定

コードの準備ができたらAzureのポータルを開いてCognitive Servicesを検索します。以下の画面になったら「cognitive servicesの作成」を押します。

![スクリーンショット 2021-04-28 22.40.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47737/a502da3f-2f20-dd86-ad8f-5e0c1d711ed4.png)

「Text Analytics」は日本語で「テキスト分析」と出てくるので、そのまま選びます。
![スクリーンショット 2021-04-28 22.41.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47737/41cd265e-24ad-6bd3-8289-ba999c855da7.png)

「作成」ボタンを押します。
![スクリーンショット 2021-04-28 22.41.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47737/fe0b94bf-c6fe-3059-a5d7-15c696a624d6.png)

リソースグループと名前を入力して価格レベルを選択します。今回はFree F０を選びました。
![スクリーンショット 2021-04-28 22.42.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47737/c4c807c8-6fea-f71d-f538-422baa6396b4.png)

APIキーをクリックします。
![スクリーンショット 2021-04-28 22.45.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47737/9bcbbd87-0b39-0865-9d23-2abda1802a31.png)

キー１をコピーして、冒頭に紹介したJavaコードに設定します。エンドポイントも同様です。
![スクリーンショット 2021-04-28 22.45.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47737/cba00083-9a7a-3698-4af6-94a3963cd9c3.png)

これだけです。これでJavaのプログラムを実行すれば、最初に紹介した結果になります。

参考ドキュメントはこちらです。
https://github.com/Azure/azure-sdk-for-java/tree/azure-ai-textanalytics_5.1.0-beta.5/sdk/textanalytics/azure-ai-textanalytics