2016-10-20 4 views
1

Je souhaite afficher un texte déjà corrigé au lieu du format ci-dessous.Application automatique des suggestions dans l'outil de langage Java

JLanguageTool langTool = new JLanguageTool(new BritishEnglish()); 
List<RuleMatch> matches = langTool.check("A sentence with a error in the Hitchhiker's Guide tot he Galaxy"); 
for (RuleMatch match : matches) { 
    System.out.println("Potential error at characters " + 
     match.getFromPos() + "-" + match.getToPos() + ": " + 
     match.getMessage()); 
    System.out.println("Suggested correction(s): " + 
     match.getSuggestedReplacements()); 
} 

de sorte que la sortie doit être comme « Une phrase avec une erreur ...... »

Répondre

2

je suis tombé sur ce problème quand je avais besoin de créer un « Voulez-vous dire » pour le moteur de recherche que je développe. Le code suivant semblait faire l'affaire:

public String didYouMean(String query) { 

    JLanguageTool langTool = new JLanguageTool(new BritishEnglish()); 
    List<RuleMatch> matches = null; 
    try { 
     matches = langTool.check(query); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    String didYouMean = ""; 
    int lastPos = 0; 

    for (RuleMatch match : matches) { 
     didYouMean += query.substring(lastPos, match.getFromPos()); 
     didYouMean += match.getSuggestedReplacements().get(0); 
     lastPos = match.getToPos();  
    } 

    if (lastPos < query.length()) { 
     didYouMean += query.substring(lastPos, query.length()); 
    } 

    return didYouMean; 
} 

En itérer sur les matches, j'ai pu ajouter la chaîne de requête d'origine (la chaîne avec les erreurs) à une nouvelle chaîne, mais en remplaçant les erreurs avec le premier remplacement suggéré de LanguageTool.

Espérons que cela aide!