Java 识别字串和表情符号,标点符号有问题

Java 识别字串和表情符号,标点符号有问题,java,ios,sentiment-analysis,Java,Ios,Sentiment Analysis,我要先说我在编程方面没有任何技术经验,所以如果我使用了不正确的术语,请原谅,但我的任务仍然是找到解决问题的方法 我们有一个应用程序的一部分,用于识别Facebook和Twitter帖子中的积极和消极词语和表情。我们已经为此开发了全面的字典,但是我们的代码执行得并不好 问题:以标点符号结尾的单词,例如:惊人!没有被识别。目前,单词是根据空格分割的。我认为我们不能完全去掉标点符号,因为这会影响表情符号列表的识别 解决方案:我们希望遵循以下思路: 1在空白处拆分以获取单词 然后,对于每个单词: 我检查

我要先说我在编程方面没有任何技术经验,所以如果我使用了不正确的术语,请原谅,但我的任务仍然是找到解决问题的方法

我们有一个应用程序的一部分,用于识别Facebook和Twitter帖子中的积极和消极词语和表情。我们已经为此开发了全面的字典,但是我们的代码执行得并不好

问题:以标点符号结尾的单词,例如:惊人!没有被识别。目前,单词是根据空格分割的。我认为我们不能完全去掉标点符号,因为这会影响表情符号列表的识别

解决方案:我们希望遵循以下思路: 1在空白处拆分以获取单词 然后,对于每个单词: 我检查它们是否与任何现有字符串匹配,例如“害怕” 如果有,就转到下一个单词 ib如果没有,请从单词尾部删除标点符号,然后返回到i

有没有人能帮我了解这个可能的语法?我们需要为iPhone和Android C++和java编写这个。
非常感谢您的帮助

我假设您已经有了一个方法,我称之为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;
}
这只会让你摆脱痛苦!字符,但如果您想使用更通用的解决方案,只需对每段标点符号使用或操作数| |,或者最好使用正则表达式。由于首先计算checkDictionaryForMatches方法,因此可以将所有表情符号定义为该词典的成员。我在手机上,所以我不能测试它,但希望它能起作用


这确实会让你产生意想不到的表情,但我不知道你会怎么处理。它还可以防止用户将标点符号放在单词的中间,例如re.d或一些随机的东西。也许它对从Twitter句柄中剥离@会有用,或者其他什么?如果有任何问题,请与我联系

非常感谢你的帮助!这无疑帮助我们制定了解决方案。它的目的是:在我们的字典中匹配所有表情符号的句子“不拆分”;然后识别单词:对所有不是a-zA-Z0-9'的单词进行拆分。但是,它确实有一小部分假阳性匹配,例如,像这样的标点符号错误。我正在写一个颜色列表:紫色,绿蓝色=:P