Cet article passe en revue l'analyse sémantique latente (LSA), une théorie de la signification ainsi qu'une méthode pour extraire ce sens de passages de texte, basée sur des statistiques calculs sur un ensemble de documents. LSA comme théorie du sens définit un espace sémantique latent où les documents et les mots individuels sont représentés sous forme de vecteurs. LSA en tant que technique de calcul utilise l'algèbre linéaire pour extraire les dimensions qui représentent cet espace. Cette représentation permet le calcul de la similarité entre les termes et les documents, la catégorisation des termes et documents, et résumé de grandes collections de documents en utilisant procédures automatisées qui imitent la façon dont les humains effectuent des tâches cognitives similaires. Nous présentons quelques détails techniques, divers exemples illustratifs et discutons d'un nombre de candidatures en linguistique, psychologie, sciences cognitives, éducation, sciences de l'information et analyse de données textuelles en général.
Dans ce projet, nous allons voir comment « extraire » des concepts à partir d'un corpus (collection) de documents textuels.
Je vais vous montrer comment extraire mathématiquement des "concepts" de ce corpus. La technique que nous allons utiliser s'appelle "l'analyse sémantique latente".
-
BeautifulSoup: Je vais utiliser ce package pour le webscraping c'est à dire l'extraction des information à travers l'internet.
-
nltk: ce package pour les manipulations l'inguistique et nettoyage des textes à analyser.
-
TruncatedSVD: pour la reduction de la dimensionnalité des matrices creuses.
-
TfidfVectorizer: pour le calcule ses fréquence des mots et termes dans les documents
dans ce tutoriel je vais scrapé cet article sur le Deep Learning à travers le site CNRS Le Journal. https://lejournal.cnrs.fr/billets/letonnante-acceptabilite-des-deep-fake
Les Les Stopwords sont des mots que je ne veux pas convertir en features ou variables, car ils ne sont pas particulièrement utiles. Des mots comme a, et et le sont de bons Stopwords en français. Je peux utiliser une liste intégrée de Stopwords de nltk pour commencer.
Je vais utiliser le vectoriseur TF-IDF de scikit-learn pour prendre mon corpus et convertir chaque document en une matrice creuse de fonctionnalités TFIDF...
- Le parmètre stop_words, permet de supprimer les stopwords
- Le paramètre ngram_range permet de decomposer les termes en n_min:1 et n_max dans notre cas ici.
-
Entrée : X, une matrice où m est le nombre de documents que j'ai, et n est le nombre de termes
-
Processus : Je vais décomposer X en matrices appelées U, S et T. Lorsque nous effectuons la décomposition, nous devons choisir une valeur k, c'est le nombre de concepts que nous allons conserver.
X = USVT
- U : sera une matrice mxk. Les lignes seront des documents et les colonnes seront des concepts
- S : sera une matrice kxk. Les éléments seront la quantité de variation capturée à partir de chaque concept
- V : sera une matrice mxk (attention à la transposition). la ligne sera les termes et les colonnes seront concepts
https://www.youtube.com/watch?v=fnU9moB-_DI
- Latent semantic analysis
- Comprende le package requests
- https://www.crummy.com/software/BeautifulSoup/bs4/doc/
- https://pythonspot.com/nltk-stop-words/
- https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html
- https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.ht