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
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.