2 votes

Comment retourner les mots-clés dans une liste à partir de plusieurs phrases ?

Je dispose d'une liste de mots-clés que je souhaite faire correspondre à une liste de phrases. S'ils sont trouvés dans cette phrase, le mot-clé trouvé est renvoyé dans une liste.

Ce que j'ai essayé :

sentence = df['List of Content']
list_of_words = ['keyword1','keyword2', 'keyword3']

Cela fonctionne ci-dessous si je ne choisis qu'une seule ligne :

[word for word in list_of_words if word in sentence[0]

et les sorties

output: ['keyword1', 'keyword3']

La sortie souhaitée pour toutes les lignes, est une liste de mots-clés qui correspondent dans la phrase. Quelque chose comme ça :

matching_keywords = [['keyword1', 'keyword3'],['keyword2, 'keyword3'],['keyword1', 'keyword2']..]

Cependant, lorsque j'exécute le for boucle dans la liste entière, cela donne juste une liste vide. []


J'ai également essayé une boucle for imbriquée :

kwords = []
for row in MCC:
    for x in list_of_words:
        if x in row:
            kwords.append(x)

Soit j'obtiens à nouveau une liste de crochets vide [] ou cela crée juste une longue liste de mots-clés qui se répètent.

Quelle est l'erreur que je commets ? N'importe qui peut essayer de m'aider avec la logique/solution.

2voto

Ben Grossmann Points 250

Vous pourriez étendre votre approche initiale en faisant ce qui suit.

[[word for word in list_of_words if word in row] for row in sentence]

Explication : Cela revient à une compréhension de listes imbriquées. Pour chaque ligne, nous voulons une liste des mots-clés qui apparaissent dans cette ligne. Avec la compréhension de liste, cela devrait être écrit comme suit

[<list of keywords in row> for row in sentence]

D'autre part, si vous cherchez une ligne spécifique (par exemple, row = sentence[0] ), alors comme vous l'indiquez dans votre question, la liste des mots-clés qui apparaissent dans cette ligne peut être obtenue avec [word for word in list_of_words if word in row] . En mettant tout cela ensemble, on obtient le résultat que j'ai écrit plus haut, à savoir

[[word for word in list_of_words if word in row] for row in sentence]

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