문제

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

더 나은 방법에 대한 아이디어가 있습니까?

도움이 되었습니까?

해결책

Parser의 Lexicon 's Isshnown (String) 메소드를 사용하여 Parser의 실행 가능한 사용 사례가 아닙니다. 이 방법은 정확합니다. "거짓"은이 단어가 약 1 백만 단어의 텍스트에서 보지 못했음을 의미합니다. 그러나 백만 단어는 데이터 중심 방식으로 포괄적 인 맞춤법 체커를 훈련시키기에 충분한 텍스트가 아닙니다. 사람들은 일반적으로 적어도 두 가지 이상의 텍스트를 더 많이 사용하고 대문자를 처리하기 위해 약간의 영리함을 추가 할 수 있습니다. 파서에는 훈련 데이터에서 보이지 않는 단어를 처리하기위한이 영리성 중 일부가 포함되어 있지만, 이는 IsSring (String) 메소드가 반환되는 것에 반영되지 않습니다.

다른 팁

답/오류는 적절한 이름, 실제 단어 (어휘에 존재하지 않는다고 가정) 및 실제 철자로 나뉘어져있는 것처럼 보입니다. "성실함"에 대한 잘못된 부정은 또한 대문자가 그것을 버릴 수 있음을 시사하지만, 어쨌든 확인할 가치가 없을 정도로 똑똑하기를 바랍니다. 복수는 문제가되어서는 안되며 "신"에 대한 거짓 부정입니까? "하나님"을 올바르게 식별합니까?

철자를 확인하려고했기 때문에 왜 간접적으로 확인합니까? lp.getlexicon (). 로드 된 코퍼스에 의존하지 않습니까? 사전을로드하고 케이스를 큰 해시로 정상화하고 "포함"점검을 수행하지 않겠습니까? NLP 컨텍스트에 있으므로 특히 100% 정확도를 찾고 있지 않다는 점을 감안할 때 적절한 이름을 제거하는 것이 합리적으로 쉽게 제거해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top