Traduire à l'aide de l'API de texte Microsoft Translator en Java (japonais → anglais)

J'ai essayé l'API de texte Microsoft Translator en Java.

Je n'ai pas pu trouver la source d'exemple Java de manière inattendue, je vais donc la publier comme référence. Vous pouvez l'utiliser immédiatement si vous modifiez la clé, tokenUrl et transUrl en fonction de votre environnement. En passant, vous devez utiliser votre propre clé, qui est la suivante. tokenUrl (API de jeton pour authentification-URL) https://api.cognitive.microsoft.com/sts/v1.0/issueToken
transUrl (API pour translation-URL) https://api.microsofttranslator.com/V2/http.svc/TranslateArray

La source


@Component
public class TranslatorAPI {

    @Value("${translation.subscriptionKey}")
    private String key;

    @Value("${translation.tokenApi.url}")
    private String tokenUrl;

    @Value("${translation.transApi.url}")
    private String transUrl;

    /**
     *Traduisez la chaîne cible en anglais.
     * @mots param Caractère cible
     * @retourner le résultat de la traduction
     */
    public String[] translator(String... words) {
        return translatorPOSTToEN(words);
    }

    /**
     *Obtenez un jeton.
     */
    private String tokenPOST() {
        try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
            HttpPost postMethod = new HttpPost(tokenUrl);

            // Header
            postMethod.setHeader("Content-Type", "application/json");
            postMethod.setHeader("Accept", "application/jwt");
            postMethod.setHeader("Ocp-Apim-Subscription-Key", key);

            try (CloseableHttpResponse response = httpClient.execute(postMethod)) {
                if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                    HttpEntity entity = response.getEntity();
                    return EntityUtils.toString(entity, StandardCharsets.UTF_8);
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        return null;
    }

    /**
     *Publiez sur l'API de traduction.
     */
    private String[] translatorPOSTToEN(String... words) {
        List<String> rtnWords = new ArrayList<String>();

        try (CloseableHttpClient httpClient = HttpClients.createDefault()) {

            HttpPost postMethod = new HttpPost(transUrl);

            // header
            //Obtenir un jeton d'authentification
            String token = tokenPOST();
            String authKey = "Bearer " + token;
            postMethod.setHeader("Content-Type", "application/xml");
            postMethod.setHeader("Authorization", authKey);

            //Mot traduit
            StringBuilder transWords = new StringBuilder();
            for (String word : words) {
                transWords.append("<string xmlns='http://schemas.microsoft.com/2003/10/Serialization/Arrays'>");
                transWords.append(word);
                transWords.append("</string>");
            }
            StringBuilder requestSB = new StringBuilder();
            requestSB.append("<TranslateArrayRequest>");
            requestSB.append("<AppId />");
            requestSB.append("<Texts>");
            requestSB.append(transWords.toString());
            requestSB.append("</Texts>");
            //Spécifiez la langue à traduire
            requestSB.append("<To>en</To>");
            requestSB.append("</TranslateArrayRequest>");

            postMethod.setEntity(new StringEntity(requestSB.toString(),
                    StandardCharsets.UTF_8));

            try (CloseableHttpResponse response = httpClient.execute(postMethod)) {
                if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                    HttpEntity entity = response.getEntity();
                    String res = EntityUtils.toString(entity, StandardCharsets.UTF_8);
                    InputSource inputSource = new InputSource(new StringReader(res));
                    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                    DocumentBuilder documentBuilder = factory.newDocumentBuilder();
                    Document document = documentBuilder.parse(inputSource);

                    //Trier la phrase de la chaîne de caractères à traduire
                    Element root = document.getDocumentElement();
                    NodeList rootChildren = root.getChildNodes();
                    for (int i = 0; i < rootChildren.getLength(); i++) {
                        Node node = rootChildren.item(i);
                        if (node.getNodeType() == Node.ELEMENT_NODE) {
                            Element element = (Element) node;
                            String val = element.getElementsByTagName("TranslatedText").item(0).getFirstChild().getNodeValue();
                            rtnWords.add(val);
                        }
                    }
                }
            }
        } catch (ParserConfigurationException | SAXException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return rtnWords.toArray(new String[rtnWords.size()]);
    }

}

Vérification

appel

        //échantillon
        String[] words = tranApi.translator("c'est un stylo", "Les pommes sont délicieuses");
        for (String word : words) {
            System.out.println(word);
        }

Résultat de sortie

This is a pen.
Apple delicious

Recommended Posts

Traduire à l'aide de l'API de texte Microsoft Translator en Java (japonais → anglais)
Traduire à l'aide de l'API Microsoft Translator Text sur Android ~ Implémentation ~
J'ai essayé d'utiliser l'API Elasticsearch en Java
Essayez d'utiliser l'API Stream en Java
Essayez d'utiliser l'API au format JSON en Java
ChatWork4j pour l'utilisation de l'API ChatWork en Java
[Java] Création d'API à l'aide de Jerjey (Jax-rs) avec eclipse
Essayez d'utiliser l'API Cloud Vision de GCP en Java
Essayez d'utiliser l'analyse syntaxique de l'API COTOHA en Java
API Zabbix en Java
Essayez d'utiliser RocksDB avec Java
API Java Stream en 5 minutes
Opération Elasticsearch via l'API REST à l'aide d'Apache HttpClient en Java
Conseils d'utilisation de Salesforce SOAP et de l'API Bulk en Java
NLP4J [001a] Analyse morphologique avec Java (utilisant l'analyse morphologique japonaise de Yahoo! Developer Network)
Lisez facilement les fichiers texte en Java (Java 11 et Java 7)
Exporter un problème à l'aide de l'API Java de JIRA
Chiffrer à l'aide du chiffrement RSA en Java
Générer l'URL de l'API CloudStack en Java
Hit l'API de Zaim (OAuth 1.0) en Java
Analyser l'analyse syntaxique de l'API COTOHA en Java
Connexion HTTPS utilisant tls1.2 dans Java 6
J'ai essayé d'utiliser JWT en Java
JPA (API de persistance Java) dans Eclipse
NLP4J [002] Essayez l'analyse syntaxique du japonais à l'aide de Yahoo! Developer Network Japanese Dependency Analysis (V1) en Java
Implémenter l'autorisation API Gateway Lambda dans Java Lambda
Traitement des données à l'aide de l'API de flux de Java 8
Étude de Java 8 (API de date dans le package java.time)
Appelez l'API de notification Windows en Java
Mapper sans utiliser de tableau en java
ERRORCODE = -4471 se produit dans une application Java qui utilise Db2.
Lire Felica en utilisant RC-S380 (PaSoRi) en Java
Essayez d'ajouter du texte à une image avec Scala en utilisant la bibliothèque standard de Java
NLP4J [004] Essayez l'analyse de texte en utilisant le traitement du langage naturel et le traitement statistique de l'analyse syntaxique en Java
NLP4J [003] Essayez l'analyse de texte en utilisant le traitement du langage naturel et le traitement statistique des pièces en Java