0

次のコードを使用してテキストファイルをトークン化しようとしています:

    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」のはずです。しかし、それは何らかの理由でそれをしていません。すべてではなく一部の単語に対してのみこれを行っています。

4

2 に答える 2

0
于 2012-12-09T14:12:34.540 に答える
0

Java API から:置換文字列内のバックスラッシュ (\) とドル記号 ($) は、リテラル置換文字列として扱われる場合とは結果が異なる場合があることに注意してください。を参照してください Matcher.replaceAll必要に応じて、これらの文字の特別な意味を抑制するために使用します Matcher.quoteReplacement(java.lang.String)

于 2012-12-09T13:49:49.003 に答える