ํ๋ก์ธ์[[processors]]
Transformers ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ํ๋ก์ธ์๋ ๋ ๊ฐ์ง ์๋ฏธ๋ก ์ฌ์ฉ๋ฉ๋๋ค:
- Wav2Vec2 (์์ฑ๊ณผ ํ ์คํธ) ๋๋ CLIP (ํ ์คํธ์ ๋น์ )๊ณผ ๊ฐ์ ๋ฉํฐ๋ชจ๋ฌ ๋ชจ๋ธ์ ์ ๋ ฅ์ ์ ์ฒ๋ฆฌํ๋ ๊ฐ์ฒด
- GLUE ๋๋ SQUAD ๋ฐ์ดํฐ๋ฅผ ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ด์ ๋ฒ์ ์์ ์ฌ์ฉ๋์๋ ์ฌ์ฉ ์ค๋จ๋ ๊ฐ์ฒด
๋ฉํฐ๋ชจ๋ฌ ํ๋ก์ธ์[[transformers.ProcessorMixin]]
๋ชจ๋ ๋ฉํฐ๋ชจ๋ฌ ๋ชจ๋ธ์ ์ฌ๋ฌ ๋ชจ๋ฌ๋ฆฌํฐ(ํ ์คํธ, ๋น์ , ์ค๋์ค)๋ฅผ ๊ทธ๋ฃนํํ๋ ๋ฐ์ดํฐ๋ฅผ ์ธ์ฝ๋ฉํ๊ฑฐ๋ ๋์ฝ๋ฉํ๋ ๊ฐ์ฒด๊ฐ ํ์ํ๋ฐ, ์ด๊ฒ์ ํ๋ก์ธ์๋ผ๊ณ ๋ถ๋ฆฌ๋ ๊ฐ์ฒด๊ฐ ๋ด๋นํฉ๋๋ค. ํ๋ก์ธ์๋ ํ ํฌ๋์ด์ (ํ ์คํธ ๋ชจ๋ฌ๋ฆฌํฐ์ฉ), ์ด๋ฏธ์ง ํ๋ก์ธ์(๋น์ ์ฉ), ํน์ฑ ์ถ์ถ๊ธฐ(์ค๋์ค์ฉ) ๊ฐ์ด ๋ ๊ฐ ์ด์์ ์ฒ๋ฆฌ ๊ฐ์ฒด๋ฅผ ํ๋๋ก ๋ฌถ์ต๋๋ค.
์ด๋ฌํ ํ๋ก์ธ์๋ ์ ์ฅ ๋ฐ ๋ก๋ฉ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ค์ ๊ธฐ๋ณธ ํด๋์ค๋ฅผ ์์๋ฐ์ต๋๋ค:
[[autodoc]] ProcessorMixin
์ฌ์ฉ ์ค๋จ๋ ํ๋ก์ธ์[[transformers.DataProcessor]]
๋ชจ๋ ํ๋ก์ธ์๋ [~data.processors.utils.DataProcessor]์ ๊ฐ์ ๋์ผํ ์ํคํ
์ฒ๋ฅผ ๋ฐ๋ฆ
๋๋ค. ํ๋ก์ธ์๋ [~data.processors.utils.InputExample]์ ๋ชฉ๋ก์ ๋ฐํํฉ๋๋ค. ์ด [~data.processors.utils.InputExample]๋ค์ ๋ชจ๋ธ์ ์
๋ ฅํ๊ธฐ ์ํด [~data.processors.utils.InputFeatures]๋ก ๋ณํ๋ ์ ์์ต๋๋ค.
[[autodoc]] data.processors.utils.DataProcessor
[[autodoc]] data.processors.utils.InputExample
[[autodoc]] data.processors.utils.InputFeatures
GLUE[[transformers.glue_convert_examples_to_features]]
General Language Understanding Evaluation (GLUE)๋ ๋ค์ํ ๊ธฐ์กด NLU ์์ ์์ ๋ชจ๋ธ์ ์ฑ๋ฅ์ ํ๊ฐํ๋ ๋ฒค์น๋งํฌ์ ๋๋ค. GLUE: A multi-task benchmark and analysis platform for natural language understanding ๋ ผ๋ฌธ๊ณผ ํจ๊ป ๋ฐํ๋์์ต๋๋ค.
์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ MRPC, MNLI, MNLI (๋ถ์ผ์น), CoLA, SST2, STSB, QQP, QNLI, RTE, WNLI ์ด 10๊ฐ ์์ ์ ๋ํ ํ๋ก์ธ์๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ด๋ฌํ ํ๋ก์ธ์๋ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- [
~data.processors.utils.MrpcProcessor] - [
~data.processors.utils.MnliProcessor] - [
~data.processors.utils.MnliMismatchedProcessor] - [
~data.processors.utils.Sst2Processor] - [
~data.processors.utils.StsbProcessor] - [
~data.processors.utils.QqpProcessor] - [
~data.processors.utils.QnliProcessor] - [
~data.processors.utils.RteProcessor] - [
~data.processors.utils.WnliProcessor]
๋ํ, ์๋์ ๋ฉ์๋๋ค์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ํ์ผ๋ก๋ถํฐ ๊ฐ์ ๊ฐ์ ธ์ [~data.processors.utils.InputExample] ๋ชฉ๋ก์ผ๋ก ๋ณํํ ์ ์์ต๋๋ค.
[[autodoc]] data.processors.glue.glue_convert_examples_to_features
XNLI[[xnli]]
The Cross-Lingual NLI Corpus (XNLI)๋ ๊ต์ฐจ์ธ์ด ํ ์คํธ ํํ์ ํ์ง์ ํ๊ฐํ๋ ๋ฒค์น๋งํฌ์ ๋๋ค. XNLI๋ MultiNLI๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ํฌ๋ผ์ฐ๋์์ฑ ๋ฐ์ดํฐ ์ธํธ์ ๋๋ค: ํ ์คํธ ์์ 15๊ฐ ์ธ์ด(์์ด ๊ฐ์ ๊ณ ์์ ์ธ์ด๋ถํฐ ์ค์ํ๋ฆฌ์ด ๊ฐ์ ์ ์์ ์ธ์ด๊น์ง)์ ๋ํด ํ ์คํธ ํจ์ ์ด๋ ธํ ์ด์ ์ผ๋ก ๋ ์ด๋ธ๋ง๋ฉ๋๋ค.
XNLI: Evaluating Cross-lingual Sentence Representations ๋ ผ๋ฌธ๊ณผ ํจ๊ป ๋ฐํ๋์์ต๋๋ค.
์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ XNLI ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ํ๋ก์ธ์๋ฅผ ์ ๊ณตํฉ๋๋ค:
- [
~data.processors.utils.XnliProcessor]
ํ ์คํธ ์ธํธ์ ๊ณจ๋ ๋ ์ด๋ธ์ด ์ ๊ณต๋๋ฏ๋ก, ํ๊ฐ๋ ํ ์คํธ ์ธํธ์์ ์ํ๋ฉ๋๋ค.
์ด๋ฌํ ํ๋ก์ธ์๋ฅผ ์ฌ์ฉํ๋ ์์๋ run_xnli.py ์คํฌ๋ฆฝํธ์ ์ ๊ณต๋์ด ์์ต๋๋ค.
SQuAD[[squad]]
The Stanford Question Answering Dataset (SQuAD)๋ ์ง๋ฌธ ๋ต๋ณ์์ ๋ชจ๋ธ์ ์ฑ๋ฅ์ ํ๊ฐํ๋ ๋ฒค์น๋งํฌ์ ๋๋ค. v1.1๊ณผ v2.0 ๋ ๊ฐ์ง ๋ฒ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ๋ฒ์ (v1.1)์ SQuAD: 100,000+ Questions for Machine Comprehension of Text ๋ ผ๋ฌธ๊ณผ ํจ๊ป ๋ฐํ๋์์ต๋๋ค. ๋ ๋ฒ์งธ ๋ฒ์ (v2.0)์ Know What You Don't Know: Unanswerable Questions for SQuAD ๋ ผ๋ฌธ๊ณผ ํจ๊ป ๋ฐํ๋์์ต๋๋ค.
์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ ๋ฒ์ ๊ฐ๊ฐ์ ๋ํ ํ๋ก์ธ์๋ฅผ ํธ์คํ ํฉ๋๋ค:
ํ๋ก์ธ์[[transformers.data.processors.squad.SquadProcessor]]
์ด๋ฌํ ํ๋ก์ธ์๋ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- [
~data.processors.utils.SquadV1Processor] - [
~data.processors.utils.SquadV2Processor]
๋ ๋ค ์ถ์ ํด๋์ค [~data.processors.utils.SquadProcessor]๋ฅผ ์์๋ฐ์ต๋๋ค.
[[autodoc]] data.processors.squad.SquadProcessor - all
๋ํ, ๋ค์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ SQuAD ์์๋ฅผ ๋ชจ๋ธ ์
๋ ฅ์ผ๋ก ์ฌ์ฉํ ์ ์๋ [~data.processors.utils.SquadFeatures]๋ก ๋ณํํ ์ ์์ต๋๋ค.
[[autodoc]] data.processors.squad.squad_convert_examples_to_features
์ด๋ฌํ ํ๋ก์ธ์๋ค๊ณผ ์์ ์ธ๊ธํ ๋ฉ์๋๋ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ํ์ผ๋ฟ๋ง ์๋๋ผ tensorflow_datasets ํจํค์ง์๋ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์๋ ์๋์ ์ ๊ณต๋ฉ๋๋ค.
์ฌ์ฉ ์์[[example-usage]]
๋ค์์ ๋ฐ์ดํฐ ํ์ผ์ ์ฌ์ฉํ์ฌ ํ๋ก์ธ์์ ๋ณํ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ์์์ ๋๋ค:
# V2 ํ๋ก์ธ์ ๊ฐ์ ธ์ค๊ธฐ
processor = SquadV2Processor()
examples = processor.get_dev_examples(squad_v2_data_dir)
# V1 ํ๋ก์ธ์ ๊ฐ์ ธ์ค๊ธฐ
processor = SquadV1Processor()
examples = processor.get_dev_examples(squad_v1_data_dir)
features = squad_convert_examples_to_features(
examples=examples,
tokenizer=tokenizer,
max_seq_length=max_seq_length,
doc_stride=args.doc_stride,
max_query_length=max_query_length,
is_training=not evaluate,
)
tensorflow_datasets ์ฌ์ฉ์ ๋ฐ์ดํฐ ํ์ผ ์ฌ์ฉ๋งํผ ์ฝ์ต๋๋ค:
# tensorflow_datasets๋ Squad V1๋ง ์ฒ๋ฆฌํฉ๋๋ค.
tfds_examples = tfds.load("squad")
examples = SquadV1Processor().get_examples_from_dataset(tfds_examples, evaluate=evaluate)
features = squad_convert_examples_to_features(
examples=examples,
tokenizer=tokenizer,
max_seq_length=max_seq_length,
doc_stride=args.doc_stride,
max_query_length=max_query_length,
is_training=not evaluate,
)
์ด๋ฌํ ํ๋ก์ธ์๋ฅผ ์ฌ์ฉํ๋ ๋ ๋ค๋ฅธ ์์๋ run_squad.py ์คํฌ๋ฆฝํธ์ ์ ๊ณต๋์ด ์์ต๋๋ค.