bert-base-turkish-sentiment-cased 项目介绍
bert-base-turkish-sentiment-cased 项目是一个专门用于土耳其语情感分析的模型。此模型基于 BERTurk,专注于处理土耳其语言的情感分析任务。项目地址为 Hugging Face。
项目背景
情感分析是自然语言处理中重要的任务之一,用于判断文本中的情感倾向。bert-base-turkish-sentiment-cased 模型专为土耳其语设计,帮助用户理解和分析该语言中的情绪表达。
数据集
此模型所使用的数据集来源于多项研究,并进行了合并:
- 研究 [2]: 该研究收集了电影和产品评论,包括书籍、DVD、电子产品和厨房用品。电影评论数据来自 Beyazperde 网站,包含5331条积极评论和5331条消极评论。评论以0至5的评分进行标记,评分大于等于4为正面,小于等于2为负面。此外,在一个在线零售商网站上收集了土耳其产品评论,每种产品类别都有700条正面和700条负面评论。
- 研究 [3]: 该研究收集了推特数据集,提出了一种自动分类微博信息情感的新方法,利用强大的特征表示和融合技术。
合并后的数据集规模如下:
数据集类型 | 大小 |
---|---|
dev.tsv | 8000 |
test.tsv | 8262 |
train.tsv | 32000 |
总计 | 48290 |
模型训练
模型的训练过程采用了 BERT 的变体之一,具体的训练设置如下:使用 bert-base-turkish-uncased
模型,对应的任务名称为 "SST-2"。训练分批批量大小为32,学习率设为2e-5,最大序列长度为128,训练周期为3轮。
训练结果
模型在测试集上的准确率达到了 95.4%,表现优异。
代码示例
以下是一个简单的代码示例,展示如何使用 bert-base-turkish-sentiment-cased 模型进行情感分析:
from transformers import AutoModelForSequenceClassification, AutoTokenizer, pipeline
model = AutoModelForSequenceClassification.from_pretrained("savasy/bert-base-turkish-sentiment-cased")
tokenizer = AutoTokenizer.from_pretrained("savasy/bert-base-turkish-sentiment-cased")
sa = pipeline("sentiment-analysis", tokenizer=tokenizer, model=model)
# 示例:分析正面评论
p = sa("bu telefon modelleri çok kaliteli , her parçası çok özel bence")
print(p)
# 示例:分析负面评论
p = sa("Film çok kötü ve çok sahteydi")
print(p)
在代码中,通过实例化模型和分词器,用户可以轻松地对土耳其语评论进行分析,并判断其情感倾向。
测试方法
如果用户手头有大量含有评论和标签(0或1)的数据文件,可以使用以下代码进行情感分析测试:
from transformers import AutoModelForSequenceClassification, AutoTokenizer, pipeline
model = AutoModelForSequenceClassification.from_pretrained("savasy/bert-base-turkish-sentiment-cased")
tokenizer = AutoTokenizer.from_pretrained("savasy/bert-base-turkish-sentiment-cased")
sa = pipeline("sentiment-analysis", tokenizer=tokenizer, model=model)
input_file = "/path/to/your/file/yourfile.tsv"
i, crr = 0, 0
for line in open(input_file):
lines = line.strip().split("\t")
if len(lines) == 2:
i = i + 1
if i%100 == 0:
print(i)
pred = sa(lines[0])
pred = pred[0]["label"].split("_")[1]
if pred == lines[1]:
crr = crr + 1
print(crr, i, crr/i)
该代码不仅简单易用,还能快速处理大规模数据集,适合需要批量分析的场合。