Description
This model identifies the sentiments (neutral, positive or negative) in Spanish texts.
Predicted Entities
NEUTRAL, POSITIVE, NEGATIVE
How to use
document = DocumentAssembler()\
    .setInputCol("text")\
    .setOutputCol("document")
embeddings = BertSentenceEmbeddings\
    .pretrained('labse', 'xx') \
    .setInputCols(["document"])\
    .setOutputCol("sentence_embeddings")
sentimentClassifier = ClassifierDLModel.pretrained("classifierdl_bert_sentiment", "es") \
  .setInputCols(["document", "sentence_embeddings"]) \
  .setOutputCol("class")
fr_sentiment_pipeline = Pipeline(stages=[document, embeddings, sentimentClassifier])
light_pipeline = LightPipeline(fr_sentiment_pipeline.fit(spark.createDataFrame([['']]).toDF("text")))
result1 = light_pipeline.annotate("Estoy seguro de que esta vez pasará la entrevista.")
result2 = light_pipeline.annotate("Soy una persona que intenta desayunar todas las mañanas sin falta.")
result3 = light_pipeline.annotate("No estoy seguro de si mi salario mensual es suficiente para vivir.")
print(result1["class"], result2["class"], sep = "\n")
val document = DocumentAssembler()
    .setInputCol("text")
    .setOutputCol("document")
val embeddings = BertSentenceEmbeddings
    .pretrained("labse", "xx")
    .setInputCols(Array("document"))
    .setOutputCol("sentence_embeddings")
val sentimentClassifier = ClassifierDLModel.pretrained("classifierdl_bert_sentiment", "es")
  .setInputCols(Array("document", "sentence_embeddings"))
  .setOutputCol("class")
val fr_sentiment_pipeline = new Pipeline().setStages(Array(document, embeddings, sentimentClassifier))
val light_pipeline = LightPipeline(fr_sentiment_pipeline.fit(spark.createDataFrame([['']]).toDF("text")))
val result1 = light_pipeline.annotate("Estoy seguro de que esta vez pasará la entrevista.")
val result2 = light_pipeline.annotate("Soy una persona que intenta desayunar todas las mañanas sin falta.")
val result3 = light_pipeline.annotate("No estoy seguro de si mi salario mensual es suficiente para vivir.")
import nlu
nlu.load("es.classify.sentiment.").predict("""No estoy seguro de si mi salario mensual es suficiente para vivir.""")
Results
['POSITIVE']
['NEUTRAL']
['NEGATIVE']
Model Information
| Model Name: | classifierdl_bert_sentiment | 
| Compatibility: | Spark NLP 3.3.0+ | 
| License: | Open Source | 
| Edition: | Official | 
| Input Labels: | [sentence_embeddings] | 
| Output Labels: | [class] | 
| Language: | es | 
Data Source
https://github.com/charlesmalafosse/open-dataset-for-sentiment-analysis
Benchmarking
              precision    recall  f1-score   support
    NEGATIVE       0.73      0.81      0.77      1837
     NEUTRAL       0.80      0.71      0.75      2222
    POSITIVE       0.80      0.81      0.80      2187
    accuracy                           0.78      6246
   macro avg       0.77      0.78      0.77      6246
weighted avg       0.78      0.78      0.77      6246