gpt4 book ai didi

Java斯坦福NLP : Spell checking

转载 作者:搜寻专家 更新时间:2023-11-01 01:39:09 25 4
gpt4 key购买 nike

我正在尝试使用 Stanford NLP 检查文本示例的拼写准确性。它只是文本的度量,而不是过滤器或其他任何东西,所以如果它稍微偏离一点也没关系,只要错误是统一的。

我的第一个想法是检查词典是否知道该词:

private static LexicalizedParser lp = new LexicalizedParser("englishPCFG.ser.gz");

@Analyze(weight=25, name="Spelling")
public double spelling() {
int result = 0;

for (List<? extends HasWord> list : sentences) {
for (HasWord w : list) {
if (! lp.getLexicon().isKnown(w.word())) {
System.out.format("misspelled: %s\n", w.word());
result++;
}
}
}

return result / sentences.size();
}

但是,这会产生很多误报:

misspelled: Sincerity
misspelled: Sisyphus
misspelled: Sisyphus
misspelled: fidelity
misspelled: negates
misspelled: gods
misspelled: henceforth
misspelled: atom
misspelled: flake
misspelled: Sisyphus
misspelled: Camus
misspelled: foandf
misspelled: foandf
misspelled: babby
misspelled: formd
misspelled: gurl
misspelled: pregnent
misspelled: babby
misspelled: formd
misspelled: gurl
misspelled: pregnent
misspelled: Camus
misspelled: Sincerity
misspelled: Sisyphus
misspelled: Sisyphus
misspelled: fidelity
misspelled: negates
misspelled: gods
misspelled: henceforth
misspelled: atom
misspelled: flake
misspelled: Sisyphus

关于如何更好地做到这一点有什么想法吗?

最佳答案

将解析器词典的 isKnown(String) 方法用作拼写检查器并不是解析器的可行用例。该方法是正确的:“false”意味着在训练解析器的大约 100 万个文本单词中没有看到这个单词(具有给定的大写字母)。但是 100 万个单词不足以以数据驱动的方式训练综合拼写检查器。人们通常会多使用至少两个数量级的文本,并且很可能会增加一些技巧来处理大写。解析器包含一些巧妙的处理训练数据中未出现的词的方法,但这并未反射(reflect)在 isKnown(String) 方法返回的内容中。

关于Java斯坦福NLP : Spell checking,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1853378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com