Nltk: Le stemmer de Porter renvoie une majuscule au lieu de minuscules

Créé le 25 févr. 2020  ·  5Commentaires  ·  Source: nltk/nltk

Cette sortie est inattendue. Le In renvoie la majuscule In de la sortie de PorterStemmer.

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

Plus de détails sur https://stackoverflow.com/q/60387288/610569

goodfirstbug stelemma

Tous les 5 commentaires

Pour tout stemming, ne sommes-nous pas censés d'abord les convertir en minuscules dans le cadre de la normalisation ?

Un autre exemple de sortie en majuscule utilisant Oh

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

Je pense que c'est parce qu'à l'origine, il veut rester la forme originale des abréviations lorsque le mot longueur moins de 2, comme les abréviations pour les états.

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

Les mots 'In' et 'Oh' ne sont pas tous les deux dans self.pool , et len(word)<=2 , ce qui signifie qu'il ne satisfait pas la condition radicale ici, donc il reste le même.

S'il n'est pas attribué, puis-je travailler dessus ? C'est la première fois que je contribue à un projet.

@PhanatosZou n'hésitez pas à apporter les modifications et à créer une pull request. Le code principal qui doit être modifié est :

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

Mais ce sera bien de vérifier toutes les clés dans self.pool et si elles ne sont pas en majuscule, alors apportez des modifications à cela également :

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

Ça a l'air bien! Je vais y travailler.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

alvations picture alvations  ·  3Commentaires

ndvbd picture ndvbd  ·  4Commentaires

talbaumel picture talbaumel  ·  4Commentaires

DavidNemeskey picture DavidNemeskey  ·  4Commentaires

stevenbird picture stevenbird  ·  3Commentaires