Как очистить грязный текст с помощью Java

Я работаю над сбором данных из твиттера и их обработкой, но у меня проблема в том, что: текст грязный,

пример:

String dirtyText="this*is#a*&very_dirty&String";

пример:

String dirtyText="All f dis happnd bcause u gave ur time, talent n passion.";

пожалуйста, я хочу, чтобы это было как можно проще.

3 ответа

Решение

Это не простая проблема, чтобы решить. All f dis happnd может быть "очищен" для производства All *of* this happened или же All *if* this happened, В первом примере вы можете просто заменить все не алфавитные символы пробелами. Посмотрите этот вопрос, как это сделать.

В противном случае я думаю, что вам понадобится процессор естественного языка или, по крайней мере, проверка орфографии. Догадаться, каким должен быть твит на правильном английском языке, - это чрезвычайно сложная проблема. Посмотрите на Jazzy для проверки орфографии с открытым исходным кодом.

публичный класс CleaningDirtText {приватный статический финал String dirtyText = "thisis#a&very_dirty&String";

      public static void main(String[] args) {
    System.out.println(dirtyText);
    String[] words =    dirtyText.toLowerCase().trim().split("[\\W\\d]+");
    // System.out.println(preparedText);
    //String[] cleanText = dirtyText.toLowerCase().trim().split("[\\W]+");
    for (String clean : words) {
        System.out.print(clean + " ");
    }
}

}

публичный класс CleaningDirtText {приватный статический финал String dirtyText = "thisis#a&very_dirty&String";

      public static void main(String[] args) {
    /*
     * remove leading and trailing spaces, and split our words into a String array.
     * The split method allows you to break apart text on a given delimiter. In this
     * case, we chose to use the regular expression \\W, which represents anything
     * that is not a word character:
     */

    System.out.println(dirtyText);
    String[] words = dirtyText.toLowerCase().trim().split("[\\W\\d]+");
    for (int i = 0; i < words.length; i++) {
        System.out.print(words[i]);
    }
    System.out.println("\nsee the cleand text:-");
    for (String clean : words) {
        System.out.print(clean + " ");
    }
}

}

Другие вопросы по тегам