JavaでCognitive ServicesのText Analyticsを使う


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

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

実行結果

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

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

以下の結果になります。

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

英語を入れてみます。

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に以下の依存性を追加します。

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

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

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の作成」を押します。

「Text Analytics」は日本語で「テキスト分析」と出てくるので、そのまま選びます。

「作成」ボタンを押します。

リソースグループと名前を入力して価格レベルを選択します。今回はFree F0を選びました。

APIキーをクリックします。

キー1をコピーして、冒頭に紹介したJavaコードに設定します。エンドポイントも同様です。

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

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