2015-04-07 2 views
1

Il existe un code simple qui compare deux chaînes, puis s'il contient un mot-clé, il effectue une action. La chose est que je souhaite après avoir détecté le mot-clé dans le texte, il extrait en quelque sorte la phrase qu'il est à l'intérieur. Voici le code:Extraction d'une phrase à l'aide d'un tokenizer

String keyword="Keyword(S)"; 

     StringTokenizer tokenizer =new StringTokenizer(text) ; 

     if(tokenizer.hasMoreTokens()) 
     { 
       tokenizer.nextToken(); 

       for(final String s :text.split(" ")){ 

        if(keyword.equals(s)) 
        { 

       //get the whole sentence 
        } 

     } 

EDIT: Voici un exemple: Etant donné que nous avons le texte suivant:

Text summarization is the process of extracting salient information from the source text and to present that 
information to the user in the form of summary. It is very difficult for human beings to manually 
summarize large documents of text. Automatic abstractive summarization provides the required solution 
but it is a challenging task because it requires deeper analysis of text. In this paper, a survey on abstractive 
text summarization methods has been presented. Abstractive summarization methods are classified into two 
categories i.e. structured based approach and semantic based approach. 

maintenant que nous recherchons les toutes les phrases qui contiennent le mot , puis renvoyez la phrase. Peut-être devrions-nous stocker un jeton à . et chaque fois que nous trouverons le mot-clé, nous utiliserons ce jeton pour obtenir le début de la phrase et continuerons jusqu'à ce que nous atteignions un autre . ou cela semble déraisonnable?

+6

Quel est le titre et que contient-il? Pourquoi ignorez-vous les mots que vous obtenez du tokenizer? – Eran

+0

@Eran le tokenizer est juste destiné à vérifier si nous atteignons à la fin du document et le titre est une version texte d'un 'pdf 'qui est extrait en utilisant des bibliothèques – lonesome

+0

@Eran il y avait une faute de frappe qui vous a rendu confus donc je édité le code., peut-être maintenant il semble plus clair ou pas encore? – lonesome

Répondre

0

Je pense que vous devez créer jeton sur la base de . puis vérifiez le mot-clé comme ci-dessous:

String keyword="summarization"; 
    StringTokenizer tokenizer =new StringTokenizer(text,"\\.") ; 

    while(tokenizer.hasMoreTokens()) 
    { 
      String x= tokenizer.nextToken(); 

       for(final String s :x.split(" ")){ 

       if(keyword.equals(s)) 
       { 
        System.out.println(x); 
       } 
      } 
    } 
+1

c'était bien! J'ai eu l'idée de considérer le '.' comme mentionné dans la question, mais je ne savais pas comment le faire. il y a une amélioration. est-il possible d'utiliser plus d'un délimiteur comme '.' et', 'et'; 'pour un seul tokenizer? – lonesome

+0

vous pouvez utiliser la méthode split() ou la classe Pattern et Matcher. – Prashant

+0

vous voulez dire dans la boucle for? – lonesome