Je suis vraiment impressionnée par la flexibilité et l’agilité de Nuxeo Content Services Platform et l’intégration aux API de Machine Learning de Google Cloud est l’illustration classique de la puissance de la plateforme.
Nous avons récemment ajouté une intégration aux API Natural Language et Translation de Google Cloud en nous appuyant sur le travail réalisé pour notre intégration à l’API Cloud Vision de Google. Les résultats sont très positifs et nous espérons qu’ils seront utiles pour ceux d’entre vous qui voudront profiter des travaux de Google en matière de Machine Learning pour récupérer des informations dans du texte et/ou traduire du texte (ou des documents entiers) à partir de et vers plusieurs langues (actuellement plus de 100 langues sont supportées). Comme pour son API Vision, Google Cloud a développé ses services Translation et Natural Language à partir d’une architecture REST. Et bien sûr, en raison de leur grande flexibilité, il est possible d’étendre ces services pour qu’ils acceptent d’autres fournisseurs.
Intégration de l’API Translation de Google Cloud
Google Cloud met à disposition une bibliothèque client Java pour faciliter l’envoi de requêtes et la récupération de réponses vers/depuis son API. Nous sommes donc en mesure de nous brancher sur le service Translation et de traduire du texte en appelant la méthode correspondante.
Translation com.google.cloud.translate.Translate.translate(String text, TranslateOption... options)
Translates the provided texts.
Example of translating a text:
Translation translation = translate.translate("Hola Mundo!");
Example of translating a text, specifying source and target language:
Translation translation = translate.translate("Hola Mundo!", TranslateOption.sourceLanguage("es"), TranslateOption.targetLanguage("de"));
Parameters:
text the text to translate
options
Returns:
An object containing information on the language translation
Throws:
TranslateException - upon failure or if TranslateOption.model(String) is used by a non-whitelisted user
GoogleTranslationProvider:
protected Translate getTranslationServiceClient() throws IOException {
if (translationServiceClient == null) {
synchronized (this) {
if (translationServiceClient == null) {
try (InputStream is = new FileInputStream(new File(getCredentialFilePath()))) {
final GoogleCredentials myCredentials = GoogleCredentials.fromStream(is);
translationServiceClient = TranslateOptions.newBuilder().setCredentials(myCredentials).build().getService();
} catch (IOException ioe) {
throw new NuxeoException(ioe);
}
}
}
}
return translationServiceClient;
}
@Override
public TranslationResponse translateText(String text, String sourceLanguage, String targetLanguage) throws IOException {
Translate translationService = getTranslationServiceClient();
Translation response = translationService.translate(text);
GoogleTranslationResponse gtr = new GoogleTranslationResponse(response);
return gtr;
}
Le cas spécifique que nous avons rencontré ici concernait l’ingestion de documents pouvant potentiellement contenir du texte dans d’autres langues. Nous avons eu le sentiment que détecter la langue source d’un texte et le traduire dans d’autres langues était très intéressant. Et le résultat était à la haute de nos attentes, car nous y sommes parvenus tout en versionnant et en enregistrant le document contenant le texte traduit !
Natural Language Processing
L’API Natural Language Processing utilise d’autres opérations qui permettent d’analyser le texte de façon très intéressante. Vous pouvez non seulement extraire des informations spécifiques (personnes, lieux ou événements), mais cette API permet également de comprendre le sentiment ou l’intention du texte. Une fois l’intégration terminée, nous avons hésité entre plusieurs façons d’utiliser ces résultats. Nous avons donc pensé que c’était l’occasion idéale de vous demander comment nous pourrions utiliser l’API Natural Language Processing dans Nuxeo Platform !
Question :