Nltk: إرجاع Porter الجذع رأس المال بدلاً من الأحرف الصغيرة

تم إنشاؤها على ٢٥ فبراير ٢٠٢٠  ·  5تعليقات  ·  مصدر: nltk/nltk

هذا الإخراج غير متوقع. يُرجع In الحرف الكبير In من مخرجات PorterStemmer.

>>> from nltk.stem import PorterStemmer
>>> porter = PorterStemmer()
>>> porter.stem('In')
'In'

مزيد من التفاصيل على https://stackoverflow.com/q/60387288/610569

goodfirstbug stelemma

ال 5 كومينتر

لأي اشتقاق ، أليس من المفترض أولاً تحويلها إلى أحرف صغيرة كجزء من التطبيع؟

مثال آخر على الإنتاج المرسم باستخدام Oh

>>> from nltk.stem import PorterStemmer
>>> porter = PorterStemmer()
>>> porter.stem('Oh')
'Oh'

أعتقد أنه في الأصل يريد أن يظل الشكل الأصلي للاختصارات عندما يكون طول الكلمة أقل من 2 ، مثل اختصارات الدول.

def stem(self, word):
    stem = word.lower()

    if self.mode == self.NLTK_EXTENSIONS and word in self.pool:
        return self.pool[word]

    if self.mode != self.ORIGINAL_ALGORITHM and len(word) <= 2:
        # With this line, strings of length 1 or 2 don't go through
        # the stemming process, although no mention is made of this
        # in the published algorithm.
        return word

    stem = self._step1a(stem)
    stem = self._step1b(stem)
    stem = self._step1c(stem)
    stem = self._step2(stem)
    stem = self._step3(stem)
    stem = self._step4(stem)
    stem = self._step5a(stem)
    stem = self._step5b(stem)

    return stem

الكلمتان "In" و "Oh" ليستا في self.pool ، و len(word)<=2 ، مما يعني أنها لا تفي بشرط الجذع هنا ، لذلك تظل كما هي.

إذا لم يتم تعيينه ، فهل يمكنني العمل على ذلك؟ إنها المرة الأولى التي أساهم فيها في مشروع.

PhanatosZou لا تتردد في إجراء التغييرات وإنشاء طلب سحب. الكود الرئيسي الذي يجب تغييره هو:

if self.mode != self.ORIGINAL_ALGORITHM and len(word) <= 2:
    # With this line, strings of length 1 or 2 don't go through
    # the stemming process, although no mention is made of this
    # in the published algorithm.
    return stem

ولكن سيكون من الجيد التحقق من جميع المفاتيح في self.pool وإذا لم تكن ذات أحرف كبيرة ، فقم بإجراء التغييرات على هذا أيضًا:

if self.mode == self.NLTK_EXTENSIONS and word in self.pool:
    return self.pool[stem]

يبدو جيدا! سأعمل على ذلك.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

talbaumel picture talbaumel  ·  4تعليقات

jeryini picture jeryini  ·  5تعليقات

mwess picture mwess  ·  5تعليقات

Chris00 picture Chris00  ·  3تعليقات

stevenbird picture stevenbird  ·  3تعليقات