识别字符串和表情符号,标点符号麻烦
Identifying word strings and emoticons, trouble with punctuation
首先我要说我完全没有编程方面的技术经验所以如果我使用了不正确的术语请原谅我,但我仍然有任务找到我们遇到的问题的解决方案。
我们有一个应用程序的一部分,旨在识别 Facebook 和 Twitter 帖子中的正面和负面词语和表情符号。我们为此开发了综合词典,但我们的代码性能不佳。
问题:未识别以标点符号结尾的词(例如 amazing!)。就目前而言,单词是根据白色 space 拆分的。我认为我们不能完全去除标点符号,因为这会影响识别表情符号列表。
解决方案:我们希望沿着这些思路:
(1) split on white space 得到单词
然后,对于每个单词:
(i) 检查它们是否匹配任何现有的字符串(例如,“afraid”)
(ia) 如果他们这样做,转到下一个词
(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;
}
这只会去掉 !
字符,但如果您想使用更通用的解决方案,您可以简单地为每个片段使用 OR
操作数 (||
)标点符号,或者最好是 RegEx
。因为首先评估 checkDictionaryForMatches()
方法,所以您可以将所有表情符号定义为该字典的成员。我在移动设备上,所以我无法对其进行测试,但希望它会起作用。
这确实会让您对意想不到的表情符号 (@_@) 敞开心扉,但我不知道您会如何应对。它还可以防止用户将标点符号放入单词中间(例如 re.d 或随机的东西)。也许它对从 Twitter 句柄中删除 @
或其他东西有用?如果有任何问题,请回复我。
首先我要说我完全没有编程方面的技术经验所以如果我使用了不正确的术语请原谅我,但我仍然有任务找到我们遇到的问题的解决方案。
我们有一个应用程序的一部分,旨在识别 Facebook 和 Twitter 帖子中的正面和负面词语和表情符号。我们为此开发了综合词典,但我们的代码性能不佳。
问题:未识别以标点符号结尾的词(例如 amazing!)。就目前而言,单词是根据白色 space 拆分的。我认为我们不能完全去除标点符号,因为这会影响识别表情符号列表。
解决方案:我们希望沿着这些思路: (1) split on white space 得到单词 然后,对于每个单词: (i) 检查它们是否匹配任何现有的字符串(例如,“afraid”) (ia) 如果他们这样做,转到下一个词 (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;
}
这只会去掉 !
字符,但如果您想使用更通用的解决方案,您可以简单地为每个片段使用 OR
操作数 (||
)标点符号,或者最好是 RegEx
。因为首先评估 checkDictionaryForMatches()
方法,所以您可以将所有表情符号定义为该字典的成员。我在移动设备上,所以我无法对其进行测试,但希望它会起作用。
这确实会让您对意想不到的表情符号 (@_@) 敞开心扉,但我不知道您会如何应对。它还可以防止用户将标点符号放入单词中间(例如 re.d 或随机的东西)。也许它对从 Twitter 句柄中删除 @
或其他东西有用?如果有任何问题,请回复我。