印地语文本的情感分析 - Python
印度语的情感分析:
本文展示了如何使用库 VADER 对印度语言“印地语”进行情感分析。
情绪分析是一种衡量文本或数据的积极、消极或中性的指标。它在文本数据上执行,以帮助企业监控客户反馈中的品牌和产品情绪,并了解客户需求。这是一种分析海量数据的省时、经济的解决方案。 Python为数据的情感分析提供了强大的支持。可用于此目的的库中很少有 NLTK、TextBlob 和 VADER。
为了对印地语等印度语言进行情感分析,我们需要执行以下任务。
- 阅读印地语文本文件。
- 将印地语的句子翻译成英语的句子,因为Python库确实支持英语的文本分析。 (即使您将印地语句子赋予此类函数,如果句子以错误的方式计算,“复合分数”是情绪的度量。因此,在计算此度量之前,将其转换为英语中的等效句子是合适的。)谷歌翻译可以帮助完成这项任务。
- 使用上述任何库对翻译文本进行情感分析。
需要执行以下步骤。
第 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