始めに
JavaでPDFファイルをOCR処理してみたを元に、セキュリティスペシャリスト 午前2の頻出単語を分析しました
参照ページ
解析用のソース
JapaneseAnalyser.java
package jpn;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import java.util.stream.Collectors;
import org.atilika.kuromoji.Token;
import org.atilika.kuromoji.Tokenizer;
public class JapaneseAnalyser {
public static void main(String[] args) throws Exception{
//parse_1.txtにセキュリティスペシャリスト 午前2の問題用紙をOCR読み取りした結果が格納されている
String input = Files.lines(Paths.get("parse_1.txt"), Charset.forName("MS932"))
.reduce((s,v)->s+v.replaceAll("\\r\\n", "").trim()).get();
analysis(input);
}
public static void analysis(String s){
Tokenizer tokenizer = Tokenizer.builder().build();
List<Token> tokens = tokenizer.tokenize(s);
tokens
.stream()
.filter(a ->(a.getPartOfSpeech().indexOf("名詞")>=0))
.map(e -> e.getSurfaceForm())
.sorted()
.collect(
Collectors.groupingBy(b->b,
Collectors.summingInt(b->1))
)
.forEach((m1,m2)->System.out.println(String.format(" 出現頻度 %d 出現単語 : %s",m2,m1)));
}
}
解析結果
感想
- 相変わらず、DNSに関する問題が多い。セキュリティの穴としてよく狙われるから?
- 機械学習に関する語句が出ているのが目新しい。これから情報処理技術者試験を勉強する人にとってはAIの分野も薄くでもいいから勉強する必要があるかもね
- JavaのStreamAPIがあればちょっとした日本語解析をするのにpython使う必要ないですね。というか、pythonは2系と3系で使えるライブラリがバラバラで、正直イライラする。pythonが使いやすいって言っている人、どうやって開発しているんだろう・・・。