识别单词串和表情符号,标点符号有问题

时间:2015-08-07 04:09:23

标签: java ios sentiment-analysis

我将在序言中说我根本没有编程方面的技术经验,所以如果我使用的是不正确的术语,请原谅我,但我仍然有责任找到解决问题的方法。

我们有一个应用程序的一部分,旨在识别Facebook和Twitter帖子中的正面和负面的单词和表情符号。我们为此开发了全面的词典,但是我们的代码表现不佳。

问题:以标点符号结尾的单词(例如惊人的!)没有被识别出来。就目前而言,单词是基于空白区域分割的。我认为我们不能完全删除标点符号,因为这会影响识别表情符号列表。

解决方案:我们希望遵循这些方针: (1)在白色空间上分裂得到文字 然后,对于每个单词:     (i)检查它们是否与任何现有字符串匹配(例如,“害怕”)         (ia)如果他们这样做,请转到下一个单词         (ib)如果他们不这样做,请从单词的尾部删除标点符号,然后返回(i)。

是否有人能够帮助我解决这个问题的潜在语法?我们需要为iPhone和Android(c ++和java?)编写这个。 非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我假设您已经有一个方法(我称之为checkDictionaryForMatches())来检查一个单词是否与您在词典中存储的单词匹配。

public static boolean[] checkString(String string){

    String[] stringarray = string.split(" ");
    boolean[] boolarray = new boolean[stringarray.length];
    for (int i = 0; i < stringarray.length; i++){
        if (stringarray[i].checkDictionaryForMatches() == true){
            boolarray[i] = true;
        }
        else{
            StringBuilder sb = new StringBuilder(stringarray[i]);
            for (int j = 0; j < sb.length(); j++){
                if (sb.charAt(j) == '!'){
                    sb.deleteCharAt(j);
                }
            }

            if (sb.toString().checkDictionaryForMatches() == true){
                boolarray[i] = true;
            }
            else{
                boolarray[i] = false;
            }
        }
    }
    return boolarray;
}

这只会删除!字符,但是如果你想使用更通用的解决方案,你可以简单地为每个标点符号使用OR操作数(||),或者最好是RegEx。由于首先评估checkDictionaryForMatches()方法,因此您可以将所有表情符号定义为该字典的成员。我在手机上,所以我无法对其进行测试,但希望这样可行。

这会让你对意想不到的表情符号开放(@ _ @),但我不知道你将如何处理。它还可以防止用户将标点符号放入单词的中间(例如re.d或随机的内容)。也许从Twitter句柄中剥离@会有用吗?如果有任何问题,请回复我。