我将在序言中说我根本没有编程方面的技术经验,所以如果我使用的是不正确的术语,请原谅我,但我仍然有责任找到解决问题的方法。
我们有一个应用程序的一部分,旨在识别Facebook和Twitter帖子中的正面和负面的单词和表情符号。我们为此开发了全面的词典,但是我们的代码表现不佳。
问题:以标点符号结尾的单词(例如惊人的!)没有被识别出来。就目前而言,单词是基于空白区域分割的。我认为我们不能完全删除标点符号,因为这会影响识别表情符号列表。
解决方案:我们希望遵循这些方针: (1)在白色空间上分裂得到文字 然后,对于每个单词: (i)检查它们是否与任何现有字符串匹配(例如,“害怕”) (ia)如果他们这样做,请转到下一个单词 (ib)如果他们不这样做,请从单词的尾部删除标点符号,然后返回(i)。
是否有人能够帮助我解决这个问题的潜在语法?我们需要为iPhone和Android(c ++和java?)编写这个。 非常感谢任何帮助!
答案 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句柄中剥离@
会有用吗?如果有任何问题,请回复我。