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 Réponses :
Cela créera un bloc de données uniquement avec des mots de la liste
train = train[train['final_input_text'].isin(words_list)]
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
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
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