1655958120
MVC est une abréviation qui signifie Modèle, Vue et Contrôleur. Ce modèle architectural a été créé à la fin des années 1970 pour créer des applications de bureau, mais il est maintenant largement utilisé dans le développement d'applications Web.
Dans cet article, je vais approfondir ce que signifie MVC aux côtés de ses 3 composants, afin que vous puissiez le comprendre.
J'ai également préparé une infographie qui peut vous aider à mieux comprendre MVC, mais vous devez d'abord lire l'article. :)
En informatique, MVC est un modèle de conception de logiciel permettant d'organiser le code d'application en trois parties entrelacées : un modèle, une vue et un contrôleur.
Le modèle est la logique d'interaction avec la base de données, la vue est l'interface utilisateur avec laquelle l'utilisateur interagit et le contrôleur est l'intermédiaire entre la vue et le modèle.
Dans de nombreux cas, la vue n'interagit jamais directement avec le modèle - le contrôleur remplit cette fonction.
Dans certains autres frameworks, le modèle peut interagir directement avec la vue
Le modèle de conception MVC vise à diviser le code de l'application en unités qui lui sont propres, de sorte que la maintenance et l'optimisation ne seront pas un problème. C'est ce qu'on appelle communément la "séparation des préoccupations".
Dans le passé, MVC était utilisé uniquement pour créer des interfaces graphiques de bureau. Aujourd'hui, de nombreux langages de programmation et frameworks implémentent MVC pour le développement d'applications Web.
Certains frameworks vous obligent même à utiliser MVC, vous avez donc peut-être utilisé MVC sans vous en rendre compte.
Dans une application Express à pile complète, par exemple, les développeurs divisent souvent le code en un dossier de modèle, de contrôleur et de client (vue).
C'est la structure de dossiers d'un générateur de blagues que j'ai construit pour mon footballeur préféré.
Des exemples de langages de programmation qui utilisent MVC sont C, C++, C#, Java, Ruby, Smalltalk et bien d'autres.
Les frameworks qui utilisent MVC sont Angular, Express, Django, Flask, Laravel, Ruby on rails et autres.
Le composant de modèle contient la logique responsable de la récupération des données de la base de données. Pour cela, vous pouvez également utiliser un fichier JSON à la place d'une base de données.
Par exemple, dans la base de données SQL d'une application de commerce électronique, cela pourrait être quelque chose comme product-data = db.get(SELECT * FROM products;
).
Dans de nombreux cas, le modèle communique avec le contrôleur pour envoyer des données à la vue (interface utilisateur). Dans d'autres cas, le modèle peut envoyer des données directement à la vue.
Le composant de vue est la partie avec laquelle l'utilisateur interagit directement. Il communique avec le contrôleur pour montrer ce que l'utilisateur a demandé avec les actions de la souris et du clavier.
Des langages comme HTML, CSS et JavaScript sont souvent utilisés pour implémenter cette partie. Vous pouvez également utiliser des frameworks tels que React, Vue et Svelte.
Certains développeurs utilisent également des moteurs de modèles tels que Handlebars, ejs et liquidjs pour implémenter la vue.
Dans une application eCormerce, le code pourrait contenir quelque chose comme ceci :
<h1>{{product.name}}</h2>
<ul>
<p>{{product.description}}</p>
<p>{{product.delivery-modes}}</p>
Le composant contrôleur est l'intermédiaire entre le modèle et la vue. Ce n'est ni un modèle ni une vue, c'est la partie qui les relie.
Ce que le contrôleur fait avec la vue, c'est recevoir et traiter les demandes et les actions des utilisateurs effectuées avec la vue (interface utilisateur). Ainsi, il traite les requêtes telles que GET
, POST
, PUT
ou PATCH
, et DELETE
.
Lorsque le contrôleur reçoit les demandes de l'utilisateur, il communique ensuite avec le modèle pour obtenir ce que l'utilisateur veut, puis le renvoie à la vue (interface utilisateur) pour que l'utilisateur puisse le voir.
Un pseudocode pour ce que fait le contrôleur se trouve dans l'extrait ci-dessous :
if (success) {
show products;
} else {
show error;
}
Le modèle modèle-vue-contrôleur est devenu un modèle d'architecture largement utilisé pour créer des applications Web et d'autres produits logiciels.
Cela peut être déroutant au début, mais un apprentissage et une pratique persistants devraient vous aider à dissiper votre confusion.
Si vous ne savez toujours pas ce qu'est MVC, regardez-le de cette façon :
view
controller
model
Vous pouvez voir que vous, le view
, n'avez jamais besoin d'aller au magasin pour votre pizza, tout comme la vue ne récupère jamais les données directement du modèle à de nombreuses reprises.
1607084960
The Model-View-Controller (MVC) is an architectural style dividing an application into three main system elements: the model, the view, and the controller. Every one of these elements is designed to manage particular aspects of an application’s growth. To build scalable and extensible projects, MVC is one of the most commonly used industry-standard web design platforms.
MVC Elements
Following are the elements of MVC:
Model
All the data-related logic that the user works with corresponds to the Model part. It can represent either the data that is being transmitted between the elements of the View and Controller or some other data relevant to business logic. A customer object, for example, retrieves customer information from the database, manipulates it and updates its data back to the database, or utilizes this for information rendering.
View
For all of the application’s UI logic, the View element has been used. For example, all the UI elements such as text boxes, dropdowns, etc. That the final user communicates with will be included in the Customer’s perspective.
Controller
In order to manage all business rules and incoming requests, controllers serve as an interface between the Model And View elements, modify data using the Model component, and communicate with the Views to make the final performance. For example, the Customer Controller will handle all the Customer View interactions and inputs, and the database will be modified using the Customer Model. To display customer information, the same controller will be used.
ASP.NET MVC:
ASP.NET supports three main growth models: Web sites, Web Forms and MVC (Model View Controller).
ASP.NET MVC Features
ASP.NET MVC provides the following characteristics :
#mvc course in chennai #mvc #mvc training in chennai #mvc training #mvc course
1655958120
MVC est une abréviation qui signifie Modèle, Vue et Contrôleur. Ce modèle architectural a été créé à la fin des années 1970 pour créer des applications de bureau, mais il est maintenant largement utilisé dans le développement d'applications Web.
Dans cet article, je vais approfondir ce que signifie MVC aux côtés de ses 3 composants, afin que vous puissiez le comprendre.
J'ai également préparé une infographie qui peut vous aider à mieux comprendre MVC, mais vous devez d'abord lire l'article. :)
En informatique, MVC est un modèle de conception de logiciel permettant d'organiser le code d'application en trois parties entrelacées : un modèle, une vue et un contrôleur.
Le modèle est la logique d'interaction avec la base de données, la vue est l'interface utilisateur avec laquelle l'utilisateur interagit et le contrôleur est l'intermédiaire entre la vue et le modèle.
Dans de nombreux cas, la vue n'interagit jamais directement avec le modèle - le contrôleur remplit cette fonction.
Dans certains autres frameworks, le modèle peut interagir directement avec la vue
Le modèle de conception MVC vise à diviser le code de l'application en unités qui lui sont propres, de sorte que la maintenance et l'optimisation ne seront pas un problème. C'est ce qu'on appelle communément la "séparation des préoccupations".
Dans le passé, MVC était utilisé uniquement pour créer des interfaces graphiques de bureau. Aujourd'hui, de nombreux langages de programmation et frameworks implémentent MVC pour le développement d'applications Web.
Certains frameworks vous obligent même à utiliser MVC, vous avez donc peut-être utilisé MVC sans vous en rendre compte.
Dans une application Express à pile complète, par exemple, les développeurs divisent souvent le code en un dossier de modèle, de contrôleur et de client (vue).
C'est la structure de dossiers d'un générateur de blagues que j'ai construit pour mon footballeur préféré.
Des exemples de langages de programmation qui utilisent MVC sont C, C++, C#, Java, Ruby, Smalltalk et bien d'autres.
Les frameworks qui utilisent MVC sont Angular, Express, Django, Flask, Laravel, Ruby on rails et autres.
Le composant de modèle contient la logique responsable de la récupération des données de la base de données. Pour cela, vous pouvez également utiliser un fichier JSON à la place d'une base de données.
Par exemple, dans la base de données SQL d'une application de commerce électronique, cela pourrait être quelque chose comme product-data = db.get(SELECT * FROM products;
).
Dans de nombreux cas, le modèle communique avec le contrôleur pour envoyer des données à la vue (interface utilisateur). Dans d'autres cas, le modèle peut envoyer des données directement à la vue.
Le composant de vue est la partie avec laquelle l'utilisateur interagit directement. Il communique avec le contrôleur pour montrer ce que l'utilisateur a demandé avec les actions de la souris et du clavier.
Des langages comme HTML, CSS et JavaScript sont souvent utilisés pour implémenter cette partie. Vous pouvez également utiliser des frameworks tels que React, Vue et Svelte.
Certains développeurs utilisent également des moteurs de modèles tels que Handlebars, ejs et liquidjs pour implémenter la vue.
Dans une application eCormerce, le code pourrait contenir quelque chose comme ceci :
<h1>{{product.name}}</h2>
<ul>
<p>{{product.description}}</p>
<p>{{product.delivery-modes}}</p>
Le composant contrôleur est l'intermédiaire entre le modèle et la vue. Ce n'est ni un modèle ni une vue, c'est la partie qui les relie.
Ce que le contrôleur fait avec la vue, c'est recevoir et traiter les demandes et les actions des utilisateurs effectuées avec la vue (interface utilisateur). Ainsi, il traite les requêtes telles que GET
, POST
, PUT
ou PATCH
, et DELETE
.
Lorsque le contrôleur reçoit les demandes de l'utilisateur, il communique ensuite avec le modèle pour obtenir ce que l'utilisateur veut, puis le renvoie à la vue (interface utilisateur) pour que l'utilisateur puisse le voir.
Un pseudocode pour ce que fait le contrôleur se trouve dans l'extrait ci-dessous :
if (success) {
show products;
} else {
show error;
}
Le modèle modèle-vue-contrôleur est devenu un modèle d'architecture largement utilisé pour créer des applications Web et d'autres produits logiciels.
Cela peut être déroutant au début, mais un apprentissage et une pratique persistants devraient vous aider à dissiper votre confusion.
Si vous ne savez toujours pas ce qu'est MVC, regardez-le de cette façon :
view
controller
model
Vous pouvez voir que vous, le view
, n'avez jamais besoin d'aller au magasin pour votre pizza, tout comme la vue ne récupère jamais les données directement du modèle à de nombreuses reprises.
1625660460
Learn MVC 5 & MVC Core with Angular @ 1990INR/30USD
https://www.questpond.com/angular-with-mvc-core-combo-package/cid61
Following the Syllabus covered in this Package:
*Learn Angular 7.X, 8.X Step By Step.
*Angular Interview Q & A.
*Learn MVC 5 in 2 days.
*Learn MVC core in 4 hours.
*MVC Core Training Recording.
For more details contact questpond@questpond.com OR call +919967590707-9619842789.
#mvc 5 & mvc #angular #mvc #mvc 5
1657272720
Ya sea que hables de Twitter, Goodreads o Amazon, difícilmente existe un espacio digital que no esté saturado con las opiniones de la gente. En el mundo actual, es fundamental que las organizaciones profundicen en estas opiniones y obtengan información sobre sus productos o servicios. Sin embargo, estos datos existen en cantidades tan asombrosas que medirlos manualmente es una tarea casi imposible. Aquí es donde entra en juego otra ventaja de la ciencia de datos : el análisis de sentimientos . En este artículo, exploraremos qué abarca el análisis de sentimientos y las diversas formas de implementarlo en Python.
El análisis de sentimientos es un caso de uso del procesamiento del lenguaje natural (NLP) y se incluye en la categoría de clasificación de texto . En pocas palabras, el análisis de sentimientos implica clasificar un texto en varios sentimientos, como positivo o negativo, feliz, triste o neutral, etc. Por lo tanto, el objetivo final del análisis de sentimientos es descifrar el estado de ánimo, la emoción o el sentimiento subyacente de un texto. Esto también se conoce como Minería de Opinión .
Veamos cómo una búsqueda rápida en Google define el análisis de sentimiento:
Bueno, a estas alturas supongo que estamos algo acostumbrados a lo que es el análisis de sentimientos. Pero, ¿cuál es su importancia y cómo se benefician las organizaciones de ella? Intentemos explorar lo mismo con un ejemplo. Suponga que inicia una empresa que vende perfumes en una plataforma en línea. Pones una amplia gama de fragancias y pronto los clientes comienzan a llegar. Después de un tiempo, decides cambiar la estrategia de precios de los perfumes: planeas aumentar los precios de las fragancias populares y al mismo tiempo ofrecer descuentos en las impopulares. . Ahora, para determinar qué fragancias son populares, comienza a revisar las reseñas de los clientes de todas las fragancias. ¡Pero estás atascado! Son tantos que no puedes pasar por todos ellos en una sola vida. Aquí es donde el análisis de sentimientos puede sacarte del pozo.
Simplemente reúne todas las reseñas en un solo lugar y aplica un análisis de sentimiento. La siguiente es una representación esquemática del análisis de sentimientos sobre las reseñas de tres fragancias de perfumes: lavanda, rosa y limón. (Tenga en cuenta que estas revisiones pueden tener errores ortográficos, gramaticales y de puntuación como en los escenarios del mundo real)
A partir de estos resultados, podemos ver claramente que:
Fragrance-1 (Lavender) tiene críticas muy positivas por parte de los clientes, lo que indica que su empresa puede aumentar sus precios dada su popularidad.
Fragrance-2 (Rose) tiene una perspectiva neutral entre el cliente, lo que significa que su empresa no debe cambiar su precio .
Fragrance-3 (Lemon) tiene un sentimiento general negativo asociado con él; por lo tanto, su empresa debería considerar ofrecer un descuento para equilibrar la balanza.
Este fue solo un ejemplo simple de cómo el análisis de sentimientos puede ayudarlo a obtener información sobre sus productos/servicios y ayudar a su organización a tomar decisiones.
Acabamos de ver cómo el análisis de sentimientos puede empoderar a las organizaciones con conocimientos que pueden ayudarlas a tomar decisiones basadas en datos. Ahora, echemos un vistazo a algunos casos de uso más del análisis de sentimientos.
Python es una de las herramientas más poderosas cuando se trata de realizar tareas de ciencia de datos: ofrece una multitud de formas de realizar análisis de sentimientos . Los más populares se enumeran aquí:
Profundicemos en ellos uno por uno.
Nota: A los efectos de las demostraciones de los métodos 3 y 4 (Uso de modelos basados en vectorización de bolsa de palabras y uso de modelos basados en LSTM) , se ha utilizado el análisis de sentimientos . Comprende más de 5000 fragmentos de texto etiquetados como positivos, negativos o neutrales. El conjunto de datos se encuentra bajo la licencia Creative Commons.
Text Blob es una biblioteca de Python para el procesamiento del lenguaje natural. Usar Text Blob para el análisis de sentimientos es bastante simple. Toma texto como entrada y puede devolver polaridad y subjetividad como salidas.
La polaridad determina el sentimiento del texto. Sus valores se encuentran en [-1,1] donde -1 denota un sentimiento muy negativo y 1 denota un sentimiento muy positivo.
La subjetividad determina si una entrada de texto es información objetiva o una opinión personal. Su valor se encuentra entre [0,1], donde un valor más cercano a 0 denota una información fáctica y un valor más cercano a 1 denota una opinión personal.
Instalación :
pip install textblob
Importación de blob de texto:
from textblob import TextBlob
Implementación de código para el análisis de sentimiento usando Text Blob:
Escribir código para el análisis de sentimientos usando TextBlob es bastante simple. Simplemente importe el objeto TextBlob y pase el texto a analizar con los atributos apropiados de la siguiente manera:
from textblob import TextBlob
text_1 = "The movie was so awesome."
text_2 = "The food here tastes terrible."#Determining the Polarity
p_1 = TextBlob(text_1).sentiment.polarity
p_2 = TextBlob(text_2).sentiment.polarity#Determining the Subjectivity
s_1 = TextBlob(text_1).sentiment.subjectivity
s_2 = TextBlob(text_2).sentiment.subjectivityprint("Polarity of Text 1 is", p_1)
print("Polarity of Text 2 is", p_2)
print("Subjectivity of Text 1 is", s_1)
print("Subjectivity of Text 2 is", s_2)
Producción:
Polarity of Text 1 is 1.0
Polarity of Text 2 is -1.0
Subjectivity of Text 1 is 1.0
Subjectivity of Text 2 is 1.0
VADER (Valence Aware Dictionary and sEntiment Reasoner) es un analizador de sentimientos basado en reglas que ha sido entrenado en texto de redes sociales. Al igual que Text Blob, su uso en Python es bastante simple. Veremos su uso en la implementación de código con un ejemplo dentro de un rato.
Instalación:
pip install vaderSentiment
Importación de la clase SentimentIntensityAnalyzer de Vader:
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
Código para análisis de sentimiento usando Vader:
Primero, necesitamos crear un objeto de la clase SentimentIntensityAnalyzer; luego necesitamos pasar el texto a la función polarity_scores() del objeto de la siguiente manera:
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
sentiment = SentimentIntensityAnalyzer()
text_1 = "The book was a perfect balance between wrtiting style and plot."
text_2 = "The pizza tastes terrible."
sent_1 = sentiment.polarity_scores(text_1)
sent_2 = sentiment.polarity_scores(text_2)
print("Sentiment of text 1:", sent_1)
print("Sentiment of text 2:", sent_2)
Salida :
Sentiment of text 1: {'neg': 0.0, 'neu': 0.73, 'pos': 0.27, 'compound': 0.5719}
Sentiment of text 2: {'neg': 0.508, 'neu': 0.492, 'pos': 0.0, 'compound': -0.4767}
Como podemos ver, un objeto VaderSentiment devuelve un diccionario de puntajes de sentimiento para el texto a analizar.
En los dos enfoques discutidos hasta ahora, es decir, Text Blob y Vader, simplemente hemos usado bibliotecas de Python para realizar análisis de sentimiento. Ahora discutiremos un enfoque en el que entrenaremos nuestro propio modelo para la tarea. Los pasos necesarios para realizar el análisis de sentimiento mediante el método de vectorización Bolsa de palabras son los siguientes:
Código para análisis de sentimiento utilizando el enfoque de vectorización de bolsa de palabras:
Para construir un modelo de análisis de sentimientos utilizando el enfoque de vectorización BOW, necesitamos un conjunto de datos etiquetado. Como se indicó anteriormente, el conjunto de datos utilizado para esta demostración se obtuvo de Kaggle. Simplemente hemos usado el vectorizador de conteo de sklearn para crear el ARCO. Posteriormente, entrenamos un clasificador Multinomial Naive Bayes, para el cual se obtuvo una puntuación de precisión de 0,84.
El conjunto de datos se puede obtener desde aquí .
#Loading the Dataset
import pandas as pd
data = pd.read_csv('Finance_data.csv')
#Pre-Prcoessing and Bag of Word Vectorization using Count Vectorizer
from sklearn.feature_extraction.text import CountVectorizer
from nltk.tokenize import RegexpTokenizer
token = RegexpTokenizer(r'[a-zA-Z0-9]+')
cv = CountVectorizer(stop_words='english',ngram_range = (1,1),tokenizer = token.tokenize)
text_counts = cv.fit_transform(data['sentences'])
#Splitting the data into trainig and testing
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(text_counts, data['feedback'], test_size=0.25, random_state=5)
#Training the model
from sklearn.naive_bayes import MultinomialNB
MNB = MultinomialNB()
MNB.fit(X_train, Y_train)
#Caluclating the accuracy score of the model
from sklearn import metrics
predicted = MNB.predict(X_test)
accuracy_score = metrics.accuracy_score(predicted, Y_test)
print("Accuracuy Score: ",accuracy_score)
Salida :
Accuracuy Score: 0.9111675126903553
El clasificador entrenado se puede usar para predecir el sentimiento de cualquier entrada de texto dada.
Aunque pudimos obtener una puntuación de precisión decente con el método de vectorización Bolsa de palabras, es posible que no produzca los mismos resultados cuando se trata de conjuntos de datos más grandes. Esto da lugar a la necesidad de emplear modelos basados en aprendizaje profundo para el entrenamiento del modelo de análisis de sentimiento.
Para las tareas de NLP, generalmente usamos modelos basados en RNN, ya que están diseñados para tratar datos secuenciales. Aquí, entrenaremos un modelo LSTM (memoria a largo plazo) usando TensorFlow con Keras . Los pasos para realizar un análisis de sentimiento utilizando modelos basados en LSTM son los siguientes:
Código para el análisis de sentimiento utilizando un enfoque de modelo basado en LSTM:
Aquí, hemos utilizado el mismo conjunto de datos que usamos en el caso del enfoque BOW. Se obtuvo una precisión de entrenamiento de 0,90.
#Importing necessary libraries
import nltk
import pandas as pd
from textblob import Word
from nltk.corpus import stopwords
from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import classification_report,confusion_matrix,accuracy_score
from keras.models import Sequential
from keras.preprocessing.text import Tokenizer
from keras.preprocessing.sequence import pad_sequences
from keras.layers import Dense, Embedding, LSTM, SpatialDropout1D
from sklearn.model_selection import train_test_split
#Loading the dataset
data = pd.read_csv('Finance_data.csv')
#Pre-Processing the text
def cleaning(df, stop_words):
df['sentences'] = df['sentences'].apply(lambda x: ' '.join(x.lower() for x in x.split()))
# Replacing the digits/numbers
df['sentences'] = df['sentences'].str.replace('d', '')
# Removing stop words
df['sentences'] = df['sentences'].apply(lambda x: ' '.join(x for x in x.split() if x not in stop_words))
# Lemmatization
df['sentences'] = df['sentences'].apply(lambda x: ' '.join([Word(x).lemmatize() for x in x.split()]))
return df
stop_words = stopwords.words('english')
data_cleaned = cleaning(data, stop_words)
#Generating Embeddings using tokenizer
tokenizer = Tokenizer(num_words=500, split=' ')
tokenizer.fit_on_texts(data_cleaned['verified_reviews'].values)
X = tokenizer.texts_to_sequences(data_cleaned['verified_reviews'].values)
X = pad_sequences(X)
#Model Building
model = Sequential()
model.add(Embedding(500, 120, input_length = X.shape[1]))
model.add(SpatialDropout1D(0.4))
model.add(LSTM(704, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(352, activation='LeakyReLU'))
model.add(Dense(3, activation='softmax'))
model.compile(loss = 'categorical_crossentropy', optimizer='adam', metrics = ['accuracy'])
print(model.summary())
#Model Training
model.fit(X_train, y_train, epochs = 20, batch_size=32, verbose =1)
#Model Testing
model.evaluate(X_test,y_test)
Los modelos basados en transformadores son una de las técnicas de procesamiento del lenguaje natural más avanzadas. Siguen una arquitectura basada en Codificador-Decodificador y emplean los conceptos de autoatención para producir resultados impresionantes. Aunque siempre se puede construir un modelo de transformador desde cero, es una tarea bastante tediosa. Por lo tanto, podemos usar modelos de transformadores preentrenados disponibles en Hugging Face . Hugging Face es una comunidad de IA de código abierto que ofrece una multitud de modelos preentrenados para aplicaciones de PNL. Estos modelos se pueden usar como tales o se pueden ajustar para tareas específicas.
Instalación:
pip install transformers
Importación de la clase SentimentIntensityAnalyzer de Vader:
import transformers
Código para análisis de sentimiento usando modelos basados en transformadores:
Para realizar cualquier tarea usando transformadores, primero debemos importar la función de canalización desde los transformadores. Luego, se crea un objeto de la función de canalización y se pasa como argumento la tarea a realizar (es decir, análisis de sentimiento en nuestro caso). También podemos especificar el modelo que necesitamos usar para realizar la tarea. Aquí, dado que no hemos mencionado el modelo que se usará, el modo destilería-base-uncased-finetuned-sst-2-English se usa de forma predeterminada para el análisis de sentimiento. Puede consultar la lista de tareas y modelos disponibles aquí .
from transformers import pipeline
sentiment_pipeline = pipeline("sentiment-analysis")
data = ["It was the best of times.", "t was the worst of times."]
sentiment_pipeline(data)Output:[{'label': 'POSITIVE', 'score': 0.999457061290741}, {'label': 'NEGATIVE', 'score': 0.9987301230430603}]
En esta era en la que los usuarios pueden expresar sus puntos de vista sin esfuerzo y los datos se generan de manera superflua en fracciones de segundos, obtener información de dichos datos es vital para que las organizaciones tomen decisiones eficientes, ¡y el análisis de sentimientos demuestra ser la pieza faltante del rompecabezas!
Hasta ahora hemos cubierto con gran detalle qué implica exactamente el análisis de sentimientos y los diversos métodos que se pueden usar para realizarlo en Python. Pero estas fueron solo algunas demostraciones rudimentarias: seguramente debe seguir adelante y jugar con los modelos y probarlos con sus propios datos.
Fuente: https://www.analyticsvidhya.com/blog/2022/07/sentiment-analysis-using-python/
1657272480
Qu'il s'agisse de Twitter, de Goodreads ou d'Amazon, il n'y a guère d'espace numérique qui ne soit pas saturé d'opinions. Dans le monde d'aujourd'hui, il est crucial pour les organisations d'approfondir ces opinions et d'obtenir des informations sur leurs produits ou services. Cependant, ces données existent en quantités si étonnantes que les évaluer manuellement est une poursuite presque impossible. C'est là qu'intervient une autre aubaine de la science des données : l' analyse des sentiments . Dans cet article, nous allons explorer ce qu'englobe l'analyse des sentiments et les différentes façons de l'implémenter en Python.
L'analyse des sentiments est un cas d'utilisation du traitement du langage naturel (TLN) et relève de la catégorie de la classification de texte . Pour le dire simplement, l'analyse des sentiments consiste à classer un texte en différents sentiments, tels que positif ou négatif, heureux, triste ou neutre, etc. Ainsi, le but ultime de l'analyse des sentiments est de déchiffrer l'humeur, l'émotion ou le sentiment sous-jacent d'un texte. Ceci est également connu sous le nom d' Opinion Mining .
Voyons comment une recherche rapide sur Google définit l'analyse des sentiments :
Eh bien, maintenant, je suppose que nous sommes quelque peu habitués à ce qu'est l'analyse des sentiments. Mais quelle est sa signification et comment les organisations en bénéficient-elles ? Essayons d'explorer la même chose avec un exemple. Supposons que vous démarriez une entreprise qui vend des parfums sur une plateforme en ligne. Vous proposez une large gamme de parfums et bientôt les clients commencent à affluer. Après un certain temps, vous décidez de changer la stratégie de prix des parfums - vous envisagez d'augmenter les prix des parfums populaires et en même temps d'offrir des remises sur les parfums impopulaires. . Maintenant, afin de déterminer quels parfums sont populaires, vous commencez à parcourir les avis des clients sur tous les parfums. Mais tu es coincé ! Ils sont tellement nombreux que vous ne pouvez pas tous les parcourir en une seule vie. C'est là que l'analyse des sentiments peut vous sortir de l'impasse.
Vous rassemblez simplement tous les avis en un seul endroit et y appliquez une analyse des sentiments. Ce qui suit est une représentation schématique de l'analyse des sentiments sur les critiques de trois parfums de parfums - Lavande, Rose et Citron. (Veuillez noter que ces avis peuvent avoir des fautes d'orthographe, de grammaire et de ponctuation, comme dans les scénarios du monde réel)
A partir de ces résultats, nous pouvons clairement voir que :
Fragrance-1 (Lavande) a des critiques très positives de la part des clients, ce qui indique que votre entreprise peut augmenter ses prix compte tenu de sa popularité.
Il se trouve que Fragrance-2 (Rose) a une vision neutre parmi le client, ce qui signifie que votre entreprise ne doit pas modifier ses prix .
Fragrance-3 (Citron) a un sentiment global négatif qui lui est associé - votre entreprise devrait donc envisager d'offrir une remise pour équilibrer la balance.
Ce n'était qu'un exemple simple de la façon dont l'analyse des sentiments peut vous aider à mieux comprendre vos produits/services et aider votre organisation à prendre des décisions.
Nous venons de voir comment l'analyse des sentiments peut donner aux organisations des informations qui peuvent les aider à prendre des décisions basées sur les données. Examinons maintenant d'autres cas d'utilisation de l'analyse des sentiments.
Python est l'un des outils les plus puissants lorsqu'il s'agit d'effectuer des tâches de science des données - il offre une multitude de façons d'effectuer une analyse des sentiments . Les plus populaires sont enrôlés ici:
Plongeons-les profondément un par un.
Remarque : Aux fins des démonstrations des méthodes 3 et 4 (utilisation de modèles basés sur la vectorisation de sacs de mots et utilisation de modèles basés sur LSTM) , l'analyse des sentiments a été utilisée. Il comprend plus de 5000 extraits de texte étiquetés comme positifs, négatifs ou neutres. Le jeu de données est sous licence Creative Commons.
Text Blob est une bibliothèque Python pour le traitement du langage naturel. L'utilisation de Text Blob pour l'analyse des sentiments est assez simple. Il prend le texte en entrée et peut renvoyer la polarité et la subjectivité en sortie.
La polarité détermine le sentiment du texte. Ses valeurs se situent dans [-1,1] où -1 dénote un sentiment très négatif et 1 dénote un sentiment très positif.
La subjectivité détermine si une entrée de texte est une information factuelle ou une opinion personnelle. Sa valeur est comprise entre [0,1] où une valeur plus proche de 0 dénote une information factuelle et une valeur plus proche de 1 dénote une opinion personnelle.
Mise en place :
pip install textblob
Importer un blob de texte :
from textblob import TextBlob
Implémentation de code pour l'analyse des sentiments à l'aide de Text Blob :
L'écriture de code pour l'analyse des sentiments à l'aide de TextBlob est assez simple. Importez simplement l'objet TextBlob et transmettez le texte à analyser avec les attributs appropriés comme suit :
from textblob import TextBlob
text_1 = "The movie was so awesome."
text_2 = "The food here tastes terrible."#Determining the Polarity
p_1 = TextBlob(text_1).sentiment.polarity
p_2 = TextBlob(text_2).sentiment.polarity#Determining the Subjectivity
s_1 = TextBlob(text_1).sentiment.subjectivity
s_2 = TextBlob(text_2).sentiment.subjectivityprint("Polarity of Text 1 is", p_1)
print("Polarity of Text 2 is", p_2)
print("Subjectivity of Text 1 is", s_1)
print("Subjectivity of Text 2 is", s_2)
Production:
Polarity of Text 1 is 1.0
Polarity of Text 2 is -1.0
Subjectivity of Text 1 is 1.0
Subjectivity of Text 2 is 1.0
VADER (Valence Aware Dictionary and sEntiment Reasoner) est un analyseur de sentiments basé sur des règles qui a été formé sur le texte des médias sociaux. Tout comme Text Blob, son utilisation en Python est assez simple. Nous verrons son utilisation dans l'implémentation du code avec un exemple dans un moment.
Installation:
pip install vaderSentiment
Importation de la classe SentimentIntensityAnalyzer depuis Vader :
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
Code pour l'analyse des sentiments à l'aide de Vader :
Tout d'abord, nous devons créer un objet de la classe SentimentIntensityAnalyzer ; alors nous devons passer le texte à la fonction polarity_scores() de l'objet comme suit :
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
sentiment = SentimentIntensityAnalyzer()
text_1 = "The book was a perfect balance between wrtiting style and plot."
text_2 = "The pizza tastes terrible."
sent_1 = sentiment.polarity_scores(text_1)
sent_2 = sentiment.polarity_scores(text_2)
print("Sentiment of text 1:", sent_1)
print("Sentiment of text 2:", sent_2)
Sortie :
Sentiment of text 1: {'neg': 0.0, 'neu': 0.73, 'pos': 0.27, 'compound': 0.5719}
Sentiment of text 2: {'neg': 0.508, 'neu': 0.492, 'pos': 0.0, 'compound': -0.4767}
Comme nous pouvons le voir, un objet VaderSentiment renvoie un dictionnaire de scores de sentiment pour le texte à analyser.
Dans les deux approches discutées jusqu'à présent, c'est-à-dire Text Blob et Vader, nous avons simplement utilisé des bibliothèques Python pour effectuer une analyse des sentiments. Nous allons maintenant discuter d'une approche dans laquelle nous formerons notre propre modèle pour la tâche. Les étapes impliquées dans l'analyse des sentiments à l'aide de la méthode de vectorisation du sac de mots sont les suivantes :
Code pour l'analyse des sentiments à l'aide de l'approche de vectorisation du sac de mots :
Pour créer un modèle d'analyse des sentiments à l'aide de l'approche de vectorisation BOW, nous avons besoin d'un ensemble de données étiqueté. Comme indiqué précédemment, l'ensemble de données utilisé pour cette démonstration a été obtenu auprès de Kaggle. Nous avons simplement utilisé le vectoriseur de comptage de sklearn pour créer le BOW. Ensuite, nous avons formé un classificateur Multinomial Naive Bayes, pour lequel un score de précision de 0,84 a été obtenu.
L'ensemble de données peut être obtenu à partir d' ici .
#Loading the Dataset
import pandas as pd
data = pd.read_csv('Finance_data.csv')
#Pre-Prcoessing and Bag of Word Vectorization using Count Vectorizer
from sklearn.feature_extraction.text import CountVectorizer
from nltk.tokenize import RegexpTokenizer
token = RegexpTokenizer(r'[a-zA-Z0-9]+')
cv = CountVectorizer(stop_words='english',ngram_range = (1,1),tokenizer = token.tokenize)
text_counts = cv.fit_transform(data['sentences'])
#Splitting the data into trainig and testing
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(text_counts, data['feedback'], test_size=0.25, random_state=5)
#Training the model
from sklearn.naive_bayes import MultinomialNB
MNB = MultinomialNB()
MNB.fit(X_train, Y_train)
#Caluclating the accuracy score of the model
from sklearn import metrics
predicted = MNB.predict(X_test)
accuracy_score = metrics.accuracy_score(predicted, Y_test)
print("Accuracuy Score: ",accuracy_score)
Sortie :
Accuracuy Score: 0.9111675126903553
Le classificateur formé peut être utilisé pour prédire le sentiment de n'importe quelle entrée de texte donnée.
Bien que nous ayons pu obtenir un score de précision décent avec la méthode de vectorisation du sac de mots, il se peut qu'elle ne donne pas les mêmes résultats lorsqu'il s'agit d'ensembles de données plus volumineux. Cela donne lieu à la nécessité d'utiliser des modèles basés sur l'apprentissage en profondeur pour la formation du modèle d'analyse des sentiments.
Pour les tâches NLP, nous utilisons généralement des modèles basés sur RNN car ils sont conçus pour traiter des données séquentielles. Ici, nous allons former un modèle LSTM (Long Short Term Memory) en utilisant TensorFlow avec Keras . Les étapes pour effectuer une analyse des sentiments à l'aide de modèles basés sur LSTM sont les suivantes :
Code pour l'analyse des sentiments à l'aide d'une approche de modèle basée sur LSTM :
Ici, nous avons utilisé le même jeu de données que celui que nous avons utilisé dans le cas de l'approche BOW. Une précision d'entraînement de 0,90 a été obtenue.
#Importing necessary libraries
import nltk
import pandas as pd
from textblob import Word
from nltk.corpus import stopwords
from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import classification_report,confusion_matrix,accuracy_score
from keras.models import Sequential
from keras.preprocessing.text import Tokenizer
from keras.preprocessing.sequence import pad_sequences
from keras.layers import Dense, Embedding, LSTM, SpatialDropout1D
from sklearn.model_selection import train_test_split
#Loading the dataset
data = pd.read_csv('Finance_data.csv')
#Pre-Processing the text
def cleaning(df, stop_words):
df['sentences'] = df['sentences'].apply(lambda x: ' '.join(x.lower() for x in x.split()))
# Replacing the digits/numbers
df['sentences'] = df['sentences'].str.replace('d', '')
# Removing stop words
df['sentences'] = df['sentences'].apply(lambda x: ' '.join(x for x in x.split() if x not in stop_words))
# Lemmatization
df['sentences'] = df['sentences'].apply(lambda x: ' '.join([Word(x).lemmatize() for x in x.split()]))
return df
stop_words = stopwords.words('english')
data_cleaned = cleaning(data, stop_words)
#Generating Embeddings using tokenizer
tokenizer = Tokenizer(num_words=500, split=' ')
tokenizer.fit_on_texts(data_cleaned['verified_reviews'].values)
X = tokenizer.texts_to_sequences(data_cleaned['verified_reviews'].values)
X = pad_sequences(X)
#Model Building
model = Sequential()
model.add(Embedding(500, 120, input_length = X.shape[1]))
model.add(SpatialDropout1D(0.4))
model.add(LSTM(704, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(352, activation='LeakyReLU'))
model.add(Dense(3, activation='softmax'))
model.compile(loss = 'categorical_crossentropy', optimizer='adam', metrics = ['accuracy'])
print(model.summary())
#Model Training
model.fit(X_train, y_train, epochs = 20, batch_size=32, verbose =1)
#Model Testing
model.evaluate(X_test,y_test)
Les modèles basés sur les transformateurs sont l'une des techniques de traitement du langage naturel les plus avancées. Ils suivent une architecture basée sur l'encodeur-décodeur et utilisent les concepts d'auto-attention pour donner des résultats impressionnants. Bien que l'on puisse toujours construire un modèle de transformateur à partir de zéro, c'est une tâche assez fastidieuse. Ainsi, nous pouvons utiliser des modèles de transformateurs pré-formés disponibles sur Hugging Face . Hugging Face est une communauté d'IA open source qui propose une multitude de modèles pré-formés pour les applications NLP. Ces modèles peuvent être utilisés tels quels ou être affinés pour des tâches spécifiques.
Installation:
pip install transformers
Importation de la classe SentimentIntensityAnalyzer depuis Vader :
import transformers
Code pour l'analyse des sentiments à l'aide de modèles basés sur Transformer :
Pour effectuer une tâche à l'aide de transformateurs, nous devons d'abord importer la fonction de pipeline à partir des transformateurs. Ensuite, un objet de la fonction pipeline est créé et la tâche à effectuer est passée en argument (c'est-à-dire l'analyse des sentiments dans notre cas). Nous pouvons également spécifier le modèle que nous devons utiliser pour effectuer la tâche. Ici, puisque nous n'avons pas mentionné le modèle à utiliser, le mode distillery-base-uncased-finetuned-sst-2-English est utilisé par défaut pour l'analyse des sentiments. Vous pouvez consulter la liste des tâches et des modèles disponibles ici .
from transformers import pipeline
sentiment_pipeline = pipeline("sentiment-analysis")
data = ["It was the best of times.", "t was the worst of times."]
sentiment_pipeline(data)Output:[{'label': 'POSITIVE', 'score': 0.999457061290741}, {'label': 'NEGATIVE', 'score': 0.9987301230430603}]
À cette époque où les utilisateurs peuvent exprimer leurs points de vue sans effort et où les données sont générées en superflu en quelques fractions de secondes seulement - tirer des enseignements de ces données est vital pour que les organisations prennent des décisions efficaces - et l'analyse des sentiments s'avère être la pièce manquante du puzzle !
Nous avons maintenant couvert en détail ce qu'implique exactement l'analyse des sentiments et les différentes méthodes que l'on peut utiliser pour l'exécuter en Python. Mais ce n'étaient que quelques démonstrations rudimentaires - vous devez sûrement aller de l'avant et jouer avec les modèles et les essayer sur vos propres données.
Source : https://www.analyticsvidhya.com/blog/2022/07/sentiment-analysis-using-python/