【问题标题】:Identifying word strings and emoticons, trouble with punctuation识别字符串和表情符号,标点符号的麻烦
【发布时间】:2015-08-07 04:09:23
【问题描述】:

首先我要说我根本没有编程方面的技术经验,所以如果我使用了不正确的术语,请原谅我,但我仍然负责为我们遇到的问题找到解决方案。

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

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

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

有没有人可以帮助我了解潜在的语法?我们需要为 iPhone 和 Android(c++ 和 java?)编写这个。 非常感谢任何帮助!

【问题讨论】:

    标签: java ios sentiment-analysis


    【解决方案1】:

    我假设您已经有一个方法(我称之为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 句柄中剥离 @ 或其他什么有用?如果有任何问题,请回复我。

    【讨论】:

    • 非常感谢您的帮助!这无疑帮助我们开发了解决方案。它是为了:对我们字典中的所有表情符号在句子上运行匹配(不拆分);然后识别单词:拆分所有不是a-zA-Z0-9'的东西。但是,它确实有一小部分误报匹配(例如,像这样的标点符号错误“我正在编写颜色列表:紫色,绿色蓝色”=:P)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    相关资源
    最近更新 更多