Analyser les tendances sociétales et prédire les changements dans la mode ou la culture est une tâche complexe qui nécessite une combinaison de techniques d’analyse de données, de traitement du langage naturel et d’apprentissage automatique. Pour ce faire, nous pouvons utiliser des algorithmes de machine learning et des modèles de traitement du langage naturel (NLP) pour extraire des insights à partir de données textuelles disponibles sur les réseaux sociaux, les blogs, et autres sources en ligne.
Voici un exemple de code Python qui utilise des bibliothèques populaires comme `pandas`, `nltk`, `sklearn`, et `transformers` de Hugging Face pour analyser les tendances sociétales et prédire les changements dans la mode ou la culture. Pour simplifier, nous allons supposer que nous avons déjà un ensemble de données textuelles (par exemple, des tweets ou des articles de blog) sur lesquels nous allons travailler.
« `python
import pandas as pd
import nltk
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.decomposition import LatentDirichletAllocation
from sklearn.metrics import adjusted_rand_score
import numpy as np
from transformers import AutoTokenizer, AutoModel
import torch
# Télécharger les packages nécessaires pour nltk
nltk.download(‘stopwords’)
from nltk.corpus import stopwords
# Exemple de données textuelles
data = {
‘text’: [
« La mode durable est en vogue cette année. »,
« Les vêtements en matériaux recyclés sont de plus en plus populaires. »,
« Les consommateurs recherchent des vêtements éthiques et durables. »,
« La culture de la réutilisation est en pleine expansion. »,
« Les marques de mode éthique gagnent en popularité. »
]
}
df = pd.DataFrame(data)
# Prétraitement des données textuelles
stop_words = set(stopwords.words(‘english’))
df[‘text’] = df[‘text’].apply(lambda x: ‘ ‘.join([word for word in x.split() if word.lower() not in stop_words]))
# Vectorisation des données textuelles
vectorizer = TfidfVectorizer(max_features=100)
X = vectorizer.fit_transform(df[‘text’])
# Modèle de décomposition LDA pour extraire les topics
num_topics = 2
lda = LatentDirichletAllocation(n_components=num_topics, random_state=42)
lda.fit(X)
# Affichage des topics
def display_topics(model, feature_names, no_top_words):
for topic_idx, topic in enumerate(model.components_):
print(« Topic %d: » % (topic_idx))
print( » « .join([feature_names[i] for i in topic.argsort()[:-no_top_words – 1:-1]]))
no_top_words = 10
tf_feature_names = vectorizer.get_feature_names_out()
display_topics(lda, tf_feature_names, no_top_words)
# Prédiction des tendances futures (simplifiée)
class TrendPredictor:
def __init__(self, model, vectorizer):
self.model = model
self.vectorizer = vectorizer
def predict_trend(self, text):
text = self.vectorizer.transform([text])
topic = self.model.predict(text)
return f »Le texte semble appartenir au topic {topic[0] + 1}. »
predictor = TrendPredictor(lda, vectorizer)
new_text = « Les consommateurs adoptent de plus en plus des vêtements éco-responsables. »
print(predictor.predict_trend(new_text))
# Utilisation d’un modèle de langage pré-entraîné pour une analyse plus approfondie
model_name = « distilbert-base-uncased »
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModel.from_pretrained(model_name)
def analyze_text_with_model(text):
inputs = tokenizer(text, return_tensors= »pt »)
outputs = model(**inputs)
return outputs.last_hidden_state.mean(dim=1).detach().numpy()
text_embedding = analyze_text_with_model(new_text)
print(f »Embedding du texte : {text_embedding} »)
« `
### Explication du Code
1. **Prétraitement des Données Textuelles** :
– Suppression des mots vides (stopwords) pour améliorer la qualité des données.
2. **Vectorisation des Données Textuelles** :
– Utilisation de `TfidfVectorizer` pour convertir les textes en vecteurs de caractéristiques.
3. **Modèle LDA (Latent Dirichlet Allocation)** :
– Décomposition des textes en topics pour identifier les tendances principales.
4. **Affichage des Topics** :
– Visualisation des mots clés associés à chaque topic.
5. **Prédiction des Tendances Futures** :
– Classement des nouveaux textes dans les topics existants pour prédire les tendances.
6. **Utilisation d’un Modèle de Langage Pré-entraîné** :
– Utilisation de DistilBERT pour obtenir des embeddings des textes et une analyse plus approfondie.
Ce code est une base et peut être étendu pour inclure des données plus volumineuses, des modèles plus complexes, et des techniques avancées de traitement du langage naturel.