J'ai ce dataframe:Pandas dataframe à doc2vec.LabeledSentence
order_id product_id user_id
2 33120 u202279
2 28985 u202279
2 9327 u202279
4 39758 u178520
4 21351 u178520
5 6348 u156122
5 40878 u156122
Type de user_id: String
Type de product_id: Entier
Je voudrais utiliser ce dataframe pour créer un corpus Doc2vec. Donc, je dois utiliser la fonction LabeledSentence pour créer un dict:
{tags: user_id, mots: tous ids produits commandés par chaque user_id}
Mais la forme la trame de données est (32434489, 3), donc je devrait éviter d'utiliser une boucle pour créer mon labelSentence.
J'essaye d'exécuter cette fonction (ci-dessous) avec le multitraitement mais c'est trop long. Avez-vous une idée pour transformer mon dataframe au bon format pour un corpus Doc2vec où le tag est user_id et les mots sont la liste des produits par user_id?
def append_to_sequences(i):
user_id = liste_user_id.pop(0)
liste_produit_userID = data.ix[data["user_id"]==user_id, "product_id"].astype(str).tolist()
return doc2vec.LabeledSentence(words=prd_user_list, tags=user_id)
pool = multiprocessing.Pool(processes=3)
result = pool.map_async(append_to_sequences, np.arange(len_liste_unique_user))
pool.close()
pool.join()
sentences = result.get()