会話のテキスト ファイルをスキャンして、肯定的な単語と否定的な単語の数を見つける方法を考え出そうとしています。肯定語と否定語は、会話テキスト ファイルを「スキャン」するために使用される 2 つの別個のテキスト ファイルに含まれています。
肯定的な単語と否定的な単語の数を見つけた後、それぞれを集計して、さらに肯定的な単語または否定的な単語が見つかったかどうかを教えてくれます。
私はこれまでのところ以下のコードを持っていますが、肯定的な言葉だけを数えています。私はこの段階で NLP のようなものを見ているわけではなく、もっと基本的なレベルのものです。
間違った場所で否定的な言葉を探している 2 番目の部分があると思います。そして、ブール値を使用して、肯定的な単語または否定的な単語が見つかったかどうかを知る必要があると思いますが、その方法がわかりません。
私はJavaとプログラミング全般に慣れていないので、かなり行き詰まっています。
どんな助けでも大歓迎です。
package omgilisearch;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.HashSet;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
public class SentimentTest {
public static void main(String[] args) throws Exception {
printAllCounts(
readWordFile("ConversationTest.txt", loadKeywords("PositiveWords.txt")));
}
public static void main1(String[] args) throws Exception {
printAllCounts(
readWordFile("ConversationTest.txt", loadKeywords("NegativeWords.txt")));
}
private static Map<String, Integer> readWordFile(
String fname, Set<String> keywords) throws FileNotFoundException
{
final Map<String, Integer> frequencyData = new TreeMap<String, Integer>();
for (Scanner wordFile = new Scanner(new FileReader(fname));
wordFile.hasNext();)
{
final String word = wordFile.next();
if (keywords.contains(word))
frequencyData.put(word, getCount(word, frequencyData) + 1);
}
return frequencyData;
}
private static void printAllCounts(Map<String, Integer> frequencyData) {
System.out.println("-----------------------------------------------");
System.out.println(" Occurrences Word");
for(Map.Entry<String, Integer> e : frequencyData.entrySet())
System.out.printf("%15d %s\n", e.getValue(), e.getKey());
System.out.println("-----------------------------------------------");
}
private static int getCount(String word, Map<String, Integer> frequencyData) {
return frequencyData.containsKey(word)? frequencyData.get(word) : 0;
}
private static Set<String> loadKeywords(String fname)
throws FileNotFoundException
{
final Set<String> result = new HashSet<String>();
for (Scanner s = new Scanner(new FileReader(fname)); s.hasNext();)
result.add(s.next());
return result;
}
}