๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ DeepPavlov: #1 NLP ๋„๊ตฌ ๋ฐ ์ฑ—๋ด‡ ์ƒ์„ฑ

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„! ์šฐ๋ฆฌ๋Š” ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ(์ž์—ฐ์–ด ์ฒ˜๋ฆฌ ๋˜๋Š” ๋‹จ์ˆœํžˆ NLP)์™€ ๊ด€๋ จ๋œ ์‹ค์ œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€ํ™” ์—์ด์ „ํŠธ(์ฑ—๋ด‡)๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์ „๋…ํ•˜๋Š” ์ผ๋ จ์˜ ๊ธฐ์‚ฌ๋ฅผ ์—ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฅํŒŒ๋ธ”๋กœํ”„, ์ด๋Š” MIPT ์‹ ๊ฒฝ ์‹œ์Šคํ…œ ๋ฐ ๋”ฅ ๋Ÿฌ๋‹ ์—ฐ๊ตฌ์†Œ์˜ ์šฐ๋ฆฌ ํŒ€์—์„œ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค. ์ด ์‹œ๋ฆฌ์ฆˆ์˜ ์ฃผ์š” ๋ชฉํ‘œ๋Š” DeepPavlov๋ฅผ ๊ด‘๋ฒ”์œ„ํ•œ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์†Œ๊ฐœํ•˜๊ณ  ๊ธฐ๊ณ„ ํ•™์Šต ๋ฐ ์ˆ˜ํ•™ ๋ฐ•์‚ฌ ํ•™์œ„์— ๋Œ€ํ•œ ๊นŠ์€ ์ง€์‹ ์—†์ด๋„ ์‘์šฉ NLP ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

NLP ์ž‘์—…์—๋Š” ํ…์ŠคํŠธ์˜ ๊ฐ์ • ๊ฒฐ์ •, ๋ช…๋ช…๋œ ์—”ํ„ฐํ‹ฐ ๊ตฌ๋ฌธ ๋ถ„์„, ๋Œ€ํ™” ์ƒ๋Œ€๊ฐ€ ๋ด‡์—์„œ ์›ํ•˜๋Š” ๊ฒƒ ๊ฒฐ์ •(ํ”ผ์ž ์ฃผ๋ฌธ, ๋ฐฐ๊ฒฝ ์ •๋ณด ์–ป๊ธฐ ๋“ฑ)์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. NLP ์ž‘์—… ๋ฐ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—.

์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ์‚ฌ์ „ ํ›ˆ๋ จ๋œ NLP ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”๊ฐ€ ๊ตฌ์„ฑ์ด๋‚˜ ํ›ˆ๋ จ ์—†์ด ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” REST ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ DeepPavlov: #1 NLP ๋„๊ตฌ ๋ฐ ์ฑ—๋ด‡ ์ƒ์„ฑ

DeepPavlov ์„ค์น˜

์—ฌ๊ธฐ์™€ ์•„๋ž˜์—๋Š” Linux์— ๋Œ€ํ•œ ์ง€์นจ์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. Windows์˜ ๊ฒฝ์šฐ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”. ๋ฌธ์„œ

  • ํ˜„์žฌ ์ง€์›๋˜๋Š” Python ๋ฒ„์ „์œผ๋กœ ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค๊ณ  ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.
    virtualelnv env -p python3.7
    source env/bin/activate
  • ๊ฐ€์ƒ ํ™˜๊ฒฝ์— DeepPavlov๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
    pip install deeppavlov
    

DeepPavlov ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ REST ์„œ๋ฒ„ ์‹œ์ž‘

์ฒ˜์Œ์œผ๋กœ DeepPavlov ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์•„ํ‚คํ…์ฒ˜์˜ ์ผ๋ถ€ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

DP์˜ ๋ชจ๋“  ๋ชจ๋ธ์€ ๋‹ค์Œ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  • ํŒŒ์ด์ฌ ์ฝ”๋“œ;
  • ๋‹ค์šด๋กœ๋“œ ๊ฐ€๋Šฅํ•œ ๊ตฌ์„ฑ ์š”์†Œ - ํŠน์ • ๋ฐ์ดํ„ฐ(์ž„๋ฒ ๋”ฉ, ์‹ ๊ฒฝ๋ง ๊ฐ€์ค‘์น˜ ๋“ฑ)์— ๋Œ€ํ•œ ์ง๋ ฌํ™”๋œ ํ›ˆ๋ จ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.
  • ๋ชจ๋ธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํด๋ž˜์Šค, ๋‹ค์šด๋กœ๋“œํ•œ ๊ตฌ์„ฑ ์š”์†Œ์˜ URL, Python ์ข…์†์„ฑ ๋“ฑ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ๊ตฌ์„ฑ ํŒŒ์ผ(์ดํ•˜ config)์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ ๊ธฐ์‚ฌ์—์„œ DeepPavlov์˜ ๋‚ด๋ถ€ ๋‚ด์šฉ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ์ด๊ฒƒ๋งŒ ์•Œ๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

  • DeepPavlov์˜ ๋ชจ๋“  ๋ชจ๋ธ์€ ๊ตฌ์„ฑ ์ด๋ฆ„์œผ๋กœ ์‹๋ณ„๋ฉ๋‹ˆ๋‹ค.
  • ๋ชจ๋ธ์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด DeepPavlov ์„œ๋ฒ„์—์„œ ํ•ด๋‹น ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋˜ํ•œ ๋ชจ๋ธ์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด ๋ชจ๋ธ์— ์‚ฌ์šฉ๋˜๋Š” Python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์ถœ์‹œํ•  ์ฒซ ๋ฒˆ์งธ ๋ชจ๋ธ์€ ๋‹ค๊ตญ์–ด NER(Named Entity Recognition)์ž…๋‹ˆ๋‹ค. ์ด ๋ชจ๋ธ์€ ํ…์ŠคํŠธ ๋‹จ์–ด๊ฐ€ ์†ํ•œ ๊ฐœ์ฒด์˜ ์œ ํ˜•(๊ณ ์œ ๋ช…, ์ง€๋ช…, ํ†ตํ™” ์ด๋ฆ„ ๋“ฑ)์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์ตœ์‹  ๋ฒ„์ „์˜ NER์— ๋Œ€ํ•œ ๊ตฌ์„ฑ ์ด๋ฆ„:

ner_ontonotes_bert_mult

๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ REST ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

  1. ๊ตฌ์„ฑ์— ์ง€์ •๋œ ๋ชจ๋ธ ์ข…์†์„ฑ์„ ํ™œ์„ฑ ๊ฐ€์ƒ ํ™˜๊ฒฝ์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
    python -m deeppavlov install ner_ontonotes_bert_mult
    
  2. DeepPavlov ์„œ๋ฒ„์—์„œ ์ง๋ ฌํ™”๋œ ๋ชจ๋ธ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    python -m deeppavlov download ner_ontonotes_bert_mult
    

    ์ง๋ ฌํ™”๋œ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์œ„์น˜ํ•œ DeepPavlov ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋‹ค์šด๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.

    ~/.deeppavlov

    ๋‹ค์šด๋กœ๋“œํ•  ๋•Œ ์ด๋ฏธ ๋‹ค์šด๋กœ๋“œํ•œ ๊ตฌ์„ฑ ์š”์†Œ์˜ ํ•ด์‹œ๋ฅผ ์„œ๋ฒ„์— ์žˆ๋Š” ๊ตฌ์„ฑ ์š”์†Œ์˜ ํ•ด์‹œ์™€ ๋น„๊ตํ•˜์—ฌ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์ด ์žˆ์œผ๋ฉด ๋‹ค์šด๋กœ๋“œ๋ฅผ ๊ฑด๋„ˆ๋›ฐ๊ณ  ๊ธฐ์กด ํŒŒ์ผ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์šด๋กœ๋“œ๋œ ๊ตฌ์„ฑ ์š”์†Œ์˜ ํฌ๊ธฐ๋Š” ํ‰๊ท  0.5~8Gb๊นŒ์ง€ ๋‹ค์–‘ํ•˜๋ฉฐ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์••์ถ•์„ ํ’€๋ฉด 20Gb์— ๋„๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

  3. ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ REST ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
    python -m deeppavlov riseapi ner_ontonotes_bert_mult -p 5005
    

์ด ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด ๋ชจ๋ธ์ด ํฌํ•จ๋œ REST ์„œ๋ฒ„๊ฐ€ ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์˜ ํฌํŠธ 5005(๊ธฐ๋ณธ ํฌํŠธ๋Š” 5000)์—์„œ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋ธ์„ ์ดˆ๊ธฐํ™”ํ•œ ํ›„ API ๋ฌธ์„œ์™€ ํ…Œ์ŠคํŠธ ๊ธฐ๋Šฅ์ด ํฌํ•จ๋œ Swagger๋ฅผ URL์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. http://127.0.0.1:5005. ๋ชจ๋ธ์„ ์—”๋“œํฌ์ธํŠธ๋กœ ์ „์†กํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. http://127.0.0.1:5005/model ๋‹ค์Œ JSON ์ฝ˜ํ…์ธ ๊ฐ€ ํฌํ•จ๋œ POST ์š”์ฒญ:

{
  "x": [
    "ะ’ ะœะคะขะ˜ ะผะพะถะฝะพ ะดะพะฑั€ะฐั‚ัŒัั ะฝะฐ ัะปะตะบั‚ั€ะธั‡ะบะต ั ะกะฐะฒั‘ะปะพะฒัะบะพะณะพ ะ’ะพะบะทะฐะปะฐ.",
    "ะ’ ัŽะณะพ-ะทะฐะฟะฐะดะฝะพะน ะ ัƒัะธ ัั‚ะพะณ ะถะธั‚ะฐ ะพั†ะตะฝะตะฝ ะฒ 15 ะณั€ะธะฒะตะฝ"
  ]
}

์ด์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ๋‹ค์Œ JSON์„ ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

[
  [
    ["ะ’", "ะœะคะขะ˜", "ะผะพะถะฝะพ", "ะดะพะฑั€ะฐั‚ัŒัั", "ะฝะฐ", "ัะปะตะบั‚ั€ะธั‡ะบะต", "ั", "ะกะฐะฒั‘ะปะพะฒัะบะพะณะพ", "ะ’ะพะบะทะฐะปะฐ", "."],
    ["O", "B-FAC", "O", "O", "O", "O", "O", "B-FAC", "I-FAC", "O"]
  ],
  [
    ["ะ’", "ัŽะณะพ", "-", "ะทะฐะฟะฐะดะฝะพะน", "ะ ัƒัะธ", "ัั‚ะพะณ", "ะถะธั‚ะฐ", "ะพั†ะตะฝะตะฝ", "ะฒ", "15", "ะณั€ะธะฒะตะฝ"],
    ["O", "B-LOC", "I-LOC", "I-LOC", "I-LOC", "O", "O", "O", "O", "B-MONEY", "I-MONEY"]
  ]
]

์ด๋Ÿฌํ•œ ์˜ˆ์ œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ DeepPavlov REST API๋ฅผ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

API ๋”ฅํŒŒ๋ธ”๋กœํ”„

๊ฐ DeepPavlov ๋ชจ๋ธ์—๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ์ž…๋ ฅ ์ธ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. REST API์—์„œ๋Š” ์ธ์ˆ˜์˜ ์ด๋ฆ„์ด ์ง€์ •๋˜๊ณ  ํ•ด๋‹น ์ด๋ฆ„์€ ์ˆ˜์‹  ์‚ฌ์ „์˜ ํ‚ค์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ธ์ˆ˜๋Š” ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ํ…์ŠคํŠธ์ž…๋‹ˆ๋‹ค. ๋ชจ๋ธ์ด ๋ฐ˜ํ™˜ํ•˜๋Š” ์ธ์ˆ˜์™€ ๊ฐ’์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฌธ์„œ์˜ MODELS ์„น์…˜์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฅํŒŒ๋ธ”๋กœํ”„

์˜ˆ์ œ์—์„œ๋Š” ๋‘ ๋ฌธ์ž์—ด์˜ ๋ชฉ๋ก์ด ์ธ์ˆ˜ x์— ์ „๋‹ฌ๋˜์—ˆ์œผ๋ฉฐ ๊ฐ ๋ฌธ์ž์—ด์—๋Š” ๋ณ„๋„์˜ ๋งˆํฌ์—…์ด ์ œ๊ณต๋˜์—ˆ์Šต๋‹ˆ๋‹ค. DeepPavlov์—์„œ ๋ชจ๋“  ๋ชจ๋ธ์€ ๋…๋ฆฝ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ๊ฐ’ ๋ชฉ๋ก(๋ฐฐ์น˜)์„ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ฐฐ์น˜(Batch)๋ผ๋Š” ์šฉ์–ด๋Š” ๋จธ์‹ ๋Ÿฌ๋‹ ๋ถ„์•ผ๋ฅผ ๋งํ•˜๋ฉฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‚˜ ์‹ ๊ฒฝ๋ง์—์„œ ๋™์‹œ์— ์ฒ˜๋ฆฌ๋˜๋Š” ๋…๋ฆฝ์ ์ธ ์ž…๋ ฅ๊ฐ’์˜ ๋ฐฐ์น˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž…๋ ฅ์— ๋ณ„๋„๋กœ ์ „๋‹ฌ๋œ ๋™์ผํ•œ ๊ฐ’์— ๋น„ํ•ด ๋ชจ๋ธ์ด ๋ฐฐ์น˜์˜ ํ•œ ์š”์†Œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์‹œ๊ฐ„์„ (์ข…์ข… ํฌ๊ฒŒ) ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋Š” ๋ชจ๋“  ์š”์†Œ๊ฐ€ ์ฒ˜๋ฆฌ๋œ ํ›„์—๋งŒ ๋ฐœํ–‰๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋“ค์–ด์˜ค๋Š” ๋ฐฐ์น˜๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ชจ๋ธ์˜ ์†๋„์™€ ๊ฐ ๊ฐœ๋ณ„ ์š”์†Œ์— ํ•„์š”ํ•œ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

DeepPavlov ๋ชจ๋ธ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ธ์ˆ˜๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ฐ ์ธ์ˆ˜๋Š” ์ž์ฒด ๊ฐ’ ๋ฐฐ์น˜๋ฅผ ๋ฐ›๊ณ  ์ถœ๋ ฅ์—์„œ โ€‹โ€‹๋ชจ๋ธ์€ ํ•ญ์ƒ ํ•˜๋‚˜์˜ ๋‹ต๋ณ€ ๋ฐฐ์น˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๊ฐ€๋Š” ๋ฐฐ์น˜์˜ ์š”์†Œ๋Š” ๋™์ผํ•œ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋“ค์–ด์˜ค๋Š” ๋ฐฐ์น˜์˜ ์š”์†Œ๋ฅผ ์ฒ˜๋ฆฌํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.

์œ„ ์˜ˆ์—์„œ ๋ชจ๋ธ์˜ ๊ฒฐ๊ณผ๋Š” ๊ฐ ๋ฌธ์ž์—ด์„ ํ† ํฐ(๋‹จ์–ด ๋ฐ ๋ฌธ์žฅ ๋ถ€ํ˜ธ)์œผ๋กœ ๋ถ„๋ฅ˜ํ•˜๊ณ  ํ•ด๋‹น ๋ฌธ์ž์—ด์ด ๋‚˜ํƒ€๋‚ด๋Š” ๋ช…๋ช…๋œ ์—”ํ„ฐํ‹ฐ(์กฐ์ง ์ด๋ฆ„, ํ†ตํ™”)์™€ ๊ด€๋ จํ•˜์—ฌ ํ† ํฐ์„ ๋ถ„๋ฅ˜ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ชจ๋ธ์€ ner_ontonotes_bert_mult 18๊ฐ€์ง€ ์œ ํ˜•์˜ ๊ฐœ์ฒด๋ช…์„ ์ธ์‹ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ž์„ธํ•œ ์„ค๋ช…์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—.

DeepPavlov์˜ ๊ธฐํƒ€ ๊ธฐ๋ณธ ๋ชจ๋ธ

NER ์™ธ์—๋„ ์ด ๊ธ€์„ ์“ฐ๋Š” ์‹œ์ ์— DeepPavlov์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋ณธ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ž ์งˆ๋ฌธ ๋‹ต๋ณ€

์ด ํ…์ŠคํŠธ์˜ ์ผ๋ถ€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…์ŠคํŠธ์— ๋Œ€ํ•œ ์งˆ๋ฌธ์— ๋‹ตํ•˜์‹ญ์‹œ์˜ค. ๋ชจ๋ธ ๊ตฌ์„ฑ: squad_ru_bert_infer

์š”์ฒญ ์˜ˆ์‹œ:

{
  "context_raw": [
    "DeepPavlov ั€ะฐะทั€ะฐะฑะฐั‚ั‹ะฒะฐะตั‚ัั ะปะฐะฑะพั€ะฐั‚ะพั€ะธะตะน ะœะคะขะ˜.",
    "ะ’ ัŽะณะพ-ะทะฐะฟะฐะดะฝะพะน ะ ัƒัะธ ัั‚ะพะณ ะถะธั‚ะฐ ะพั†ะตะฝะตะฝ ะฒ 15 ะณั€ะธะฒะตะฝ."
  ],
  "question_raw": [
    "ะšะตะผ ั€ะฐะทั€ะฐะฑะฐั‚ั‹ะฒะฐะตั‚ัั DeepPavlov?",
    "ะกะบะพะปัŒะบะพ ัั‚ะพะธะป ัั‚ะพะณ ะถะธั‚ะฐ ะฝะฐ ะ ัƒัะธ?"
  ]
}

๊ฒฐ๊ณผ :

[
  ["ะปะฐะฑะพั€ะฐั‚ะพั€ะธะตะน ะœะคะขะ˜", 27, 31042.484375],
  ["15 ะณั€ะธะฒะตะฝ", 39, 1049.598876953125]
]

๋ชจ์š•๊ฐ์ง€

ํ…์ŠคํŠธ๊ฐ€ ์ „๋‹ฌ๋˜๋Š” ์‚ฌ๋žŒ์— ๋Œ€ํ•œ ๋ชจ์š•์˜ ์กด์žฌ ๊ฐ์ง€(์ž‘์„ฑ ๋‹น์‹œ - ์˜์–ด์—๋งŒ ํ•ด๋‹น). ๋ชจ๋ธ ๊ตฌ์„ฑ: ๋ชจ์š•_kaggle_conv_bert

์š”์ฒญ ์˜ˆ์‹œ:


{
  "x": [
    "Money talks, bullshit walks.",
    "You are not the brightest one."
  ]
}

๊ฒฐ๊ณผ :

[
  ["Not Insult"],
  ["Insult"]
]

๊ฐ์ • ๋ถ„์„

ํ…์ŠคํŠธ ๊ฐ์ • ๋ถ„๋ฅ˜(๊ธ์ •์ , ์ค‘๋ฆฝ์ , ๋ถ€์ •์ ) ๋ชจ๋ธ ๊ตฌ์„ฑ: rusentiment_elmo_twitter_cnn

์š”์ฒญ ์˜ˆ์‹œ:

{
  "x": [
    "ะœะฝะต ะฝั€ะฐะฒะธั‚ัั ะฑะธะฑะปะธะพั‚ะตะบะฐ DeepPavlov.",
    "ะฏ ัะปั‹ัˆะฐะป ะพ ะฑะธะฑะปะธะพั‚ะตะบะต DeepPavlov.",
    "ะœะตะฝั ะฑะตััั‚ ั‚ั€ะพะปะปะธ ะธ ะฐะฝะพะฝะธะผัƒัั‹."
  ]
}

๊ฒฐ๊ณผ :

[
  ["positive"],
  ["neutral"],
  ["negative"]
]

์˜์—ญ ๊ฐ์ง€

๋‘ ๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ํ…์ŠคํŠธ๊ฐ€ ๋™์ผํ•œ ์˜๋ฏธ๋ฅผ ๊ฐ–๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ ๊ตฌ์„ฑ: ์Šคํƒ ๋“œ_์˜์—ญ_๋ฃจ

๋ฌธ์˜:

{
  "text_a": [
    "ะ“ะพั€ะพะด ะฟะพะณั€ัƒะถะฐะตั‚ัั ะฒ ัะพะฝ, ะฟั€ะพัั‹ะฟะฐะตั‚ัั ะœะฐั„ะธั.",
    "ะŸั€ะตะทะธะดะตะฝั‚ ะกะจะ ะฟั€ะธะณั€ะพะทะธะป ั€ะฐัั‚ะพั€ะถะตะฝะธะตะผ ะดะพะณะพะฒะพั€ะฐ ั ะ“ะตั€ะผะฐะฝะธะตะน."
  ],
  "text_b": [
    "ะะฐัั‚ัƒะฟะฐะตั‚ ะฝะพั‡ัŒ, ะฒัะต ะถะธั‚ะตะปะธ ะณะพั€ะพะดะฐ ะฟะพัˆะปะธ ัะฟะฐั‚ัŒ, ะฐ ะฟั€ะตัั‚ัƒะฟะฝะธะบะธ ะฟั€ะพัะฝัƒะปะธััŒ.",
    "ะ“ะตั€ะผะฐะฝะธั ะฝะต ัะพะฑะธั€ะฐะตั‚ัั ะฟะพะดะดะฐะฒะฐั‚ัŒัั ัƒะณั€ะพะทะฐะผ ัะพ ัั‚ะพั€ะพะฝั‹ ะกะจะ."
  ]
}

๊ฒฐ๊ณผ :

[
  [1],
  [0]
]

์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  DeepPavlov ๋ชจ๋ธ์˜ ํ˜„์žฌ ๋ชฉ๋ก์€ ์–ธ์ œ๋“ ์ง€ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—.

๊ฒฐ๋ก 

์ด ๊ธฐ์‚ฌ์—์„œ ์šฐ๋ฆฌ๋Š” DeepPavlov API์™€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ผ๋ถ€ ํ…์ŠคํŠธ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  NLP ์ž‘์—…์˜ ๊ฒฝ์šฐ ์ž‘์—…์˜ ์ฃผ์ œ ์˜์—ญ(๋„๋ฉ”์ธ)์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ ์„ธํŠธ์—์„œ ๋ชจ๋ธ์„ ํ›ˆ๋ จํ•  ๋•Œ ์ตœ์ƒ์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๋ช…์‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์›์น™์ ์œผ๋กœ ๋” ๋งŽ์€ ๋ชจ๋ธ์„ ๋ชจ๋“  ์ƒํ™ฉ์— ๋Œ€ํ•ด ํ•™์Šต์‹œํ‚ฌ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๊ธฐ์‚ฌ์—์„œ๋Š” Docker์—์„œ DeepPavlov๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ถ”๊ฐ€ ์„ค์ •์„ ์‚ดํŽด๋ณธ ๋‹ค์Œ ๋ชจ๋ธ ํ•™์Šต์œผ๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  DeepPavlov๊ฐ€ ั„ะพั€ัƒะผ โ€“ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋ชจ๋ธ์— ๊ด€ํ•ด ๊ถ๊ธˆํ•œ ์ ์„ ๋ฌผ์–ด๋ณด์„ธ์š”. ๊ด€์‹ฌ์„ ๊ฐ€์ ธ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€