📅  最后修改于: 2023-12-03 15:07:21.705000             🧑  作者: Mango
在自然语言处理中,情感分析是一项重要的任务,它旨在自动识别文本中的情感倾向。在本文中,我们将介绍 Python 中如何进行印地语(Hindi)文本的情感分析。
在 Python 中,我们可以使用多种自然语言处理工具,如 NLTK、spaCy、AllenNLP 等。然而,在处理印地语文本时,我们需要使用支持印地语的工具。以下是一些常用的印地语自然语言处理工具:
在本文中,我们将使用 Indic NLP Library 进行印地语文本的情感分析,首先需要安装该工具:
!pip install indic-nlp-library
在进行印地语情感分析之前,我们需要准备训练和测试数据。在本文中,我们将使用 IMDB Hindi Movie Reviews Dataset。该数据集包含了 5000 条印地语电影评论,每个评论都标注有其情感分类(正面或负面)。通过使用此数据集,我们将训练模型,以便在新数据上对印地语文本进行情感分析。
在具体进行情感分析之前,我们需要进行数据处理。首先,我们需要将数据集加载到 Pandas DataFrame 中:
import pandas as pd
train_df = pd.read_csv('train.csv')
test_df = pd.read_csv('test.csv')
然后,我们可以查看训练和测试数据的前几行:
train_df.head()
test_df.head()
接下来,我们需要对文本进行预处理,包括:
以下是一个示例函数,可用于对评论文本进行处理:
import re
from indicnlp.tokenize import indic_tokenize
from indicnlp.stopwords import stopwords
def preprocess(text):
# 移除特殊字符和数字
text = re.sub(r'[^\w\s]', '', text)
text = re.sub(r'\d+', '', text)
# 转换为小写字母
text = text.lower()
# 分词
tokens = indic_tokenize.trivial_tokenize(text)
# 移除停用词
tokens = [token for token in tokens if token not in stopwords]
return tokens
在完成数据处理之后,我们可以开始进行情感分析。在 Indic NLP Library 中,我们可以使用 SVM 分类器进行文本分类。以下是一个示例函数,可用于训练和测试分类器:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.svm import SVC
def train_and_evaluate(train_df, test_df):
# 处理训练数据
X_train = [' '.join(preprocess(comment)) for comment in train_df['text'].tolist()]
y_train = train_df['label'].tolist()
# 处理测试数据
X_test = [' '.join(preprocess(comment)) for comment in test_df['text'].tolist()]
y_test = test_df['label'].tolist()
# 特征提取
vectorizer = TfidfVectorizer()
X_train = vectorizer.fit_transform(X_train)
X_test = vectorizer.transform(X_test)
# 训练和测试分类器
clf = SVC(kernel='linear')
clf.fit(X_train, y_train)
score = clf.score(X_test, y_test)
return score
在完成训练和测试后,我们可以计算分类器的精度得分。在本文中,我们将简单地使用准确性作为分类器的性能指标。以下是一个示例代码段,可用于计算分类器的准确性:
score = train_and_evaluate(train_df, test_df)
print(f'Accuracy: {score:.2f}')
在本文中,我们介绍了如何使用 Python 中的 Indic NLP Library,对印地语文本进行情感分析。这里我们以 IMDB Hindi Movie Reviews Dataset 为例,训练了一个简单的 SVM 分类器,以在新数据上执行情感分析。我们希望本文对您有所启发,以在自然语言处理领域中进行印地语情感分析。