Fake News Classifier in Urdu

Description

This model determines if news articles in Urdu are real or fake.

Predicted Entities

real, fake

Live Demo Open in Colab Download Copy S3 URI

How to use

document_assembler = DocumentAssembler() \
.setInputCol("news") \
.setOutputCol("document")

tokenizer = Tokenizer() \
.setInputCols(["document"]) \
.setOutputCol("token")

normalizer = Normalizer() \
.setInputCols(["token"]) \
.setOutputCol("normalized")

lemma = LemmatizerModel.pretrained("lemma", "ur") \
.setInputCols(["normalized"]) \
.setOutputCol("lemma")

embeddings = WordEmbeddingsModel.pretrained("urduvec_140M_300d", "ur") \
.setInputCols("document", "lemma") \
.setOutputCol("embeddings")

embeddingsSentence = SentenceEmbeddings() \
.setInputCols(["document", "embeddings"]) \
.setOutputCol("sentence_embeddings") \
.setPoolingStrategy("AVERAGE")

classifierdl = ClassifierDLModel.pretrained("classifierdl_urduvec_fakenews", "ur") \
.setInputCols(["document", "sentence_embeddings"]) \
.setOutputCol("class")

urdu_fake_pipeline = Pipeline(stages=[document_assembler, tokenizer, normalizer, lemma, embeddings, embeddingsSentence, classifierdl])

light_pipeline = LightPipeline(urdu_fake_pipeline.fit(spark.createDataFrame([['']]).toDF("news")))

result = light_pipeline.annotate("ایک امریکی تھنک ٹینک نے خبردار کیا ہے کہ جیسے جیسے چین مصنوعی ذہانت (آرٹیفیشل انٹیلی جنس) کے میدان میں ترقی کر رہا ہے، دنیا کا اقتصادی اور عسکری توازن تبدیل ہو سکتا ہے۔")
result["class"]
val document_assembler = DocumentAssembler()
.setInputCol("text")
.setOutputCol("document")

val tokenizer = Tokenizer()
.setInputCols(Array("document"))
.setOutputCol("token")

val normalizer = Normalizer()
.setInputCols(Array("token"))
.setOutputCol("normalized")

val lemma = LemmatizerModel.pretrained("lemma", "ur") 
.setInputCols(Array("normalized")) 
.setOutputCol("lemma")

val embeddings = WordEmbeddingsModel.pretrained("urduvec_140M_300d", "ur")
.setInputCols(Array("document", "lemma"))
.setOutputCol("embeddings")

val embeddingsSentence = SentenceEmbeddings()
.setInputCols(Array("document", "embeddings"))
.setOutputCol("sentence_embeddings")
.setPoolingStrategy("AVERAGE")

val classifier = ClassifierDLModel.pretrained("classifierdl_urduvec_fakenews", "ur")
.setInputCols(Array("document", "sentence_embeddings"))
.setOutputCol("class")

val urdu_fake_pipeline = new Pipeline().setStages(Array(document_assembler, tokenizer, normalizer, lemma, embeddings, embeddingsSentence, classifier))

val light_pipeline = LightPipeline(urdu_fake_pipeline.fit(spark.createDataFrame([['']]).toDF("text")))

val result = light_pipeline.annotate("ایک امریکی تھنک ٹینک نے خبردار کیا ہے کہ جیسے جیسے چین مصنوعی ذہانت (آرٹیفیشل انٹیلی جنس) کے میدان میں ترقی کر رہا ہے، دنیا کا اقتصادی اور عسکری توازن تبدیل ہو سکتا ہے۔")
import nlu
nlu.load("ur.classify.fakenews").predict("""ایک امریکی تھنک ٹینک نے خبردار کیا ہے کہ جیسے جیسے چین مصنوعی ذہانت (آرٹیفیشل انٹیلی جنس) کے میدان میں ترقی کر رہا ہے، دنیا کا اقتصادی اور عسکری توازن تبدیل ہو سکتا ہے۔""")

Results

['real']

Model Information

Model Name: classifierdl_urduvec_fakenews
Compatibility: Spark NLP 3.3.1+
License: Open Source
Edition: Official
Input Labels: [sentence_embeddings]
Output Labels: [class]
Language: ur
Size: 21.5 MB

Data Source

Combination of multiple open source data sets.

Benchmarking

label  precision    recall  f1-score   support
fake       0.77      0.70      0.73       415
real       0.71      0.77      0.74       387
accuracy                           0.73       802
macro-avg       0.74      0.74      0.73       802
weighted-avg       0.74      0.73      0.73       802