
# モデル概要
このモデルは sonoisa/sentence-luke-japanese-base-lite を、[日本語のSNS上のコメントの攻撃性推定用データセット](https://huggingface.co/datasets/TomokiFujihara/japanese_offensiveness_estimation_dataset)を用いて Fine-tuningしたものです。
このモデルを用いた[デモ](https://huggingface.co/spaces/TomokiFujihara/japanese_offensiveness_estimation )を公開しています。

# Fine-tuning条件
- エポック数: 27エポック
- バッチサイズ: 16
- 最大トークン長: 256
- 学習率スケジューラ: transformers.get_linear_schedule_with_warmup
- ピーク学習率: 2e-5
- 最適化手法: Adam
- Dropout率: 0.1
- 損失関数: MSE Loss
- Re-initialize: 出力層から近い Transformer Encoder 1層

# 分類性能
| 評価指標 | スコア |
| ----- | ----- |
| F値_NOT | 61.8 % |
| F値_GRY | 55.5 % |
| F値_OFF | 71.3 % |
| マクロ平均F値 | 62.9 % |
| 正解率 | 63.8 % |

# 使い方
```python
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import numpy as np

tokenizer = AutoTokenizer.from_pretrained("studio-ousia/luke-japanese-base-lite")
model = AutoModelForSequenceClassification.from_pretrained("TomokiFujihara/luke-japanese-base-lite-offensiveness-estimation", trust_remote_code=True)


inputs = tokenizer.encode_plus(text, return_tensors='pt')
outputs = model(inputs['input_ids'], inputs['attention_mask']).detach().numpy()[0][:3]

minimum = np.min(outputs)
if minimum < 0:
  outputs = outputs - minimum
score = outputs / np.sum(outputs)

print(f'攻撃的でない発言: {score[0]:.1%},\nグレーゾーンの発言: {score[1]:.1%},\n攻撃的な発言: {score[2]:.1%}')

```

# 連絡先
E-mail: tomoki.fujihara.p3@dc.tohoku.ac.jp
{"license": "apache-2.0"}
transformers safetensors offensiveness_estimation text-classification custom_code license:apache-2.0 autotrain_compatible has_space region:us