📜  印地语文本的情感分析 - Python

📅  最后修改于: 2022-05-13 01:55:29.471000             🧑  作者: Mango

印地语文本的情感分析 - Python

印度语的情感分析:

本文展示了如何使用库 VADER 对印度语言“印地语”进行情感分析。

情绪分析是一种衡量文本或数据的积极、消极或中性的指标。它在文本数据上执行,以帮助企业监控客户反馈中的品牌和产品情绪,并了解客户需求。这是一种分析海量数据的省时、经济的解决方案。 Python为数据的情感分析提供了强大的支持。可用于此目的的库中很少有 NLTK、TextBlob 和 VADER。

为了对印地语等印度语言进行情感分析,我们需要执行以下任务。

  1. 阅读印地语文本文件。
  2. 将印地语的句子翻译成英语的句子,因为Python库确实支持英语的文本分析。 (即使您将印地语句子赋予此类函数,如果句子以错误的方式计算,“复合分数”是情绪的度量。因此,在计算此度量之前,将其转换为英语中的等效句子是合适的。)谷歌翻译可以帮助完成这项任务。
  3. 使用上述任何库对翻译文本进行情感分析。

需要执行以下步骤。

第 1 步:导入必要的库/包。

Python3
# codecs provides access to the internal Python codec registry
import codecs
 
# This is to translate the text from Hindi to English
from deep_translator import GoogleTranslator
 
# This is to analyse the sentiment of text
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer


Python3
# Read the hindi text into 'sentences'
with codecs.open('SampleHindiText.txt', encoding='utf-8') as f:
    sentences = f.readlines()


Python3
for sentence in sentences:
    translated_text = GoogleTranslator(source='auto', target='en').translate(sentence)
    #print(translated_text)
    analyzer = SentimentIntensityAnalyzer()
    sentiment_dict = analyzer.polarity_scores(translated_text)
     
    print("\nTranslated Sentence=",translated_text, "\nDictionary=",sentiment_dict)
    if sentiment_dict['compound'] >= 0.05 :
            print("It is a Positive Sentence")
              
    elif sentiment_dict['compound'] <= - 0.05 :
            print("It is a Negative Sentence")     
    else :   
           print("It is a Neutral Sentence")


第二步:读取文件数据。 “编解码器”库提供对内部Python编解码器注册表的访问。大多数标准编解码器都是文本编码,将文本编码为字节。自定义编解码器可以在任意类型之间进行编码和解码

Python3

# Read the hindi text into 'sentences'
with codecs.open('SampleHindiText.txt', encoding='utf-8') as f:
    sentences = f.readlines()

步骤 3:将读到的句子翻译成英文,以便 VADER 库可以处理翻译后的文本以进行情感分析。 polar_scores() 返回文本的情感字典,其中包括“复合”分数,该分数讲述了句子的情感,如下所示。

  • 积极情绪:复合得分 >= 0.05
  • 中性情绪:复合得分 > -0.05 且复合得分 < 0.05
  • 负面情绪:复合分数 <= -0.05

Python3

for sentence in sentences:
    translated_text = GoogleTranslator(source='auto', target='en').translate(sentence)
    #print(translated_text)
    analyzer = SentimentIntensityAnalyzer()
    sentiment_dict = analyzer.polarity_scores(translated_text)
     
    print("\nTranslated Sentence=",translated_text, "\nDictionary=",sentiment_dict)
    if sentiment_dict['compound'] >= 0.05 :
            print("It is a Positive Sentence")
              
    elif sentiment_dict['compound'] <= - 0.05 :
            print("It is a Negative Sentence")     
    else :   
           print("It is a Neutral Sentence")

源文件“SampleHindiText.txt”如下所示。

गोवा की यात्रा बहुत अच्छी रही।
समुद्र तट बहुत गर्म थे।
मुझे समुद्र तट पर खेलने में बहुत मजा आया।
मेरी बेटी बहुत गुस्से में थी।

• 代码的输出如下所示。

Translated Sentence= The trip to Goa was great. 
Dictionary= {'neg': 0.0, 'neu': 0.549, 'pos': 0.451, 'compound': 0.6249}
It is a Positive Sentence

Translated Sentence= The beaches were very hot. 
Dictionary= {'neg': 0.0, 'neu': 1.0, 'pos': 0.0, 'compound': 0.0}
It is a Neutral Sentence

Translated Sentence= I really enjoyed playing on the beach. 
Dictionary= {'neg': 0.0, 'neu': 0.469, 'pos': 0.531, 'compound': 0.688}
It is a Positive Sentence

Translated Sentence= My daughter was very angry. 
Dictionary= {'neg': 0.473, 'neu': 0.527, 'pos': 0.0, 'compound': -0.5563}
It is a Negative Sentence