我有一个文本并将其拆分为由空格分隔的单词。
我正在对单位进行分类,如果它出现在同一个单词中,它们会起作用(例如:'100m','90kg','140°F','US $ 500'),但我遇到了问题单独出现,每个部分都在一个单词中(例如:'100°C','US $ 450','150 km')。
分类器算法可以理解单位是否在右边并且缺少值是在左侧还是右侧。
我的问题是如何迭代列表中提供纠正字的所有单词给分类器。
这只是代码的一个例子。我试过很多方法。
for(String word: words){
String category = classifier.classify(word);
if(classifier.needPreviousWord()){
// ?
}
if(classifier.needNextWord()){
// ?
}
}
换句话说,我需要遍历列表,对所有单词进行分类,如果需要测试前一个单词,则提供最后一个单词和单位。如果需要下一个单词,请提供单位和下一个单词。看似简单,但我不知道该怎么做。
答案 0 :(得分:1)
不要在for循环中使用隐式迭代器,而是使用显式迭代器。然后你可以随心所欲地来回走。
Iterator<String> i = words.iterator();
while (i.hasNext()) {
String category = classifier.classify(i.next());
if(classifier.needPreviousWord()){
i.previous();
}
if(classifier.needNextWord()){
i.next();
}
}
这不完整,因为我不知道你的分类器究竟做了什么,但它应该让你知道如何继续。
答案 1 :(得分:0)
这可能有所帮助。
public static void main(String [] args)
{
List<String> words = new ArrayList<String>();
String previousWord = "";
String nextWord = "";
for(int i=0; i < words.size(); i++) {
if(i > 0) {
previousWord = words.get(i-1);
}
String currentWord = words.get(i);
if(i < words.size() - 1) {
nextWord = words.get(i+1);
} else {
nextWord = "";
}
String category = classifier.classify(word);
if(category.needPreviousWord()){
if(previousWord.length() == 0) {
System.out.println("ERROR: missing previous unit");
} else {
System.out.println(previousWord + currentWord);
}
}
if(category.needNextWord()){
if(nextWord.length() == 0) {
System.out.println("ERROR: missing next unit");
} else {
System.out.println(currentWord + nextWord);
}
}
}
}