-1

我正在从 twitter 收集数据并对其进行处理,但我遇到的问题是:文本很脏,

例子 :

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

例子 :

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

请我希望它尽可能简单。

4

3 回答 3

0

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

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

于 2015-04-02T19:10:48.390 回答
0

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

}

于 2021-08-18T21:02:19.173 回答
0

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

}

于 2021-08-18T21:06:58.963 回答