νλ‘μ νΈ κΈ°κ° : 2021.04.26 ~ 2021.05.20
νλ‘μ νΈ μ£Όμ : Deep Knowledge Tracing
- [λͺ©μ°¨]
- [Dialogue State Tracking μκ°]
- [Installation]
- [Usage]
- [File Structure]
- [Input JSON File]
- [Contributors]
- [Collaborative Tool]
- [Reference]
- λν μν μΆμ (Dialogue State Tracking) μ λͺ©μ μ§ν₯ν λν(Task-Oriented Dialogue)μ μ€μν νμ ν μ€ν¬ μ€ νλμ λλ€.
- μ μ μμ λνμμ 미리 μλ리μ€μ μν΄ μ μλ μ λ³΄μΈ Slotκ³Ό λ§€ ν΄λ§λ€ κ·Έμ μν μ μλ Valueμ μ§ν©μΈ, λν μν (Dialogue State)λ₯Ό λ§€ ν΄λ§λ€ μΆλ‘ νλ ν μ€ν¬μ λλ€.
- μμ€ν μ μ μ μ λͺ©μ (Goal)μ νμ ν΄μΌλ§ νκ³ , λ³΄ν΅ μ΄ Goalμ (Slot, Value) νμ΄μ μ§ν©μΌλ‘ ννλ μ μμ΅λλ€.
- μλ₯Όλ€μ΄, μμλ₯Ό μμ½νλ μλ리μ€μ κ²½μ° "μμμ μ’ λ₯", "μμμ κ°κ²©λ"κ° Slotμ νμ μ΄ λ μ μκ³ , μ΄μ μν μ μλ Valueλ‘ κ°κ° ("νΈν ", "λͺ¨ν ", "μμ΄λΉμ€λΉ", ...), ("μ λ ΄", "μ λΉ", "λΉμΌ", ...) λ±μ κ°μ§ μ μμ΅λλ€.
- torch==1.7.0+cu101
- transformers==3.5.1
- wandb
- pytorch-transformers==1.0.0
- wget==3.2
- pytorch-pretrained-bert
pip install -r requirements.txtλͺ¨λΈμ μ¬μ©νκΈ° μν΄μλ run.sh λ₯Ό μ€νμν΅λλ€.
$ p3-dst-chatting-day/run.shμ΄ 4κ°μ§μ λͺ¨λΈμ μ νν μ μμ΅λλ€.
- SomDST
- ChanDST
- TransformerDST
- TRADE_TAPT
- TRADEλ Open-vocab based DST modelλ‘μ, Ontologyλ₯Ό κΈ°λ°μμ λ²μ΄λ λͺ¨λΈμ λλ€.
- κΈ°μ‘΄μ GloVe, Char Embedding λμ
monologg/koelectra-base-v3-discriminatorμtoken_embeddingsμ pretrained Subword EmbeddingμΌλ‘ μ¬μ©ν©λλ€. - λ©λͺ¨λ¦¬λ₯Ό μλΌκΈ° μν΄ Token Embedding (768) => Hidden Dimension (400)μΌλ‘μ Projection layerκ° λ€μ΄ μμ΅λλ€.
- λΉ λ₯Έ νμ΅μ μν΄Β
Parallel Decodingμ΄ κ΅¬νλμ΄ μμ΅λλ€.
- Paper Review : TRADE λ Όλ¬Έ 리뷰
p3-dst-chatting-day/Baseline/
β
βββ train.py
βββ preprocessor.py
βββ model.py
βββ inference.py
βββ evaluation.py
βββ data_utils.py- CHAN-DST Open-vocab based DST modelλ‘μ, SOTA (2020, MULTIWOZ 2.1) λͺ¨λΈμ λλ€.
WOS (Wizard Of Seoul) datasetμ μ ν©ν μ½λλ‘ μμ ν΄μ μ¬μ©νμ΅λλ€.
- Paper Review : Chan-DST λ Όλ¬Έ 리뷰
- ꡬν : Chan-DST ꡬν
p3-dst-chatting-day/ChanDST/
β
βββ main_chan.py - for train
βββ preprocessor.py
βββ model_chan.py
βββ inference.py
βββ evaluation.py
βββ data_utils.py- SOM-DSTλ Open-vocab based DST model κΈ°λ°μ λͺ¨λΈλ‘μ, TRADEμ λλ¦° νμ΅/μΆλ‘ μκ°μ κ°μ ν λͺ¨λΈμ λλ€.
WOS (Wizard Of Seoul) datasetμ μ ν©ν μ½λλ‘ μμ ν΄μ μ¬μ©νμ΅λλ€.Encoderλ‘λdsksd/bert-ko-small-minimalμ μ¬μ©νμ΅λλ€.
- Paper Review : SOM-DST λ Όλ¬Έ 리뷰
- ꡬν : SOM-DST ꡬν
p3-dst-chatting-day/SomDST/
β
βββ assets/ - config files & vocab
β βββ bert_config_base_uncased.json
β βββ bert_config_large_uncased.json
β βββ vocab.txt
βββ utils/ - util files
β βββ __init__.py
β βββ ckpt_utils.py - for saving model
β βββ data_utils.py - for controlling data
β βββ fix_label.py
β βββ mapping.pair - convert general word
βββ LICENSE
βββ NOTICE
βββ README.md
βββ create_data.py
βββ evaluation.py
βββ inference.py
βββ model.py
βββ train.py- Transformer-DSTλ Open-vocab based DST model κΈ°λ°μ λͺ¨λΈλ‘μ, Slot Generator λΆλΆμ Transformer Decoderλ‘ λμ²΄ν΄ μ¬μ©ν©λλ€.
WOS (Wizard Of Seoul) datasetμ μ ν©ν μ½λλ‘ μμ ν΄μ μ¬μ©νμ΅λλ€.EncoderμDecoderλdsksd/bert-ko-small-minimalμ μ¬μ©νμ΅λλ€.
- Paper Review : Transformer-DST λ Όλ¬Έ 리뷰
- ꡬν : Transformer-DST ꡬν
p3-dst-chatting-day/TransformerDST/
β
βββ utils/ - util files
β βββ bert_config_multilingual_uncased.json
β βββ bert_config_base_uncased.json
β βββ bert_ko_small_minimal.json
β βββ ckpt_utils.py - for saving model
β βββ data_utils.py - for controlling data
β βββ eval_utils.py
βββ TransformerDSTevaluation.py
βββ TransformerDSTinference.py
βββ TransformerDSTmodel.py
βββ TransformerDSTtrain.py
βββ modeling_bert.py - custom bert- TAPTλ νμ΅ν λ°μ΄ν°μ λν΄ λͺ¨λΈμ pretraining (λλ multi νμ΅) νλ λ°©λ²μ λλ€.
WOS (Wizard Of Seoul) datasetλ‘ DST taskλ₯Ό μννλ©΄μ μ΄λ°μ (λλ λμμ) MLM taskλ₯Ό μνν©λλ€.- TAPTλ
TRADEλͺ¨λΈκ³ΌSUMBTλͺ¨λΈμ μ μ©νμ΅λλ€.
- ꡬν : TAPT μ μ©
p3-dst-chatting-day/
β
βββ SUMBT_TAPT/
β βββ sumbt_tapt.py
β βββ data_utils.py
βββ TRADE_TAPT/
β βββ data_utils.py
β βββ eval_utils.py
β βββ evaluation.py
β βββ inference.py
β βββ model.py
β βββ preprocessor.py
βββ βββ train.py- Servingμ AI λͺ¨λΈμ μ€μ μλΉμ€μμ μ¬μ©ν μ μκ² Serverμ μ¬λ¦¬λ μμ μ λλ€.
- Servingμ Pytorchμμ μ 곡νλ
torchserveλ₯Ό μ¬μ©νμ΅λλ€. - Django Chat App μλ²μ μ°κ²°(
REST API)ν΄ μ±λ΄κ³Ό μ μ¬νκ² μλν©λλ€.
- TorchServe κΈ°λ³Έ : TorchServe μ¬μ©νκΈ°
- λͺ¨λΈ Serving : TRADE λͺ¨λΈ ServingνκΈ°
- Djangoμ μ°λ : Django Chat App
p3-dst-chatting-day/
β
βββ Serving/ - License from Pytorch
β βββ ...
β βββ dst_trade/
β β βββ DST_custom_handler.py - λͺ¨λΈμ΄ λμνλ λ°©μμ λͺ
μ
β β βββ README.md
β β βββ config.properties - serving management config
β β βββ data_utils.py
β β βββ exp_config.json
β β βββ model.py
β β βββ preprocessor.py
β β βββ requirements.txt - μμΉ΄μ΄λΈ μ μ λ dependencies μ¬μ© κ°λ₯
β β βββ slot_meta.json
β β βββ test.json - model serving ν testν΄λ³Ό μ μλ json νμΌ
β βββ ...
βββ django_server/
β βββ chat/
β β βββ migrations/ - migration κ΄λ¦¬ ν΄λ
β β β βββ ...
β β βββ templates/chat/ - Html λ± frontend λΆλΆ
β β β βββ ...
β β βββ __init__.py
β β βββ admin.py
β β βββ apps.py
β β βββ consumers.py - μ¬μ©μλ€ κ°μ message μ²λ¦¬
β β βββ models.py
β β βββ routing.py - routing pattern
β β βββ tests.py
β β βββ urls.py
β β βββ views.py - view templates
β βββ project_dst/
β β βββ ...
βββ βββ manage.py - djangoμ manage νμΌInputμΌλ‘ λ€μ΄κ°λ JSON Fileμ WOS (Wizard Of Seoul)μ μμμ λ°λ¦
λλ€.
dialogue_idx: λν κ³ μ μ indexλ₯Ό λνλ λλ€.domain: λν μ 체 turnμμ λμ€λ domainλ€μ λλ€.dialgouerole: user λλ systemμΌλ‘ ꡬμ±λ©λλ€.text: user λλ systemμ λ°νμ λλ€.state: μΆμ ν΄μΌν domain-slot-valueμ μλ―Έν©λλ€.
[
{
"dialogue_idx": "snowy-hat-1111:κ΄κ΄_μλΉ_11",
"domains": [
"κ΄κ΄",
"μλΉ"
],
"dialogue": [
{
"role": "user",
"text": "μμΈ μ€μμ μλ λ°λ¬Όκ΄μ μ°Ύμμ£ΌμΈμ",
"state": [
"κ΄κ΄-μ’
λ₯-λ°λ¬Όκ΄",
"κ΄κ΄-μ§μ-μμΈ μ€μ"
]
},
{
"role": "sys",
"text": "μλ
νμΈμ. λ¬ΈνμμμΈ 284μ μ΄λ μ κ°μ? νμ λ 4μ μΌλ‘ λ°©λ¬Έκ°λ€μκ² μ’μ νκ°λ₯Ό λ°κ³ μμ΅λλ€."
},
{
"role": "user",
"text": "μ’λ€μ κ±°κΈ° νμ μ λ§ν΄μ£Όμ
¨κ΅¬ μ νλ²νΈκ° μ΄λ»κ²λλμ?",
"state": [
"κ΄κ΄-μ’
λ₯-λ°λ¬Όκ΄",
"κ΄κ΄-μ§μ-μμΈ μ€μ",
"κ΄κ΄-μ΄λ¦-λ¬ΈνμμμΈ 284"
]
},
{
"role": "sys",
"text": "μ νλ²νΈλ 983880764μ
λλ€. λ νμνμ κ² μμΌμ€κΉμ?"
},
{
"role": "user",
"text": "λ€ κ΄κ΄μ§μ κ°μ μ§μμ νμλΉμ κ°κ³ μΆμλ°μ μΌμΈμμ΄ μμ΄μΌλμ",
"state": [
"κ΄κ΄-μ’
λ₯-λ°λ¬Όκ΄",
"κ΄κ΄-μ§μ-μμΈ μ€μ",
"κ΄κ΄-μ΄λ¦-λ¬ΈνμμμΈ 284",
"μλΉ-μ§μ-μμΈ μ€μ",
"μλΉ-μ’
λ₯-νμλΉ",
"μλΉ-μΌμΈμ μ 무-yes"
]
},
{
"role": "sys",
"text": "μκ°νκ³ κ³μ κ°κ²©λκ° μμΌμ κ°μ?"
},
{
"role": "user",
"text": "μ.. μ λ ΄ν κ°κ²©λμ μλμ?",
"state": [
"κ΄κ΄-μ’
λ₯-λ°λ¬Όκ΄",
"κ΄κ΄-μ§μ-μμΈ μ€μ",
"κ΄κ΄-μ΄λ¦-λ¬ΈνμμμΈ 284",
"μλΉ-κ°κ²©λ-μ λ ΄",
"μλΉ-μ§μ-μμΈ μ€μ",
"μλΉ-μ’
λ₯-νμλΉ",
"μλΉ-μΌμΈμ μ 무-yes"
]
},
{
"role": "sys",
"text": "μ£μ‘νμ§λ§ μ λ ΄ν κ°κ²©λμλ μμΌμλ€μ."
},
..μλ΅
{
"role": "sys",
"text": "κ°μ¬ν©λλ€. μ¦κ±°μ΄ μ¬νλμΈμ."
}
]
},
..μλ΅
]- μ ν¬μ (Heeseok-Jeong)
- μ λ¬Έμ’ (moon-jong)
- μ΄μ°½μ° (changwoomon)
- μμ μ§ (dkswndms4782)
- μ μ¬μ° (JAEWOOSUN)
Chatting Day νΌμ΄λ€μ Ground Rule, μ€νλ
ΈνΈ, νΌμ΄μΈμ
λ± νλ¬ κ°μ ν보λ₯Ό νμΈνμλ €λ©΄ λ€μ λ§ν¬λ₯Ό ν΄λ¦νμΈμ.
- Transferable Multi-Domain State Generator for Task-Oriented Dialogue Systems(wu et al., arXiv 2019)
- SUMBT: Slot-Utterance Matching for Universal and Scalable Belief Tracking (Lee et al., arXiv 2019)
- Efficient Dialogue State Tracking by Selectively Overwriting Memory (Kim et al., arXiv 2020)
- A Contextual Hierarchical Attention Network with Adaptive Objective for Dialogue State Tracking (Shan et al., ACL 2020)
- Jointly Optimizing State Operation Prediction and Value Generation for Dialogue State Tracking (Zeng et al., arXiv 2021)
- WOS (Wizard Of Seoul)






