Разбор "стоп-слов" с использованием списка массивов

Я использую простой код с тремя циклами for для получения предложений из списка массивов, их токенизации, удаления стоп-слов и хранения остальных в двумерном массиве.

SentenceList - это ArrayList.

Стоп-слова - это массив, содержащий список стоп-слов.

Программа стремится взять каждое предложение, удалить стоп-слова и сохранить остальные в массиве. Вот код:

String[][] trim=new String[sentenceList.size()][largest];
    StringTokenizer st1;
    for(int i=0;i<sentenceList.size();i++)
    {
        st1= new StringTokenizer(sentenceList.get(i)," ,(){}[]/.;:'&?!");
        int count=st1.countTokens();
        for(int j=0;j<count;j++)
        {
            String token=st1.nextToken();
            for(int k=0;k<stopwords.length;k++)
            {
            if(token.equals(stopwords[k]))
                continue;
            else
                trim[i][j]=token;
            }                   
        }
     }
    //PRINT CHECK
    for(int i=0;i<sentenceList.size();i++)
    {
        for(int j=0;j<largest;j++)
        {
            if(trim[i][j]!=null)
            System.out.print(trim[i][j]+" ");
        }
    System.out.println();

Запутывающий элемент в том, что вышеприведенное не работает, но если я обмениваюсь с частью if и else, она работает и я получаю только стоп-слова

1 ответ

Решение

Если я вас правильно понял, это то, что вам нужно... Проблема была в том, что вы добавляли слова в 3-й цикл for. Вы должны проверить условие в 3-м цикле, выйти во 2-й цикл с разрывом, а затем обработать слово (добавьте в этом случае).

String[][] trim=new String[sentenceList.size()][largest];
StringTokenizer st1;
boolean isStop;
for(int i=0;i<sentenceList.size();i++)
{
    st1= new StringTokenizer(sentenceList.get(i)," ,(){}[]/.;:'&?!");
    int count=st1.countTokens();
    for(int j=0;j<count;j++)
    {
        isStop = false;
        String token=st1.nextToken();
        for(int k=0;k<stopwords.length;k++)
        {
            if(token.equals(stopwords[k])) {
                isStop = true;
                break;
            }
        }
        if(isStop)
            continue;
        else {
            trim[i][j]=token;
        }                   
    }
 }
//PRINT CHECK
for(int i=0;i<sentenceList.size();i++)
{
    for(int j=0;j<largest;j++)
    {
        if(trim[i][j]!=null)
        System.out.print(trim[i][j]+" ");
    }
    System.out.println();
}
Другие вопросы по тегам