0
votes

J'ai une colonne de texte dans pandas, et j'ai une liste contenant quelques mots, je dois faire correspondre le texte de chaque ligne avec le mot de la liste et les conserver

J'ai la colonne train ['final_input_text'] contenant des valeurs textuelles. J'ai un ensemble de mots dans une liste, avec lesquels je dois faire correspondre train ['final_input_text']. values ​​, s'il correspond, conservez les mots dans train['final_input_text' .

text_df=train['final_input_text'].values

J'ai essayé en utilisant des boucles, mais je n'ai pas pu arriver

train['final_input_text'].values[1] = 'students would rather school home sometimes high poverty'

Je n'ai besoin de conserver que les mots dans train [final_input_text] qui correspondent aux mots de ma liste, qui contient environ 9 000 mots.


3 commentaires

Vineet: donnez un exemple de ligne d'entrée, des exemples de mots de liste et un exemple de sortie


train [final_input_text] .values ​​[2] est «les élèves arrivent en retard en classe aller à la salle à manger arrivant à l'école prendre le petit déjeuner impossible» et ma liste de mots est une liste de mots (chaînes) de 9 324


J'espère que les réponses ci-dessous vous ont aidé, sinon ... veuillez mettre à jour la question et non dans les commentaires, c'est déroutant dans la section des commentaires


3 Réponses :


1
votes

Cela créera un bloc de données uniquement avec des mots de la liste

train = train[train['final_input_text'].isin(words_list)]


0 commentaires

0
votes

si les mots sont dans la liste est unigramme, vous suivez cette méthode:

 list_words = ['word1','word2','word3','word4']
 for x in range(len(train)):
     for w in list_words:
         if w in train['final_input_text'][x]:
            train['word in final_input'][x] = w


0 commentaires

0
votes

Vous pouvez utiliser la fonction Split pour pouvoir comparer votre texte avec des mots spécifiques. Ensuite, utilisez la fonction de jointure pour agréger les mots que vous avez trouvés correspondant à une seule chaîne.

Voici un exemple de travail:

df_text = pd.DataFrame({'final_input_text':['hello my name is Bob','I like the name Bob']})

In [1] : print(df_text)
Out[1] : final_input_text
0   hello my name is Bob
1   I like the name Bob

words_to_match = ['name', 'Bob', 'hello', 'world']

for index, row in df_text.iterrows():
    words_to_keep = []
    for word in row[0].split(' '):
        if word in words_to_match :
            words_to_keep.append(word + ' ')
    df_text.loc[index, 'final_input_text']= ''.join(words_to_keep)

In [2] : print(df_text)
Out[2] :    final_input_text
0   hello name Bob
1   name Bob


0 commentaires