1
私は非常に基本的な感情分析プログラムで、単語を単語の配列に分割し、各単語を3つのファイル(陽性、陰性、および中性)各感情の言葉、私は平均スコアを表示したい。私は1〜10のスケールで文を評価したい(10人は幸せ、0人は悲しい)。私は中立点である5でスコアを初期化しました。javaを使用してテキストファイル内の文字列を検索する問題
私がプログラムを実行すると、結果はスコアとして5しか表示されません。ファイル内に文字列を見つける際に問題があるようです。
b.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e)
{
String str = t1.getText();
Label result;
int score = 5;
String[] words = str.split("\\s+");
for (int i = 0; i < words.length; i++) {
words[i] = words[i].replaceAll("[^\\w]", "");
}
for (int i = 0; i < words.length; i++){
if(search_pos(words[i])){
score = (score + 10)/2;
break;
}
if(search_neg(words[i])){
score = (score + 5)/2;
break;
}
if(search_neu(words[i])){
score = (score - 10)/2;
break;
}
}
result=new Label("score is " + score);
result.setBounds(50,350, 200,30);
f.add(result);
}
});
static boolean search_pos(String s){
Scanner scanner=new Scanner("F:\\pos-words.txt");
boolean flag = false;
while(scanner.hasNextLine()){
if(s.equalsIgnoreCase(scanner.nextLine().trim())){
// found
flag = true;
}
}
return flag;
}
static boolean search_neg(String s){
Scanner scanner=new Scanner("F:\\neg-words.txt");
boolean flag = false;
while(scanner.hasNextLine()){
if(s.equalsIgnoreCase(scanner.nextLine().trim())){
// found
flag = true;
}
}
return flag;
}
static boolean search_neu(String s){
Scanner scanner=new Scanner("F:\\neu-words.txt");
boolean flag = false;
while(scanner.hasNextLine()){
if(s.equalsIgnoreCase(scanner.nextLine().trim())){
// found
flag = true;
}
}
return flag;
}
}
助けてください。
がためにどうもありがとうございました答え、私はちょうどファイルパスであるコードを変更しました。私はそれを "F:\\ words_score.txt"にし、出力は再び5です。私が何を入力しても、答えは常に5です。私はNETBEANSでプロジェクトを実行しています。何が問題なの? –
bro、正直言って、私はあなたのコードを見ていませんでしたが、最初のテストでもテストの部分で0が得られました。私はそれは単にgetScoreメソッドの結果がスコア= getScore(word)スコア+ = getScore(単語)に修正したので、コードをちょうど時間通りに書くことができたので、もう一度あなたにリクエストして、その番号をクリックするだけで答えになるあなたのために、他の人にも役立ちます。 – ArifMustafa