如何使用 java 清除脏文本

How to clean dirty text using java

我正在从 Twitter 收集数据并对其进行处理,但我遇到的问题是:文字不干净,

示例:

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

示例:

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

我希望它尽可能简单。

这不是一个容易解决的问题。 All f dis happnd 可以是 "cleaned" 以产生 All *of* this happenedAll *if* this happened。对于第一个示例,您可以仅将所有非字母字符替换为空格。请参阅 this question 了解如何执行此操作。

否则我认为您需要一个自然语言处理器,或者至少需要一个拼写检查器。要用正确的英语猜测一条推文应该是什么是一个极其复杂的问题。查看 Jazzy 的开源拼写检查器。

public class CleaningDirtText { /* * 删除前导和尾随空格,并将我们的单词拆分为一个字符串数组。 * split 方法允许您在给定的分隔符上拆分文本。在这个 * 情况下,我们选择使用正则表达式 \W,它代表任何东西 * 这不是一个单词字符: / private static final 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 + " ");
    }
}

}

public class CleaningDirtText { private static final 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 + " ");
    }
}

}