Nltk: Stemmer porter mengembalikan modal alih-alih huruf kecil

Dibuat pada 25 Feb 2020  ·  5Komentar  ·  Sumber: nltk/nltk

Keluaran ini tidak terduga. In mengembalikan huruf besar In dari output PorterStemmer.

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

Detail lebih lanjut di https://stackoverflow.com/q/60387288/610569

goodfirstbug stelemma

Semua 5 komentar

Untuk stemming apa pun, bukankah kita seharusnya mengubahnya menjadi huruf kecil terlebih dahulu sebagai bagian dari normalisasi?

Contoh lain dari output yang dikapitalisasi menggunakan Oh

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

Saya pikir itu karena awalnya ia ingin tetap menjadi bentuk asli dari singkatan ketika panjang kata kurang dari 2, seperti singkatan untuk negara bagian.

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

Kata 'In' dan 'Oh' keduanya tidak ada di self.pool , dan len(word)<=2 , yang berarti tidak memenuhi kondisi batang di sini, jadi tetap sama.

Jika tidak ditugaskan, bolehkah saya mengerjakan ini? Ini pertama kalinya saya berkontribusi pada sebuah proyek.

@PhanatosZou merasa bebas untuk membuat perubahan dan membuat permintaan tarik. Kode utama yang perlu diubah adalah:

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

Tetapi akan lebih baik untuk memeriksa semua kunci di self.pool dan jika bukan huruf besar, maka buat perubahan ini juga:

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

Kedengarannya bagus! Saya akan mengerjakannya.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

ndvbd picture ndvbd  ·  4Komentar

alvations picture alvations  ·  4Komentar

Chris00 picture Chris00  ·  3Komentar

BLKSerene picture BLKSerene  ·  4Komentar

DavidNemeskey picture DavidNemeskey  ·  4Komentar