Как очистить грязный текст с помощью 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 + " ");
}
}
}