Übersetzen mit der Microsoft Translator-Text-API in Java (Japanisch → Englisch)

Ich habe die Microsoft Translator-Text-API in Java ausprobiert.

Ich konnte die Java-Beispielquelle nicht unerwartet finden, daher werde ich sie als Referenz veröffentlichen. Sie können es sofort verwenden, wenn Sie den Schlüssel, tokenUrl und transUrl entsprechend Ihrer Umgebung ändern. Übrigens müssen Sie Ihren eigenen Schlüssel verwenden, der wie folgt lautet. tokenUrl (Token-API für Authentifizierungs-URL) https://api.cognitive.microsoft.com/sts/v1.0/issueToken
transUrl (API für Übersetzungs-URL) https://api.microsofttranslator.com/V2/http.svc/TranslateArray

Quelle


@Component
public class TranslatorAPI {

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

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

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

    /**
     *Übersetzen Sie die Zielzeichenfolge ins Englische.
     * @Parameterwörter Zielzeichen
     * @Übersetzungsergebnis zurückgeben
     */
    public String[] translator(String... words) {
        return translatorPOSTToEN(words);
    }

    /**
     *Holen Sie sich einen Token.
     */
    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;
    }

    /**
     *Post an die Übersetzungs-API.
     */
    private String[] translatorPOSTToEN(String... words) {
        List<String> rtnWords = new ArrayList<String>();

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

            HttpPost postMethod = new HttpPost(transUrl);

            // header
            //Holen Sie sich das Authentifizierungstoken
            String token = tokenPOST();
            String authKey = "Bearer " + token;
            postMethod.setHeader("Content-Type", "application/xml");
            postMethod.setHeader("Authorization", authKey);

            //Übersetztes Wort
            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>");
            //Geben Sie die zu übersetzende Sprache an
            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);

                    //Sortieren Sie den zu übersetzenden Zeichenkettensatz
                    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()]);
    }

}

Bestätigung

Anruf

        //Stichprobe
        String[] words = tranApi.translator("dies ist ein Stift", "Äpfel sind köstlich");
        for (String word : words) {
            System.out.println(word);
        }

Ausgabeergebnis

This is a pen.
Apple delicious

Recommended Posts

Übersetzen mit der Microsoft Translator-Text-API in Java (Japanisch → Englisch)
Übersetzen Sie mit der Microsoft Translator Text API unter Android ~ Implementierung ~
Ich habe versucht, die Elasticsearch-API in Java zu verwenden
Versuchen Sie es mit der Stream-API in Java
Versuchen Sie es mit der JSON-Format-API in Java
ChatWork4j für die Verwendung der ChatWork-API in Java
[Java] API-Erstellung mit Jerjey (Jax-rs) mit Eclipse
Versuchen Sie, die Cloud Vision-API von GCP in Java zu verwenden
Versuchen Sie es mit der Syntaxanalyse der COTOHA-API in Java
Zabbix API in Java
Versuchen Sie es mit RocksDB mit Java
Java Stream API in 5 Minuten
Elasticsearch-Vorgang über die REST-API mit Apache HttpClient in Java
Tipps zur Verwendung von Salesforce SOAP und Bulk API in Java
NLP4J Morphologische Analyse mit Java (unter Verwendung der japanischen morphologischen Analyse des Yahoo! Developer Network)
Einfaches Lesen von Textdateien in Java (Java 11 & Java 7)
Exportieren Sie ein Problem mithilfe der Java-API von JIRA
Verschlüsselung mit RSA-Verschlüsselung in Java
Generieren Sie die CloudStack-API-URL in Java
Treffen Sie Zaims API (OAuth 1.0) in Java
Analysieren der COTOHA-API-Syntaxanalyse in Java
HTTPS-Verbindung mit tls1.2 in Java 6
Ich habe versucht, JWT in Java zu verwenden
JPA (Java Persistence API) in Eclipse
NLP4J Versuchen Sie eine syntaktische Analyse von Japanisch unter Verwendung der japanischen Abhängigkeitsanalyse (V1) von Yahoo! Developer Network in Java
Implementieren Sie API Gateway Lambda Authorizer in Java Lambda
Datenverarbeitung mit der Stream-API von Java 8
Studieren Sie Java 8 (Datums-API im Paket java.time)
Rufen Sie die Windows-Benachrichtigungs-API in Java auf
Map ohne Verwendung eines Arrays in Java
ERRORCODE = -4471 tritt in einer Java-Anwendung auf, die Db2 verwendet.
Lesen Sie Felica mit RC-S380 (PaSoRi) in Java
Versuchen Sie, mit Scala mithilfe der Standardbibliothek von Java Text zu einem Bild hinzuzufügen
NLP4J Versuchen Sie eine Textanalyse unter Verwendung einer Verarbeitung in natürlicher Sprache und einer statistischen Verarbeitung der Syntaxanalyse in Java
NLP4J Versuchen Sie eine Textanalyse unter Verwendung einer Verarbeitung in natürlicher Sprache und einer statistischen Verarbeitung von Teilen in Java