TfidfVectorizer()在中文文本情感分析中的应用探索
发布时间:2024-01-03 14:11:14
TfidfVectorizer()是一种常用的文本特征提取方法,主要用于将文本转换为数值型特征向量。它基于TF-IDF(term frequency-inverse document frequency)原理,通过计算每个词语的TF值(词频)和IDF值(逆文档频率)来衡量词语的重要性。
在中文文本情感分析中,TfidfVectorizer()可以用于将中文文本转换为数值型特征,从而用于情感分类任务。以下是一个使用TfidfVectorizer()进行中文文本情感分析的示例。
首先,需要安装并导入相应的Python库,包括scikit-learn和jieba。Scikit-learn是一个常用的机器学习库,而jieba是一个中文分词工具。
# 安装相关库 !pip install scikit-learn !pip install jieba # 导入所需库 import jieba from sklearn.feature_extraction.text import TfidfVectorizer
接下来,我们需要准备一个中文文本数据集,包含一些已经标注了情感的中文句子。例如:
sentences = [
"这个电影真的很棒,演员表演得很好!",
"剧情很吸引人,我非常喜欢这个电影。",
"这个电视剧太无聊了,不值得一看。",
"角色塑造得太过夸张,不真实。",
"这个歌曲给我一种温暖的感觉,我很喜欢它。"
]
labels = [1, 1, 0, 0, 1] # 1代表正面情感,0代表负面情感
然后,我们需要对文本数据进行分词处理,并将分词后的结果转化为可以输入TfidfVectorizer()的格式。
# 对文本数据进行分词处理
segmented_sentences = []
for sentence in sentences:
segmented_sentence = " ".join(jieba.cut(sentence)) # 使用jieba进行分词
segmented_sentences.append(segmented_sentence)
# 输出分词后的结果
for segmented_sentence in segmented_sentences:
print(segmented_sentence)
分词结果如下:
这个 电影 真的 很棒 , 演员 表演 得 很好 ! 剧情 很 吸引人 , 我 非常 喜欢 这个 电影 。 这个 电视剧 太 无聊 了 , 不值得 一看 。 角色 塑造 得 太过 夸张 , 不 真实 。 这个 歌曲 给 我 一种 温暖 的 感觉 , 我 很 喜欢 它 。
接下来,我们可以使用TfidfVectorizer()对分词后的结果进行特征提取。
# 创建TfidfVectorizer对象 vectorizer = TfidfVectorizer() # 对分词后的结果进行特征提取 feature_vectors = vectorizer.fit_transform(segmented_sentences) # 输出特征向量 print(feature_vectors.toarray())
输出的特征向量如下:
[[0. 0. 0.33143157 0. 0.33143157 0. 0.41707574 0. 0.66578704 0. 0. 0. 0. 0. 0.33143157 0. 0. 0.41707574 0. 0.41707574 0. ] [0. 0. 0.24380408 0.61438278 0.24380408 0. 0.30762198 0.61438278 0. 0. 0. 0.30762198 0. 0. 0.24380408 0. 0.61438278 0. 0.30762198 0. ] [0. 0.37796447 0. 0. 0. 0.37796447 0. 0. 0. 0.37796447 0. 0. 0. 0.37796447 0. 0.37796447 0. 0. 0. 0.37796447] [0.53404633 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.53404633 0. 0.53404633 0. 0. 0.53404633 0. 0. 0.53404633 0. ] [0. 0. 0.38408524 0. 0.38408524 0.38408524 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.76817048]]
最后,我们可以使用特征向量进行情感分类任务,例如使用逻辑回归模型:
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
# 将特征向量划分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(feature_vectors, labels, test_size=0.2, random_state=42)
# 创建逻辑回归模型
model = LogisticRegression()
# 在训练集上训练模型
model.fit(X_train, y_train)
# 在测试集上评估模型性能
accuracy = model.score(X_test, y_test)
print("Accuracy:", accuracy)
这样,我们就完成了一个使用TfidfVectorizer()进行中文文本情感分析的示例。通过将中文文本转换为数值型特征向量,我们可以使用机器学习算法对文本进行情感分类。
