سؤال

أحاول التحقق من دقة الإملاء لعينات النص باستخدام 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

أي أفكار حول كيفية القيام بذلك أفضل؟

هل كانت مفيدة؟

المحلول

باستخدام طريقة المعروفة للمحافظة (سلسلة) المعروفة (سلسلة) كإعلانية ليست حالة استخدام قابلة للحياة من المحلل المحلل. الطريقة الصحيحة: "FALSE" تعني أن هذه الكلمة لم يتم رؤيتها (مع القيمة المعينة) في حوالي مليون كلمة من النصوص يتم تدريب المحلل فيها. لكن مليون كلمة فقط ليست كافية نصا لتدريب إشعال شامل من خلال بطريقة مدفوعة بالبيانات. عادة ما يستخدم الناس طلبتين على الأقل من حجم النص أكثر، وقد يضيف بعض الذكاء لمعالجة الرسملة. يشتمل المحلل المحلل على بعض هذه الذكاء للتعامل مع الكلمات التي كانت غير مرئية في بيانات التدريب، ولكن هذا لا ينعكس في طريقة إرجاع طريقة المعرفة (السلسلة).

نصائح أخرى

يبدو أن إجابتك / أخطاءك تنقسم بين الأسماء المناسبة، والكلمات الحقيقية (التي أفترض أنها لا توجد موجودة في المعجم) وإعلان أخطاء إملائية حقيقية. تقترح سلبية خاطئة على "الإخلاص" أيضا أن الرفاصات القيمة قد تتخلصها، على الرغم من أنك آمل أن تكون ذكية بما يكفي لا تستحق التحقق على أي حال. لا ينبغي أن تكون plurals مشكلة إما، ولكن سلبية كاذبة على "الآلهة"؟ هل تحدد بشكل صحيح "الله"؟

منذ أن تحاول التحقق من الهجاء، لماذا تحقق ذلك بشكل غير مباشر؟ ما هو LP.GetLexicon (). المعروف (W.Word ()) القيام داخليا؟ لا تعتمد على كوربوس المحملة؟ لماذا لا مجرد تحميل القاموس، وتطبيع القضية في تجزئة كبيرة، والقيام "يحتوي" على التحقق؟ نظرا لأنك في سياق NLP، فينبغي أيضا أن يكون من السهل للغاية تجريد الأسماء المناسبة، خاصة بالنظر إلى أنك لا تبحث عن دقة 100٪.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top