2 votes

Comment obtenir un synonyme pour plusieurs mots en utilisant NLTK ?

J'ai cherché que toutes les questions fournissent seulement la façon d'obtenir le synonyme pour un mot, mais cela ne fonctionne pas quand j'essaie d'utiliser une boucle pour obtenir le synonyme pour plusieurs mots.

Voici mon code, mais il ne fonctionne pas comme prévu.

str = "Action, Adventure, Drama"

def process_genre(str):
    for genre in str.split(","):
        result = []
        for syn in wordnet.synsets(genre):
            for l in syn.lemmas():
                result.append(l.name())
        print(result)
process_genre(str)

Voici le résultat

['action', 'action', 'activity', 'activeness', 'military_action', 'action', 'natural_process', 'natural_action', 'action', 'activity', 'action', 'action', 'action', 'action_mechanism', 'legal_action', 'action', 'action_at_law', 'action', 'action', 'action', 'sue', 'litigate', 'process', 'carry_through', 'accomplish', 'execute', 'carry_out', 'action', 'fulfill', 'fulfil']
[]
[]

La liste pour Adventure y Drama imprime vide, qui est censé avoir son synonyme.

Quelqu'un peut-il m'expliquer pourquoi ? Y a-t-il un moyen de le réinitialiser ? Ou... ?

0voto

Sociopath Points 3139

Je pense que le problème est avec votre contribution. Vous avez un espace supplémentaire après , donc quand vous vous séparez sur , vos mots deviennent ["Action", " Adventure"," Drama"]

Dans le wordnet, il n'y a pas de mots tels que Adventure y Drama (Remarquez un espace vide au début du mot). C'est pourquoi vous n'obtenez pas de sortie pour les 2ème et 3ème mots.

Une solution de rechange pour votre contribution

divisé sur ", " au lieu de ","

str = "Action, Adventure, Drama"

def process_genre(str):
    for genre in str.split(", "):
        result = []
        for syn in wordnet.synsets(genre):
            for l in syn.lemmas():
                result.append(l.name())
        print(result)
process_genre(str)

Salida:

['action', 'action', 'activity', 'activeness', 'military_action', 'action', 'natural_process', 'natural_action', 'action', 'activity', 'action', 'action', 'action', 'action_mechanism', 'legal_action', 'action', 'action_at_law', 'action', 'action', 'action', 'sue', 'litigate', 'process', 'carry_through', 'accomplish', 'execute', 'carry_out', 'action', 'fulfill', 'fulfil']
['adventure', 'escapade', 'risky_venture', 'dangerous_undertaking', 'gamble', 'chance', 'risk', 'hazard', 'take_chances', 'adventure', 'run_a_risk', 'take_a_chance', 'venture', 'hazard', 'adventure', 'stake', 'jeopardize']
['play', 'drama', 'dramatic_play', 'drama', 'dramatic_event', 'drama', 'drama']

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X