Diese Ausgabe ist unerwartet. Das In
gibt die Großbuchstaben In
aus der Ausgabe von PorterStemmer zurück.
>>> from nltk.stem import PorterStemmer
>>> porter = PorterStemmer()
>>> porter.stem('In')
'In'
Weitere Details unter https://stackoverflow.com/q/60387288/610569
Sollten wir für jegliches Stemming nicht zuerst als Teil der Normalisierung in Kleinbuchstaben umwandeln?
Ein weiteres Beispiel für eine großgeschriebene Ausgabe mit Oh
>>> from nltk.stem import PorterStemmer
>>> porter = PorterStemmer()
>>> porter.stem('Oh')
'Oh'
Ich denke, es liegt daran, dass es ursprünglich die ursprüngliche Form von Abkürzungen bleiben möchte, wenn die Wortlänge weniger als 2 ist, wie Abkürzungen für Staaten.
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
Das Wort 'In' und 'Oh' sind beide nicht in self.pool
und len(word)<=2
, was bedeutet, dass es die Stammbedingung hier nicht erfüllt, also bleibt es gleich.
Wenn es nicht zugewiesen ist, kann ich daran arbeiten? Es ist mein erster Beitrag zu einem Projekt.
@PhanatosZou Sie können die Änderungen
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
Aber es ist gut, alle Schlüssel in self.pool
zu überprüfen und wenn sie keine Großbuchstaben sind, dann nehmen Sie auch hier Änderungen vor:
if self.mode == self.NLTK_EXTENSIONS and word in self.pool:
return self.pool[stem]
Hört sich gut an! Ich werde daran arbeiten.