J'implémente une analyse des émotions à l'aide de la méthode lstm, j'ai déjà entraîné mon modèle et je fais ma partie de prédiction où j'ai déjà fait la prédiction correctement. Maintenant, je veux ajouter la sortie que j'ai obtenue dans une trame de données, je l'ai essayé mais j'ai de mauvais résultats. Quelqu'un peut-il m'aider avec la correction de mes codes s'il vous plaît.

Je poste mes codes avec la sortie obtenue et comment je veux que ma sortie soit.

Voici mes codes:

        with open('output1.json', 'w') as f:
            json.dump(new_data, f)

selection1 = new_data['selection1']

for item in selection1:
    name = item['name']
    print ('>>>>>>>>>>>>>>>>>> ', name)
    Date = item['reviews']
    for d in Date:
        date = d['date']
        print('>>>>>>>>>>>>>>>>>> ', date)
    CommentID = item['reviews']
    for com in CommentID:
        comment = com['review'].lower()  # converting all to lowercase
        result = re.sub(r'\d+', '', comment)  # remove numbers
        results = (result.translate(
        str.maketrans('', '', string.punctuation))).strip()  # remove punctuations and white spaces
        comments = remove_stopwords(results)
        print('>>>>>>',comments)

    #add the words in comments that are already present in the keys of dictionary
        encoded_samples = [[word2id[word] for word in comments if word in word2id.keys()]]


    # Padding
        encoded_samples = keras.preprocessing.sequence.pad_sequences(encoded_samples, maxlen=max_words)

     # Make predictions
        label_probs, attentions = model_with_attentions.predict(encoded_samples)
        label_probs = {id2label[_id]: prob for (label, _id), prob in zip(label2id.items(), label_probs[0])}

       #Get word attentions using attenion vector
        print(label_probs)

dataframe={'name': [name],'date': [date], 'comment': [comment], 'label':[label_probs]}
table = pd.DataFrame(dataframe, columns=['name','date', 'comment', 'label'])
print(table)

Ci-dessous le résultat que j'ai obtenu :

                             name  ...                                              label
0  Oasis Villas by Evaco Holidays  ...  {'joy': 0.018415175, 'surprise': 4.6217923e-05...

[1 rows x 4 columns]

Ce qui n'est pas correct..

La sortie des impressions ci-dessus est comme indiqué ci-dessous :

>>>>>>>>>>>>>>>>>>  Heritage The Villas
>>>>>>>>>>>>>>>>>>  December 23, 2018
>>>>>>>>>>>>>>>>>>  January 10, 2018
>>>>>>>>>>>>>>>>>>  January 05, 2018
>>>>>>>>>>>>>>>>>>  July 23, 2015
>>>>>> ['booked', 'villa', 'valriche', 'mari', 'deal', 'nights', 'checkin', 'lengthy', 'almost', 'hours', 'requested', 'make', 'deposit', 'rs', 'credit', 'card', 'never', 'informed', 'upon', 'booking']
{'joy': 0.03916626, 'surprise': 8.855841e-05, 'love': 0.09760322, 'anger': 0.6667219, 'sadness': 0.0010696664, 'fear': 0.1953505}
>>>>>> ['lovely', 'place', 'recharge']
{'joy': 0.0032763705, 'surprise': 0.0022357441, 'love': 0.11014917, 'anger': 0.09073347, 'sadness': 0.7297514, 'fear': 0.063853815}
>>>>>> ['one', 'word', 'suoerb']
{'joy': 0.13245165, 'surprise': 0.00014895896, 'love': 0.3051644, 'anger': 0.35698283, 'sadness': 0.00021378326, 'fear': 0.20503832}
>>>>>> ['definitely', 'star', 'extremely', 'poor', 'staff', 'service']
{'joy': 0.031011488, 'surprise': 9.065295e-05, 'love': 0.4330521, 'anger': 0.30516183, 'sadness': 0.000128366, 'fear': 0.23055555}
>>>>>>>>>>>>>>>>>>  Oasis Villas by Evaco Holidays
>>>>>>>>>>>>>>>>>>  January 12, 2020
>>>>>>>>>>>>>>>>>>  June 21, 2019
>>>>>>>>>>>>>>>>>>  May 30, 2017
>>>>>>>>>>>>>>>>>>  December 06, 2015
>>>>>> ['excellent']
{'joy': 0.030443083, 'surprise': 1.9940982e-05, 'love': 0.036508515, 'anger': 0.8760464, 'sadness': 0.0014704008, 'fear': 0.055511605}
>>>>>> ['spent', 'days', 'family', 'really', 'enjoyed', 'stay', 'advantage', 'oasis', 'privacy', 'children', 'years', 'going', 'dinnerbreakfast', 'hotels', 'often', 'burden', 'rather', 'enjoyable', 'experience', 'children', 'could', 'dinnermessnoise', 'without', 'us', 'worry', 'anything', 'pool', 'right', 'front', 'door', 'made', 'everything', 'children', 'staff', 'friendly', 'welcoming', 'artee', 'menni', 'made', 'sure', 'everything', 'fine', 'brought', 'breakfast', 'warm', 'croissants', 'every', 'morning', 'atish', 'made', 'checkin', 'arrangements', 'fast', 'hassle', 'free', 'definitely', 'go']
{'joy': 0.017099116, 'surprise': 7.2406554e-05, 'love': 0.2651248, 'anger': 0.14370358, 'sadness': 5.6088167e-05, 'fear': 0.573944}
>>>>>> ['passé', 'un', 'excellent', 'séjours', 'les', 'villas', 'oasis', 'sont', 'de', 'loin', 'les', 'meilleur', 'villas', 'du', 'groupe', 'evaco']
{'joy': 0.032395113, 'surprise': 9.250247e-05, 'love': 0.08593403, 'anger': 0.6815374, 'sadness': 0.0015245328, 'fear': 0.1985165}

Je veux que mon dataframe ressemble à :

name                                  date               comment                               label

Heritage The Villas            December 23, 2018   ['booked', 'villa', 'valriche'...]  {'joy': 0.03916626, 'surprise': 8.855841e-05, 'love': 0.09760322, 'anger': 0.6667219, 'sadness': 0.0010696664, 'fear': 0.1953505}
Heritage The Villas           January 10, 2018   ['lovely', 'place', 'recharge']     {'joy': 0.0032763705, 'surprise': 0.0022357441, 'love': 0.11014917, 'anger': 0.09073347, 'sadness': 0.7297514, 'fear': 0.063853815}
.....
Oasis Villas by Evaco Holidays January 12, 2020   ['excellent']                       {'joy': 0.030443083, 'surprise': 1.9940982e-05, 'love': 0.036508515, 'anger': 0.8760464, 'sadness': 0.0014704008, 'fear': 0.055511605}
Oasis Villas by Evaco Holidays  June 21, 2019    ['spent', 'days', 'family'....]  {'joy': 0.017099116, 'surprise': 7.2406554e-05, 'love': 0.2651248, 'anger': 0.14370358, 'sadness': 5.6088167e-05, 'fear': 0.573944}
.....

Pouvez-vous s'il vous plaît m'aider les gars.

1
Nedisha 21 févr. 2020 à 22:23

1 réponse

Meilleure réponse

Le problème est avec cette ligne:

dataframe={'name': [name],'date': [date], 'comment': [comment], 'label':[label_probs]}

Faites des listes vides pour le nom, la date, le commentaire, label_probs et ajoutez-les à cette liste et transmettez cette liste à votre DataFrame

selection1 = new_data['selection1']
names = []
dates = []
comments = []
labels = []

with open('output1.json', 'w') as f:
    json.dump(new_data, f)

selection1 = new_data['selection1']

for item in selection1:
    name = item['name']
    names.append(name) #<-----------------
.
.
.
    Date = item['reviews']
    for d in Date:
        date = d['date']
        dates.append(date) #<--------------
        print('>>>>>>>>>>>>>>>>>> ', date)

.
.
.
.

Alors

dataframe={'name': names,'date': dates,........}

Réponse mise à jour:

    for item in selection1:
        name = item['name']
        Date = item['reviews']
        for d in Date:
            names.append(name) #<-----------------
            date = d['date']
            dates.append(date) #<--------------
.
.
.

Cela devrait résoudre votre problème.

2
Pygirl 21 févr. 2020 à 20:42