如果训练数据中出现与该单词相近的内容, Peter Norvig 著名的拼写检查器(此处为Java 8 版本)能够更正单个单词。但是我怎样才能适应它来处理整个短语。例如,如果我有一个文件,其中每个短语都由一个新行分隔:
Plastic box
Pencils and sketch
Romeo and Juliet
.
.
.
如果我告诉算法更正'Platic'
,它应该返回'Plastic box'
。同样,如果我告诉它更正'Pencils'
,它应该返回'Pencils and sketch'
。
我尝试更改上述代码的以下几行(Java 版本):
Stream.of(new String(Files.readAllBytes( dictionaryFile )).toLowerCase().replaceAll("[^a-z ]","").split(" ")).forEach( (word) ->{
dict.compute( word, (k,v) -> v == null ? 1 : v + 1 );
});
至
Stream.of(new String(Files.readAllBytes( dictionaryFile )).toLowerCase().split("\n")).forEach( (word) ->{
dict.compute( word, (k,v) -> v == null ? 1 : v + 1 );
});
但它似乎没有用。