2015-04-07 2 views
1

Существует простой код, который сравнивает две строки, а затем, если он содержит ключевое слово, он будет выполнять некоторые действия. Дело в том, что я хочу, чтобы после того, как я обнаружил ключевое слово в тексте, он каким-то образом извлекает предложение, которое находится внутри него. Вот код:извлечение предложения с использованием токенизатора

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: Вот пример: Учитывая, мы имеем следующий текст:

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. 

теперь мы ищем все предложения, которые содержат слово abstractive, а затем верните предложение. Может быть, мы должны хранить токен, когда он достигает ., а затем, когда мы находим ключевое слово, мы используем этот токен, чтобы получить начало предложения, и продолжаем, пока не достигнем другого ., или это звучит необоснованно?

+6

Что такое название и что он содержит? Почему вы игнорируете слова, которые вы получаете от токенизатора? – Eran

+0

@Eran токенизатор предназначен только для проверки, достигнута ли мы в конце документа, а название - текстовая версия '' '' '' '' '' ', которая извлекается с использованием некоторых библиотек. – lonesome

+0

@Eran была некоторая опечатка, которая заставила вас смутить, поэтому я отредактировал код., может быть, теперь он выглядит более ясным или еще нет? – lonesome

ответ

0

я думаю, вы должны создать маркер на основе ., а затем проверить это ключевое слово, как показано ниже:

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

было хорошо! у меня возникла идея рассмотреть '.', как упоминалось в вопросе, но не знал, как это сделать. есть улучшение. возможно ли использование более чем одного разделителей типа '.' и', 'и'; 'для одного токенизатора? – lonesome

+0

вы можете использовать метод split() или класс Pattern и Matcher. – Prashant

+0

Вы имеете в виду в 'for loop'? – lonesome

Смежные вопросы