質問

私はスタンフォード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)メソッドを使用します。この方法は正しいです:「偽」、この言葉は、パーサはから訓練されたテキストの約1万語に(与えられた総額で)見られなかったことを意味します。しかし、100万本の言葉は、単にデータ駆動型の方法での総合的なスペルチェッカを訓練するのに十分なテキストではありません。人々は通常、複数のテキストの少なくとも二桁を使用して、うまく総額を処理するためのいくつかの賢さを追加することができます。パーサは、トレーニングデータに見えないあったが、これは何isKnown(String)メソッドが戻るには反映されていない単語を処理するために、この賢の一部を含む。

他のヒント

これは、あなたの答えのように見える/エラーが固有名詞の間で分割されている、本物の言葉と真のスペルミス(私は仮定の辞書には存在しません)。とにかくチェックする価値 - あなたはそれがないように十分にスマートになると思い期待したいのに「誠実」の偽陰性も、その総額はそれをオフに投げることがあります示唆しています。複数形は、いずれかの問題ではなく、「神」の偽陰性ではないでしょうか?それは正しく「神」を識別していますか?

あなたはスペルチェックしようとしているので、

、なぜ間接的にそれを確認? lp.getLexicon()。isKnown(w.word())内部で何をしているのですか?それがロードされたコーパスに依存しませんか?理由だけで、辞書をロードする大きなハッシュにケースを正常化し、チェック「が含まれている」んでありませんか?あなたがNLPのコンテキストにいるので、また、特にあなたが100%の精度を探していないことを考えると、適切な名前を取り除くために合理的に簡単にする必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top