Edit model card

Facemark Detection

This model classifies given text into facemark(1) or not(0).

This model is a fine-tuned version of cl-tohoku/bert-base-japanese-whole-word-masking on an original facemark dataset. It achieves the following results on the evaluation set:

  • Loss: 0.1301
  • Accuracy: 0.9896

Model description

This model classifies given text into facemark(1) or not(0).

Intended uses & limitations

Extract a facemark-prone potion of text and apply the text to the model. Extraction of a facemark can be done by regex but usually includes many non-facemarks.

For example, I used the following regex pattern to extract a facemark-prone text by perl.

$input_text = "facemark prne text"

my $text          = '[0-9A-Za-zぁ-ヶ一-龠]';
my $non_text      = '[^0-9A-Za-zぁ-ヶ一-龠]';
my $allow_text    = '[ovっつ゜ニノ三二]';
my $hw_kana       = '[ヲ-゚]';
my $open_branket  = '[\(∩꒰(]';
my $close_branket = '[\)∩꒱)]';
my $around_face   = '(?:' . $non_text . '|' . $allow_text . ')*';
my $face          = '(?!(?:' . $text . '|' . $hw_kana . '){3,8}).{3,8}';
my $face_char     = $around_face . $open_branket . $face . $close_branket . $around_face;

my $facemark;
if ($input_text=~/($face_char)/) {
  $facemark = $1; 
}

Example of facemarks are:

  (^U^)←
  。\n\n⊂( *・ω・ )⊃
  っ(。>﹏<)
  タカ( ˘ω' ) ヤスゥ…
  。(’↑▽↑)
  ……💰( ˘ω˘ )💰
  ーーー(*´꒳`*)!(
  …(o:∇:o)
 !!…(;´Д`)?
  (*´﹃ `*)✿

Examples of non-facemarks are:

  (3,000円)
  : (1/3)
  (@nVApO)
  (10/7~)
  ?<<「ニャア(しゃーねぇな)」プイッ
  (残り 51字)
  (-0.1602)
  (25-0)
  (コーヒー飲んだ)
  (※軽トラ)

This model intended to use for a facemark-prone text like above.

Training and evaluation data

Facemark data is collected manually and automatically from Twitter timeline.

  • train.csv : 35591 samples (29911 facemark, 5680 non-facemark)
  • test.csv : 3954 samples (3315 facemark, 639 non-facemark)

Training procedure

python ./examples/pytorch/text-classification/run_glue.py \
   --model_name_or_path=cl-tohoku/bert-base-japanese-whole-word-masking \
   --do_train --do_eval \
   --max_seq_length=128 --per_device_train_batch_size=32 \
   --use_fast_tokenizer=False --learning_rate=2e-5 --num_train_epochs=50  \
   --output_dir=facemark_classify \
   --save_steps=1000 --save_total_limit=3 \
   --train_file=train.csv \
   --validation_file=test.csv 

Training hyperparameters

The following hyperparameters were used during training:

  • learning_rate: 2e-05
  • train_batch_size: 32
  • eval_batch_size: 8
  • seed: 42
  • optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
  • lr_scheduler_type: linear
  • num_epochs: 50.0

Training results

It achieves the following results on the evaluation set:

  • Loss: 0.1301
  • Accuracy: 0.9896

Framework versions

  • Transformers 4.26.0.dev0
  • Pytorch 1.11.0+cu102
  • Datasets 2.7.1
  • Tokenizers 0.13.2
Downloads last month
6
Safetensors
Model size
111M params
Tensor type
I64
·
F32
·
Inference Examples
This model does not have enough activity to be deployed to Inference API (serverless) yet. Increase its social visibility and check back later, or deploy to Inference Endpoints (dedicated) instead.

Model tree for omzn/facemark_detection

Finetuned
(3)
this model

Space using omzn/facemark_detection 1