如何使用Python进行中文情感分析
发布时间:2024-01-08 07:31:44
中文情感分析是一种通过对中文文本进行处理和分析,来判断文本中所表达情感极性(如正面、负面、中性)的技术。Python中有许多工具和库可以实现中文情感分析,下面将介绍两种常用方法和相关的代码示例。
一、基于词典的中文情感分析方法:
基于词典的中文情感分析方法是一种常见且简单的情感分析方法,它将文本中的词语与预先定义好的情感词典进行匹配,然后计算文本中的积极情感词和消极情感词的数量来判断情感倾向。常用的中文情感词典有NTUSD、Loughran和中兴情感词典等。
以下是一个使用Jieba分词和NTUSD情感词典的中文情感分析示例代码:
import jieba
import pandas as pd
# 加载情感词典
ntusd = pd.read_csv('NTUSD/NTUSD_simplified.csv')
# 对文本进行分词和清洗
def preprocess(text):
seg_list = jieba.cut(text)
seg_list = [word for word in seg_list if word.strip()]
return seg_list
# 计算情感得分
def calculate_sentiment(text):
seg_list = preprocess(text)
positive = 0
negative = 0
for word in seg_list:
if word in ntusd['term'].values:
score = ntusd[ntusd['term'] == word]['score'].values[0]
if score > 0:
positive += score
else:
negative += score
return positive, negative
# 测试情感分析
text = '这部电影太好看了,情节紧凑,演员演技出色!'
positive_score, negative_score = calculate_sentiment(text)
if positive_score > negative_score:
print('正面情感')
elif positive_score < negative_score:
print('负面情感')
else:
print('中性情感')
以上代码使用Jieba分词对输入文本进行分词和清洗,然后将分词结果与NTUSD情感词典进行匹配,计算积极情感词和消极情感词的得分。最后根据得分判断情感极性。
二、基于机器学习的中文情感分析方法:
基于机器学习的中文情感分析方法通过训练模型来自动学习文本的情感极性。常用的机器学习算法包括朴素贝叶斯、支持向量机、随机森林等。
以下是一个使用sklearn库和基于朴素贝叶斯的中文情感分析示例代码:
import jieba
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
# 加载训练数据
train_data = pd.read_csv('train_data.csv')
X_train = train_data['text']
y_train = train_data['sentiment']
# 对训练数据进行分词和清洗
def preprocess(text):
seg_list = jieba.cut(text)
seg_list = [word for word in seg_list if word.strip()]
return ' '.join(seg_list)
X_train = X_train.apply(preprocess)
# 特征提取
vectorizer = TfidfVectorizer()
X_train = vectorizer.fit_transform(X_train)
# 训练模型
clf = MultinomialNB()
clf.fit(X_train, y_train)
# 预测情感
text = '这部电影太好看了,情节紧凑,演员演技出色!'
text = preprocess(text)
X_test = vectorizer.transform([text])
prediction = clf.predict(X_test)
if prediction[0] == 1:
print('正面情感')
else:
print('负面情感')
以上代码使用sklearn库进行特征提取(TF-IDF)和机器学习(朴素贝叶斯分类器),将文本转换为特征向量并训练模型。然后使用训练好的模型对输入文本进行预测,得到情感极性。
总结:以上介绍了两种常用的中文情感分析方法和相关的Python代码示例。基于词典的方法简单且易于理解,但对于一些特殊的语境和新词表达的情感往往无法准确识别;而基于机器学习的方法可以通过大量的训练数据学习到更复杂的语言特征和上下文关系,因此通常具有更高的准确度。根据实际需求和情感分析的复杂程度可以选择适合的方法进行分析。
