🚀 INTERPRESS新闻分类
本项目聚焦于INTERPRESS新闻分类,借助特定数据集训练模型,实现对新闻的精准分类,为新闻信息的高效处理提供了有力支持。
🚀 快速开始
本项目提供了使用Torch和Tensorflow进行新闻分类预测的方法,你可以根据自己的需求选择合适的方式。
✨ 主要特性
- 真实数据集:使用从INTERPRESS下载的真实世界数据,经过筛选后使用了108K条数据进行模型训练。
- 高准确率:模型在训练数据和验证数据上的准确率达到了97%。
- 多框架支持:支持Torch和Tensorflow两种深度学习框架进行使用。
📦 安装指南
Torch
pip install transformers or pip install transformers==4.3.3
Tensorflow
pip install transformers or pip install transformers==4.3.3
💻 使用示例
Torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
tokenizer = AutoTokenizer.from_pretrained("serdarakyol/interpress-turkish-news-classification")
model = AutoModelForSequenceClassification.from_pretrained("serdarakyol/interpress-turkish-news-classification")
import torch
if torch.cuda.is_available():
device = torch.device("cuda")
model = model.cuda()
print('There are %d GPU(s) available.' % torch.cuda.device_count())
print('GPU name is:', torch.cuda.get_device_name(0))
else:
print('No GPU available, using the CPU instead.')
device = torch.device("cpu")
import numpy as np
def prediction(news):
news=[news]
indices=tokenizer.batch_encode_plus(
news,
max_length=512,
add_special_tokens=True,
return_attention_mask=True,
padding='max_length',
truncation=True,
return_tensors='pt')
inputs = indices["input_ids"].clone().detach().to(device)
masks = indices["attention_mask"].clone().detach().to(device)
with torch.no_grad():
output = model(inputs, token_type_ids=None,attention_mask=masks)
logits = output[0]
logits = logits.detach().cpu().numpy()
pred = np.argmax(logits,axis=1)[0]
return pred
news = r"ABD'den Prens Selman'a yaptırım yok Beyaz Saray Sözcüsü Psaki, Muhammed bin Selman'a yaptırım uygulamamanın \"doğru karar\" olduğunu savundu. Psaki, \"Tarihimizde, Demokrat ve Cumhuriyetçi başkanların yönetimlerinde diplomatik ilişki içinde olduğumuz ülkelerin liderlerine yönelik yaptırım getirilmemiştir\" dedi."
labels = {
0 : "Culture-Art",
1 : "Economy",
2 : "Politics",
3 : "Education",
4 : "World",
5 : "Sport",
6 : "Technology",
7 : "Magazine",
8 : "Health",
9 : "Agenda"
}
pred = prediction(news)
print(labels[pred])
Tensorflow
import tensorflow as tf
from transformers import BertTokenizer, TFBertForSequenceClassification
import numpy as np
tokenizer = BertTokenizer.from_pretrained('serdarakyol/interpress-turkish-news-classification')
model = TFBertForSequenceClassification.from_pretrained("serdarakyol/interpress-turkish-news-classification")
news = r"ABD'den Prens Selman'a yaptırım yok Beyaz Saray Sözcüsü Psaki, Muhammed bin Selman'a yaptırım uygulamamanın \"doğru karar\" olduğunu savundu. Psaki, \"Tarihimizde, Demokrat ve Cumhuriyetçi başkanların yönetimlerinde diplomatik ilişki içinde olduğumuz ülkelerin liderlerine yönelik yaptırım getirilmemiştir\" dedi."
inputs = tokenizer(news, return_tensors="tf")
inputs["labels"] = tf.reshape(tf.constant(1), (-1, 1))
outputs = model(inputs)
loss = outputs.loss
logits = outputs.logits
pred = np.argmax(logits,axis=1)[0]
print(labels[pred])
📚 详细文档
数据集
数据集从INTERPRESS下载,属于真实世界数据。实际上有273K条数据,但为了本模型的训练,筛选后使用了108K条数据。有关数据集的更多信息,请访问此链接。
模型
模型在训练数据和验证数据上的准确率为97%。数据按80%训练和20%验证的比例进行划分。结果如下:
分类报告

混淆矩阵

📄 许可证
文档中未提及许可证相关信息。
感谢 @yavuzkomecoglu 的贡献。
如果您有任何问题,请随时与我联系:
