Gordon  Murray

Gordon Murray

1670667429

Model Snowflake External Tables in Vertabelo

There is a lot more data than stored in databases. This raises the question of how to access all the external data from the database. The external tables come to the rescue! Read along to learn more about external tables in Snowflake and how to model them in Vertabelo.

This article focuses on external tables in the Snowflake database. We will first introduce the Snowflake database and the concept of external tables. We’ll then see how to model Snowflake external tables in VERTABELO.

To find out more about Vertabelo’s support for the Snowflake database, check out THIS ARTICLE.

Let’s get started!

External Tables in Snowflake

We will start with the basics. Let’s find out more about Snowflake and the concept of external tables.

What Is Snowflake?

Snowflake provides various services. It is a cloud computing data warehouse where you can store and analyze data. It is also an SQL database that lets you store, access, and retrieve data.

External Tables in Snowflake

Source: HTTPS://WWW.SNOWFLAKE.COM/BLOG/MANAGING-SNOWFLAKES-COMPUTE-RESOURCES/

Snowflake runs on Amazon Web Services, Microsoft Azure, and Google Cloud. It introduces a convenient separation of data storage from computing, thus allowing for seamless scaling of both the storage and the CPU independently.

What Are External Tables?

We are used to working with database tables whose data resides internally in a database. But we can also create tables with data external to the database. These are the so-called external tables.

What else should you know about external tables?

  • While the data in external tables resides outside the database, external tables make it feel as if it is inside.
  • External tables let you use their data for querying and joining operations.
  • External tables are read-only. So, you cannot perform any DML operations on them.
  • Querying data external to a database can negatively impact query performance. You can fix it by creating materialized views based on external tables and running queries on these views.

Let’s visualize external tables in a database.

External Tables in Snowflake

External tables do what the name indicates. They take data from external files and make it available in a database. Standard tables, on the other hand, contain data that resides internally in a database.

Modeling Snowflake External Tables in Vertabelo

Now, let’s get started with Vertabelo. We’ll learn how to create external tables in Snowflake and modify their properties.

But first, let’s create a new physical data model for our Snowflake database. Then we can design external tables in ER diagrams.

External Tables in Snowflake

Now, we are ready to start!

There are many ways you can draw ER diagrams. Learn more by visiting our articles on HOW TO DRAW AN ER DIAGRAM ONLINE and TOP 7 ENTITY RELATIONSHIP (ER) DIAGRAM ONLINE TOOLS.

Creating External Tables in Snowflake

A Snowflake ER diagram would not be complete without external tables. Vertabelo provides you with convenient ways of creating them.

Via the Toolbar

Just click the button, and you’ll get the external table ready.

External Tables in Snowflake

Via the Left Panel

You can also do it via the left-hand panel, like this:

External Tables in Snowflake

Now, our external table is ready.

External Tables in Snowflake

Let’s fix the errors and warnings by modifying the properties in the right-hand panel.

Modifying Properties of External Tables

Now that we have created an external table in Snowflake, we can fill in the properties.

Changing the Name

When an external table is created, there is a warning that says we should change its default name. We can do that in the General section of the right-hand panel, like this:

External Tables in Snowflake

We got rid of the warning! Let’s move on.

Adding Columns

We can add columns to an external table in the same way we do for standard tables. In the Columns section of the right-hand panel, there is an Add column button. By clicking it, we can add some columns.

neral section of the right-hand panel, like this:

External Tables in Snowflake

But there are still two errors. Let’s resolve those.

Adding the File and its Location

The remaining errors tell us the file location and file format fields are missing. We can easily add them in the Additional properties section of the right-hand panel. First, click the Set button next to the Location and File format fields. Then, you can type in the location of the external file and its format.

External Tables in Snowflake

We have created an external table and got rid of all the errors. Now, we can explore other properties.

Other Properties for External Tables

There are many other properties in the Additional properties section of the right-hand panel. Let’s go through them one by one.

External Tables in Snowflake

The available properties are, from the top:

  • The Schema property asks you for the database schema name where the external table exists.
  • The Location property requires the location of the external file (as mentioned in the previous section). The trace of this property in the generated SQL script is WITH LOCATION = <value of the Location field>.
  • The Partition by property asks you how to partition the table. The trace of this property in the generated SQL script is the PARTITION BY
  • The File format property requires the format of the external file. The trace of this property in the generated SQL script is FILE_FORMAT = <value of the File format field>.
  • The AWS SNS topic property is optional. The trace of this property in the generated SQL script is AWS_SNS_TOPIC = <value of the AWS SNS topic field>.
  • The Pattern property lets you filter the data that matches the given pattern. The trace of this property in the generated SQL script is PATTERN = '<value of the Pattern field>'.
  • The Auto refresh property is set to Yes by default (i.e., after clicking the Set button). This property ensures periodical synchronization of the data in the external table with the data in the file unless you set it to No. The trace of this property in the generated SQL script is AUTO_REFRESH = TRUE|FALSE.
  • The Refresh on create property is set to Yes by default (i.e., after clicking the Set button). This property ensures the data of the external table is synchronized with the data in the file data at the table creation time unless you set it to No. The trace of this property in the generated SQL script is REFRESH_ON_CREATE = TRUE|FALSE.

Other Properties for Columns of External Tables

In the Columns section of the right-hand panel, you can expand each column by clicking the arrow next to it.

External Tables in Snowflake

There are two properties: Expression and Constraint. The Expression property defines the alias name for a column. The trace of this property in the generated SQL script is columnName AS columnAlias. The Constraint property defines the constraint set on a column. It may be NOT NULL, DEFAULT, PRIMARY KEY, etc.

These are all the properties you can use when creating ER diagrams that contain external tables in Vertabelo.

What’s Next?

External tables in Snowflake can be considered an interface that lets you view data external to your database. Not only can you view external data, but you can also query and join with other tables. And if you create a view based on an external table, there are benefits such as improved query performance. External tables are a powerful tool that pays to know.

Now, it’s time for you to create ER diagrams with external tables in Vertabelo on your own. Be sure to check out the current developments in Vertabelo by following THIS ARTICLE. Good luck!

Original article source at: https://www.vertabelo.com

#snowflake #table #database 

What is GEEK

Buddha Community

 Model Snowflake External Tables in Vertabelo
Gordon  Murray

Gordon Murray

1670667429

Model Snowflake External Tables in Vertabelo

There is a lot more data than stored in databases. This raises the question of how to access all the external data from the database. The external tables come to the rescue! Read along to learn more about external tables in Snowflake and how to model them in Vertabelo.

This article focuses on external tables in the Snowflake database. We will first introduce the Snowflake database and the concept of external tables. We’ll then see how to model Snowflake external tables in VERTABELO.

To find out more about Vertabelo’s support for the Snowflake database, check out THIS ARTICLE.

Let’s get started!

External Tables in Snowflake

We will start with the basics. Let’s find out more about Snowflake and the concept of external tables.

What Is Snowflake?

Snowflake provides various services. It is a cloud computing data warehouse where you can store and analyze data. It is also an SQL database that lets you store, access, and retrieve data.

External Tables in Snowflake

Source: HTTPS://WWW.SNOWFLAKE.COM/BLOG/MANAGING-SNOWFLAKES-COMPUTE-RESOURCES/

Snowflake runs on Amazon Web Services, Microsoft Azure, and Google Cloud. It introduces a convenient separation of data storage from computing, thus allowing for seamless scaling of both the storage and the CPU independently.

What Are External Tables?

We are used to working with database tables whose data resides internally in a database. But we can also create tables with data external to the database. These are the so-called external tables.

What else should you know about external tables?

  • While the data in external tables resides outside the database, external tables make it feel as if it is inside.
  • External tables let you use their data for querying and joining operations.
  • External tables are read-only. So, you cannot perform any DML operations on them.
  • Querying data external to a database can negatively impact query performance. You can fix it by creating materialized views based on external tables and running queries on these views.

Let’s visualize external tables in a database.

External Tables in Snowflake

External tables do what the name indicates. They take data from external files and make it available in a database. Standard tables, on the other hand, contain data that resides internally in a database.

Modeling Snowflake External Tables in Vertabelo

Now, let’s get started with Vertabelo. We’ll learn how to create external tables in Snowflake and modify their properties.

But first, let’s create a new physical data model for our Snowflake database. Then we can design external tables in ER diagrams.

External Tables in Snowflake

Now, we are ready to start!

There are many ways you can draw ER diagrams. Learn more by visiting our articles on HOW TO DRAW AN ER DIAGRAM ONLINE and TOP 7 ENTITY RELATIONSHIP (ER) DIAGRAM ONLINE TOOLS.

Creating External Tables in Snowflake

A Snowflake ER diagram would not be complete without external tables. Vertabelo provides you with convenient ways of creating them.

Via the Toolbar

Just click the button, and you’ll get the external table ready.

External Tables in Snowflake

Via the Left Panel

You can also do it via the left-hand panel, like this:

External Tables in Snowflake

Now, our external table is ready.

External Tables in Snowflake

Let’s fix the errors and warnings by modifying the properties in the right-hand panel.

Modifying Properties of External Tables

Now that we have created an external table in Snowflake, we can fill in the properties.

Changing the Name

When an external table is created, there is a warning that says we should change its default name. We can do that in the General section of the right-hand panel, like this:

External Tables in Snowflake

We got rid of the warning! Let’s move on.

Adding Columns

We can add columns to an external table in the same way we do for standard tables. In the Columns section of the right-hand panel, there is an Add column button. By clicking it, we can add some columns.

neral section of the right-hand panel, like this:

External Tables in Snowflake

But there are still two errors. Let’s resolve those.

Adding the File and its Location

The remaining errors tell us the file location and file format fields are missing. We can easily add them in the Additional properties section of the right-hand panel. First, click the Set button next to the Location and File format fields. Then, you can type in the location of the external file and its format.

External Tables in Snowflake

We have created an external table and got rid of all the errors. Now, we can explore other properties.

Other Properties for External Tables

There are many other properties in the Additional properties section of the right-hand panel. Let’s go through them one by one.

External Tables in Snowflake

The available properties are, from the top:

  • The Schema property asks you for the database schema name where the external table exists.
  • The Location property requires the location of the external file (as mentioned in the previous section). The trace of this property in the generated SQL script is WITH LOCATION = <value of the Location field>.
  • The Partition by property asks you how to partition the table. The trace of this property in the generated SQL script is the PARTITION BY
  • The File format property requires the format of the external file. The trace of this property in the generated SQL script is FILE_FORMAT = <value of the File format field>.
  • The AWS SNS topic property is optional. The trace of this property in the generated SQL script is AWS_SNS_TOPIC = <value of the AWS SNS topic field>.
  • The Pattern property lets you filter the data that matches the given pattern. The trace of this property in the generated SQL script is PATTERN = '<value of the Pattern field>'.
  • The Auto refresh property is set to Yes by default (i.e., after clicking the Set button). This property ensures periodical synchronization of the data in the external table with the data in the file unless you set it to No. The trace of this property in the generated SQL script is AUTO_REFRESH = TRUE|FALSE.
  • The Refresh on create property is set to Yes by default (i.e., after clicking the Set button). This property ensures the data of the external table is synchronized with the data in the file data at the table creation time unless you set it to No. The trace of this property in the generated SQL script is REFRESH_ON_CREATE = TRUE|FALSE.

Other Properties for Columns of External Tables

In the Columns section of the right-hand panel, you can expand each column by clicking the arrow next to it.

External Tables in Snowflake

There are two properties: Expression and Constraint. The Expression property defines the alias name for a column. The trace of this property in the generated SQL script is columnName AS columnAlias. The Constraint property defines the constraint set on a column. It may be NOT NULL, DEFAULT, PRIMARY KEY, etc.

These are all the properties you can use when creating ER diagrams that contain external tables in Vertabelo.

What’s Next?

External tables in Snowflake can be considered an interface that lets you view data external to your database. Not only can you view external data, but you can also query and join with other tables. And if you create a view based on an external table, there are benefits such as improved query performance. External tables are a powerful tool that pays to know.

Now, it’s time for you to create ER diagrams with external tables in Vertabelo on your own. Be sure to check out the current developments in Vertabelo by following THIS ARTICLE. Good luck!

Original article source at: https://www.vertabelo.com

#snowflake #table #database 

Desmond  Gerber

Desmond Gerber

1670684068

Model Snowflake Materialized Views in Vertabelo

Cloud technologies are becoming more and more popular. Recently, Vertabelo ADDED SUPPORT FOR THE SNOWFLAKE DATABASE. An additional feature, much awaited by our users, was support for materialized views in Snowflake. We are happy to announce that you can now model materialized views in a Snowflake database using Vertabelo.

What Is a Materialized View?

Materialized views are different from simple VIEWS. While simple views allow us to save complicated queries for future use, materialized views store a copy of the query results. They are not always perfectly up-to-date, but can be very useful if the results of complicated queries must be obtained very quickly.

In this article, we will show you how to model Snowflake materialized views in VERTABELO.

Modeling Snowflake Materialized Views in Vertabelo

1. Add a Materialized View

To add a view, click the Add materialized view icon.

How to Model Snowflake Materialized Views in Vertabelo

Alternatively, in Model Structure (in the left panel), right-click on Materialized views and choose Add materialized view.

How to Model Snowflake Materialized Views in Vertabelo

2. Change the View Name

If you don’t change the default view name, the following warning will pop up:

How to Model Snowflake Materialized Views in Vertabelo

To fix that, click on the materialized view. In the right panel, under General, type the name of your choice.

How to Model Snowflake Materialized Views in Vertabelo

You can also add a comment to the view if you’d like.

3. Add the Query

The next step is to add a query. Use the SQL query field in the Materialized View Properties panel.

How to Model Snowflake Materialized Views in Vertabelo

Next, scroll down and click Update columns.

How to Model Snowflake Materialized Views in Vertabelo

A new window will appear. Verify the columns that will be generated based on the SQL query you provided. Then, click Update columns.

How to Model Snowflake Materialized Views in Vertabelo

The view’s columns should be updated:

How to Model Snowflake Materialized Views in Vertabelo

Note that the materialized view must have at least one column. Otherwise, the following error will appear:

How to Model Snowflake Materialized Views in Vertabelo

How to Edit Columns

If the automatically generated columns are incorrect or if they need to be changed, you can always modify them manually in the Columns section of the right panel. Here you can change column names and types, add new columns, or delete existing columns.

How to Model Snowflake Materialized Views in Vertabelo

Materialized View Options

Additional SQL Scripts

To configure additional SQL scripts, select the materialized view. In the right panel, scroll down to the Additional SQL scripts section. You can add scripts that will be run before and after the materialized view is created. They can perform actions that cannot be modelled directly in Vertabelo, such as defining functions or stored procedures, adding users, or setting permissions for objects like views or tables.

How to Model Snowflake Materialized Views in Vertabelo

Additional Properties

To see additional view properties, select the view. In the right panel, scroll down to the Additional properties section.

How to Model Snowflake Materialized Views in Vertabelo

Click Set to add property.

How to Model Snowflake Materialized Views in Vertabelo

Click Unset to remove it.

How to Model Snowflake Materialized Views in Vertabelo

Let’s discuss the role of each materialized view property in Snowflake:

Schema – This is the name of the schema in which the table will be placed.

Secure – If this is set to yes, the view is marked as secure. This means that the underlying tables, internal structural details, and the data in the view’s base tables are hidden and can only be accessed by authorized users.

Cluster by – This property is a comma-separated list of columns or expressions that determine how to cluster the materialized view. When the materialized view is clustered, the data inserted is sorted based on the clustering columns. This can improve performance when the data is queried, as not all the rows will be scanned.

Format

To change the view’s appearance, select the right panel and scroll down to the Format section. To change the table background color, click on the color field under Fill color. Select the desired color in the color picker. You can also choose the table’s line color and set its size to fixed.

How to Model Snowflake Materialized Views in Vertabelo

Learn More About Materialized Views in Vertabelo

In this article, we discussed what materialized views are and how to model them in Vertabelo. You can LEARN MORE ABOUT MATERIALIZED VIEWS HERE. To see what new features were introduced in Vertabelo this year, check out  2020 WAS VERTABELO DATABASE MODELER’S YEAR. IT’LL GET EVEN BETTER IN 2021.

Original article source at: https://www.vertabelo.com/

#views #model #snowflake 

Fredy  Larson

Fredy Larson

1595209620

How to alter tables in production when records are in millions

As a developer, I have experienced changes in app when it is in production and the records have grown up to millions. In this specific case if you want to alter a column using simple migrations that will not work because of the following reasons:

It is not so easy if your production servers are under heavy load and the database tables have 100 million rows. Because such a migration will run for some seconds or even minutes and the database table can be locked for this time period – a no-go on a zero-downtime environment.

In this specific case you can use MySQL’s algorithms: Online DDL operations. That’s how you can do it in Laravel.

First of all create migration. For example I want to modify a column’s name the traditional migration will be:

Schema::table('users', function (Blueprint $table) {
            $table->renameColumn('name', 'first_name');
        });

Run the following command php artisan migrate –pretend this command will not run the migration rather it will print out it’s raw sql:

ALTER TABLE users CHANGE name first_name VARCHAR(191) NOT NULL

Copy that raw sql, remove following code:

Schema::table('users', function (Blueprint $table) {
            $table->renameColumn('name', 'first_name');
        });

Replace it with following in migrations up method:

\DB::statement('ALTER TABLE users CHANGE name first_name VARCHAR(191) NOT NULL');

Add desired algorithm, in my case query will look like this:

\DB::statement('ALTER TABLE users CHANGE name first_name VARCHAR(191) NOT NULL, ALGORITHM=INPLACE, LOCK=NONE;');

#laravel #mysql #php #alter heavy tables in production laravel #alter table in production laravel #alter tables with million of records in laravel #how to alter heavy table in production laravel #how to alter table in production larave #mysql online ddl operations

Thierry  Perret

Thierry Perret

1657272480

5 Façons D'effectuer Une analyse Des Sentiments En Python

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.

Qu'est-ce que l'analyse des sentiments ?

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 :

définition de l'analyse des sentiments

Obtenir des informations et prendre des décisions grâce à 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)

analyse des sentiments

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.

Cas d'utilisation de l'analyse des sentiments

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.

  1. Surveillance des médias sociaux pour la gestion de la marque : les marques peuvent utiliser l'analyse des sentiments pour évaluer les perspectives publiques de leur marque. Par exemple, une entreprise peut rassembler tous les Tweets avec la mention ou le tag de l'entreprise et effectuer une analyse des sentiments pour connaître les perspectives publiques de l'entreprise.
  2. Analyse des produits/services : les marques/organisations peuvent effectuer une analyse des sentiments sur les avis des clients pour voir dans quelle mesure un produit ou un service se comporte sur le marché et prendre des décisions futures en conséquence.
  3. Prévision du cours des actions : Prédire si les actions d'une entreprise vont monter ou descendre est crucial pour les investisseurs. On peut déterminer la même chose en effectuant une analyse des sentiments sur les titres des articles contenant le nom de l'entreprise. Si les gros titres concernant une organisation particulière ont un sentiment positif, le cours de ses actions devrait augmenter et vice-versa.

Façons d'effectuer une analyse des sentiments en Python

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:

  1. Utilisation du blob de texte
  2. Utiliser Vador
  3. Utilisation de modèles basés sur la vectorisation de sacs de mots
  4. Utilisation de modèles basés sur LSTM
  5. Utilisation de modèles basés sur des transformateurs

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.

Utilisation du blob de texte

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

Utiliser VADER

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.

Utilisation de modèles basés sur la vectorisation de sacs de mots

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 :

  1. Prétraiter le texte des données de formation (le prétraitement du texte implique la normalisation, la tokenisation, la suppression des mots vides et la radicalisation/lemmatisation.)
  2. Créez un sac de mots pour les données textuelles prétraitées à l'aide de l'approche de vectorisation par comptage ou de vectorisation TF-IDF.
  3. Entraînez un modèle de classification approprié sur les données traitées pour la classification des sentiments.

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.

Utilisation de modèles basés sur LSTM

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 :

  1. Prétraiter le texte des données de formation (le prétraitement du texte implique la normalisation, la tokenisation, la suppression des mots vides et la radicalisation/lemmatisation.)
  2. Importez Tokenizer depuis Keras.preprocessing.text et créez son objet. Ajustez le tokenizer sur l'ensemble du texte de formation (afin que le Tokenizer soit formé sur le vocabulaire des données de formation). Générez des incorporations de texte à l'aide de la méthode texts_to_sequence() du Tokenizer et stockez-les après les avoir remplies à une longueur égale. (Les incorporations sont des représentations numériques/vectorisées du texte. Comme nous ne pouvons pas alimenter directement notre modèle avec les données textuelles, nous devons d'abord les convertir en incorporations)
  3. Après avoir généré les plongements, nous sommes prêts à construire le modèle. Nous construisons le modèle à l'aide de TensorFlow - ajoutez-lui Input, LSTM et des couches denses. Ajoutez des abandons et réglez les hyperparamètres pour obtenir un score de précision décent. Généralement, nous avons tendance à utiliser les fonctions d'activation ReLU ou LeakyReLU dans les couches internes des modèles LSTM car cela évite le problème du gradient de fuite. Au niveau de la couche de sortie, nous utilisons la fonction d'activation Softmax ou Sigmoid.

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)

Utilisation de modèles basés sur des transformateurs

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}]

Conclusion

À 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/

#python 

Diego  Elizondo

Diego Elizondo

1657272720

5 Formas De Realizar análisis De Sentimiento En Python

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.

¿Qué es el análisis de sentimiento?

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:

definición de análisis de sentimiento

Obtener información y tomar decisiones con el análisis de sentimientos

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)

análisis de los sentimientos

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.

Casos de uso de análisis de opinión

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.

  1. Monitoreo de redes sociales para la gestión de marcas: las marcas pueden usar el análisis de sentimientos para medir la perspectiva pública de su marca. Por ejemplo, una empresa puede recopilar todos los Tweets con la mención o etiqueta de la empresa y realizar un análisis de opinión para conocer la perspectiva pública de la empresa.
  2. Análisis de productos/servicios: las marcas/organizaciones pueden realizar análisis de opinión sobre las reseñas de los clientes para ver qué tan bien se está desempeñando un producto o servicio en el mercado y tomar decisiones futuras en consecuencia.
  3. Predicción del precio de las acciones: predecir si las acciones de una empresa subirán o bajarán es crucial para los inversores. Se puede determinar lo mismo realizando un análisis de sentimiento en los titulares de noticias de los artículos que contienen el nombre de la empresa. Si los titulares de noticias relacionados con una organización en particular tienen un sentimiento positivo, los precios de sus acciones deberían subir y viceversa.

Formas de realizar análisis de sentimiento en Python

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í:

  1. Usar blob de texto
  2. usando vader
  3. Uso de modelos basados ​​en vectorización de bolsa de palabras
  4. Uso de modelos basados ​​en LSTM
  5. Uso de modelos basados ​​en transformadores

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.

Usar blob de texto

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

Usando VADER

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.

Uso de modelos basados ​​en vectorización de bolsa de palabras

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:

  1. Preprocesar el texto de los datos de entrenamiento (el preprocesamiento del texto implica la normalización, la tokenización, la eliminación de palabras vacías y la derivación/lematización).
  2. Cree una bolsa de palabras para los datos de texto preprocesados ​​utilizando el método de vectorización de conteo o vectorización TF-IDF.
  3. Entrene un modelo de clasificación adecuado en los datos procesados ​​para la clasificación de sentimientos.

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.

Uso de modelos basados ​​en LSTM

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:

  1. Preprocesar el texto de los datos de entrenamiento (el preprocesamiento del texto implica la normalización, la tokenización, la eliminación de palabras vacías y la derivación/lematización).
  2. Importe Tokenizer desde Keras.preprocessing.text y cree su objeto. Ajuste el tokenizador en todo el texto de entrenamiento (para que el tokenizador se entrene en el vocabulario de datos de entrenamiento). Incrustaciones de texto generadas usando el método texts_to_sequence() del Tokenizer y almacenarlas después de rellenarlas con la misma longitud. (Las incrustaciones son representaciones numéricas/vectorizadas de texto. Dado que no podemos alimentar nuestro modelo con los datos de texto directamente, primero debemos convertirlos en incrustaciones)
  3. Después de haber generado las incrustaciones, estamos listos para construir el modelo. Construimos el modelo usando TensorFlow: le agregamos Input, LSTM y capas densas. Agregue abandonos y ajuste los hiperparámetros para obtener una puntuación de precisión decente. En general, tendemos a usar las funciones de activación ReLU o LeakyReLU en las capas internas de los modelos LSTM, ya que evita el problema del gradiente de fuga. En la capa de salida, usamos la función de activación Softmax o Sigmoid.

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)

Uso de modelos basados ​​en transformadores

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}]

Conclusión

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/

#python