次のコードを使用してテキストファイルをトークン化しようとしています:
String fileContent = "";
String fileContentTokens[];
try{
fileContent = new Scanner(new File(fname)).useDelimiter("\\Z").next();
} catch(Exception ex) {
System.out.println(ex.getMessage());
}
fileContent = fileContent.replaceAll("\\s*([,.?!\"'()-:*;])\\s*", " $1 ");
//System.out.println(fileContent);
fileContentTokens = fileContent.split(" ");
問題は、トークンが適切に形成されていないことです。つまり、一部の単語にはまだ引用符が付けられており、一部の単語にはまだアポストロフィが付けられています。上記のコードは、すべての句読点の間にギャップを入れることになっているため、それ自体の単語には結び付けられません。例: 「That's cool」は「That's cool」のはずです。しかし、それは何らかの理由でそれをしていません。すべてではなく一部の単語に対してのみこれを行っています。