Natural Language Processing Python, Hotel reviews
Fermé
maxxi94
-
1 juil. 2018 à 17:07
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 5 juil. 2018 à 18:48
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 5 juil. 2018 à 18:48
A voir également:
- Natural Language Processing Python, Hotel reviews
- Citizen code python avis - Accueil - Outils
- Natural reader - Télécharger - Synthèse vocale
- Photoshop french language pack ✓ - Forum Photoshop
- Cast2tv.net hotel - Forum TV & Vidéo
2 réponses
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
1 juil. 2018 à 18:06
1 juil. 2018 à 18:06
'lut,
quand tu dis fichier Excel, tu parles de quel format précisément ?
S'il s'agit de XLS ou XLSX, il te faudra convertir ça dans un format plus simple comme CSV par exemple, car les 2 formats précédents sont purement inutilisables pour du traitement données (et pour tout en fait, le XLS n'étant pas documenté et le XLSX étant un paté de XML immonde et in-importable).
80k ça fait beaucoup, ça vaudrait peut-être même le coup d'importer le CSV dans une base de données (qu'elle soit structurée: SQLite, MySQL/MariaDB, Postgre; ou non: Redis, Mongo, ...).
quand tu dis fichier Excel, tu parles de quel format précisément ?
S'il s'agit de XLS ou XLSX, il te faudra convertir ça dans un format plus simple comme CSV par exemple, car les 2 formats précédents sont purement inutilisables pour du traitement données (et pour tout en fait, le XLS n'étant pas documenté et le XLSX étant un paté de XML immonde et in-importable).
80k ça fait beaucoup, ça vaudrait peut-être même le coup d'importer le CSV dans une base de données (qu'elle soit structurée: SQLite, MySQL/MariaDB, Postgre; ou non: Redis, Mongo, ...).
j'ai essayé xlrd et pandasTu as essayé, ok, mais qu'as-tu essayé avec ? Quel était ton code, quelles étaient tes données originales et à quel résultat t'attendais-tu ?
Re,
Merci pour ta réponse ElementW.
J'ai donc suivi ton conseil et j'ai mis mes données sur une base de données Sqlite3.
Désolé mais je suis vraiment débutant en langage de programmation.
Maintenant mon soucis, c'est de faire mes analyses sur une colonne (ReviewLarge) de mon tableau (Review_Hotel_Large). Après quelques recherche je suis arrivé à ça:
import sqlite3
import nltk
conn = sqlite3.connect('Thesis_Datasets.sql')
c = conn.cursor()
def read_from_db():
c.execute('SELECT ReviewLarge FROM Review_Hotel_Large')
Mais je ne vois pas comment faire ensuite pour lancer la tokenization sur cette colonne et que pyhton me génère un nouveau document "tokenizé".
D'avance, merci pour vos réponses.
Maxime.
Merci pour ta réponse ElementW.
J'ai donc suivi ton conseil et j'ai mis mes données sur une base de données Sqlite3.
Désolé mais je suis vraiment débutant en langage de programmation.
Maintenant mon soucis, c'est de faire mes analyses sur une colonne (ReviewLarge) de mon tableau (Review_Hotel_Large). Après quelques recherche je suis arrivé à ça:
import sqlite3
import nltk
conn = sqlite3.connect('Thesis_Datasets.sql')
c = conn.cursor()
def read_from_db():
c.execute('SELECT ReviewLarge FROM Review_Hotel_Large')
Mais je ne vois pas comment faire ensuite pour lancer la tokenization sur cette colonne et que pyhton me génère un nouveau document "tokenizé".
D'avance, merci pour vos réponses.
Maxime.
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
Modifié le 4 juil. 2018 à 18:43
Modifié le 4 juil. 2018 à 18:43
L'idée de base est (code pas testé):
Si tu comptes analyser leur fréquence, alors les mettre en base ou dans un
Sans savoir ce que tu comptes en faire par la suite, difficile de te conseiller.
import sqlite3 from nltk.tokenize.api import StringTokenizer conn = sqlite3.connect('Thesis_Datasets.sql') tok = StringTokenizer() c = conn.cursor() def read_from_db(): for row in c.execute('SELECT ReviewLarge FROM Review_Hotel_Large'): review = row[0] tokens = tok.tokenize(review) # Manipuler tokens comme vouluAprès tout dépend de ce que tu comptes faire des tokens. La tokénisation n'étant pas une opération coûteuse, il n'y a pas grand intérêt à stocker tous les tokens 1 à 1, l'un après l'autre dans la base pour les relire plus tard: tu prendrais plus de temps pour les lire qu'à lire la ligne originale et re-tokeniser.
Si tu comptes analyser leur fréquence, alors les mettre en base ou dans un
dictionnaire en mémoire est intéressant.
Sans savoir ce que tu comptes en faire par la suite, difficile de te conseiller.
Alors avec mes tokens je veux tout d'abord process du "stemming" et du "stop word removal" pour ensuite faire comme tu dis une analyse de fréquence et puis de la classification.
En gros, j'ai deux base de données (avec chaque fois: Hotel, Review, ReviewerID, Date) que j'ai tiré de Booking.com :
=> La première (80k reviews réduit à 10k mtnt)
=> Dans la deuxième ce sont les avis des clients "fidèle" qui ont été isolé (2 ou + avis pour la même chaine d'hotel)
Le but en gros c'est d'analyser les différences entre les datasets en terme de mots et (si j'ai le temps) de sentiments.
J'ai tout le temps ce genre d'erreur quand j'essaye de lancer le code:
https://image.noelshack.com/fichiers/2018/27/4/1530808490-capture-d-ecran-2018-07-05-18-29-57.png
désolé pour ma nulitude en progra :/
En gros, j'ai deux base de données (avec chaque fois: Hotel, Review, ReviewerID, Date) que j'ai tiré de Booking.com :
=> La première (80k reviews réduit à 10k mtnt)
=> Dans la deuxième ce sont les avis des clients "fidèle" qui ont été isolé (2 ou + avis pour la même chaine d'hotel)
Le but en gros c'est d'analyser les différences entre les datasets en terme de mots et (si j'ai le temps) de sentiments.
J'ai tout le temps ce genre d'erreur quand j'essaye de lancer le code:
https://image.noelshack.com/fichiers/2018/27/4/1530808490-capture-d-ecran-2018-07-05-18-29-57.png
désolé pour ma nulitude en progra :/
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
5 juil. 2018 à 18:48
5 juil. 2018 à 18:48
Tu cherches a avoir une variable qui n'existe que dans le corps de la fonction
Vu le genre d'erreur que tu fais, tu ne vas pas aller bien loin. Prends le temps de lire un minimum de documentation/tutoriaux sur la base de Python avant de vouloir te jeter dans le tas.
read_from_db, que tu n'appelles même pas. Indentes ton
read_from_db()en dessous de ta fonction, non indenté.
Vu le genre d'erreur que tu fais, tu ne vas pas aller bien loin. Prends le temps de lire un minimum de documentation/tutoriaux sur la base de Python avant de vouloir te jeter dans le tas.