เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เชฎเชพเชŸเซ‡ เชกเซ€เชชเชชเชพเชตเชฒเซ‹เชต: #1 NLP เชŸเซ‚เชฒเซเชธ เช…เชจเซ‡ เชšเซ‡เชŸเชฌเซ‹เชŸ เชฌเชจเชพเชตเชŸ

เช•เซ‡เชฎ เช›เซ‹ เชฌเชงเชพ! เช…เชฎเซ‡ เชจเซ‡เชšเชฐเชฒ เชฒเซ‡เช‚เช—เซเชตเซ‡เชœ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— (เชจเซ‡เชšเชฐเชฒ เชฒเซ‡เช‚เช—เซเชตเซ‡เชœ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เช…เชฅเชตเชพ เชซเช•เซเชค NLP) เช…เชจเซ‡ เช“เชชเชจ-เชธเซ‹เชฐเซเชธ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชกเชพเชฏเชฒเซ‹เช— เชเชœเชจเซเชŸเซเชธ (เชšเซ‡เชŸเชฌเซ‹เชŸเซเชธ) เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฎเชฐเซเชชเชฟเชค เชฒเซ‡เช–เซ‹เชจเซ€ เชถเซเชฐเซ‡เชฃเซ€ เช–เซ‹เชฒเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช. เชฆเซ€เชชเชชเชพเชตเชฒเซ‹เชต, เชœเซ‡ เชจเซเชฏเซเชฐเชฒ เชธเชฟเชธเซเชŸเชฎเซเชธ เช…เชจเซ‡ เชกเซ€เชช เชฒเชฐเซเชจเชฟเช‚เช—เชจเซ€ MIPT เชฒเซ‡เชฌเซ‹เชฐเซ‡เชŸเชฐเซ€เชฎเชพเช‚ เช…เชฎเชพเชฐเซ€ เชŸเซ€เชฎ เชฆเซเชตเชพเชฐเชพ เชตเชฟเช•เชธเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชฐเชนเซ€ เช›เซ‡. เชถเซเชฐเซ‡เชฃเซ€เชจเซ‹ เชฎเซเช–เซเชฏ เชงเซเชฏเซ‡เชฏ เชฆเซ€เชชเชชเชพเชตเชฒเซ‹เชตเชจเซ‹ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เชจเซ€ เชตเชฟเชถเชพเชณ เชถเซเชฐเซ‡เชฃเซ€ เชธเชพเชฅเซ‡ เชชเชฐเชฟเชšเชฏ เช•เชฐเชพเชตเชตเชพเชจเซ‹ เช›เซ‡ เช…เชจเซ‡ เชคเชฎเซ‡ เชฎเชถเซ€เชจ เชฒเชฐเซเชจเชฟเช‚เช— เช…เชจเซ‡ เช—เชฃเชฟเชคเชฎเชพเช‚ เชชเซ€เชเชšเชกเซ€เชฎเชพเช‚ เชŠเช‚เชกเซ€ เชœเชพเชฃเช•เชพเชฐเซ€ เชตเชฟเชจเชพ เชฒเชพเช—เซ NLP เชธเชฎเชธเซเชฏเชพเช“เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชนเชฒ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เชคเซ‡ เชฌเชคเชพเชตเชตเชพเชจเซเช‚ เช›เซ‡.

NLP เช•เชพเชฐเซเชฏเซ‹เชฎเชพเช‚ เชŸเซ‡เช•เซเชธเซเชŸเชจเซ€ เชญเชพเชตเชจเชพ เชจเช•เซเช•เซ€ เช•เชฐเชตเซ€, เชจเชพเชฎเชตเชพเชณเซ€ เชธเช‚เชธเซเชฅเชพเช“เชจเซเช‚ เชชเชฆเชšเซเช›เซ‡เชฆเชจ เช•เชฐเชตเซเช‚, เชคเชฎเชพเชฐเชพ เชฌเซ‰เชŸเชฎเชพเช‚เชฅเซ€ เช‡เชจเซเชŸเชฐเชฒเซ‹เช•เซเชฏเซเชŸเชฐ เชถเซเช‚ เช‡เชšเซเช›เซ‡ เช›เซ‡ เชคเซ‡ เชจเช•เซเช•เซ€ เช•เชฐเชตเซเช‚: เชชเชฟเชเชพ เช“เชฐเซเชกเชฐ เช•เชฐเซ‹ เช…เชฅเชตเชพ เชชเซƒเชทเซเช เชญเซ‚เชฎเชฟ เชฎเชพเชนเชฟเชคเซ€ เชฎเซ‡เชณเชตเซ‹ เช…เชจเซ‡ เช˜เชฃเซเช‚ เชฌเชงเซเช‚. เชคเชฎเซ‡ NLP เช•เชพเชฐเซเชฏเซ‹ เช…เชจเซ‡ เชชเชฆเซเชงเชคเชฟเช“ เชตเชฟเชถเซ‡ เชตเชงเซ เชตเชพเช‚เชšเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชนเซ€เช‚.

เช† เชฒเซ‡เช–เชฎเชพเช‚, เช…เชฎเซ‡ เชคเชฎเชจเซ‡ เชฌเชคเชพเชตเซ€เชถเซเช‚ เช•เซ‡ เชชเซ‚เชฐเซเชต-เชชเซเชฐเชถเชฟเช•เซเชทเชฟเชค NLP เชฎเซ‹เชกเชฒเซเชธ เชธเชพเชฅเซ‡ REST เชธเชฐเซเชตเชฐ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชšเชฒเชพเชตเชตเซเช‚, เช•เซ‹เชˆเชชเชฃ เชตเชงเชพเชฐเชพเชจเชพ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เช…เชฅเชตเชพ เชคเชพเชฒเซ€เชฎ เชตเชฟเชจเชพ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เช›เซ‡.

เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เชฎเชพเชŸเซ‡ เชกเซ€เชชเชชเชพเชตเชฒเซ‹เชต: #1 NLP เชŸเซ‚เชฒเซเชธ เช…เชจเซ‡ เชšเซ‡เชŸเชฌเซ‹เชŸ เชฌเชจเชพเชตเชŸ

เชกเซ€เชชเชชเชพเชตเชฒเซ‹เชตเชจเซ€ เชธเซเชฅเชพเชชเชจเชพ

เช…เชนเซ€เช‚ เช…เชจเซ‡ เชจเซ€เชšเซ‡, Linux เชฎเชพเชŸเซ‡เชจเซ€ เชธเซ‚เชšเชจเชพเช“ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เชตเชฟเชจเซเชกเซ‹เช เชฎเชพเชŸเซ‡, เช…เชฎเชพเชฐเซ€ เชœเซเช“ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ

  • Python เชจเชพ เชตเชฐเซเชคเชฎเชพเชจ เชธเชฎเชฐเซเชฅเชฟเชค เชธเช‚เชธเซเช•เชฐเชฃ เชธเชพเชฅเซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชฌเชจเชพเชตเซ‹ เช…เชจเซ‡ เชธเช•เซเชฐเชฟเชฏ เช•เชฐเซ‹:
    virtualelnv env -p python3.7
    source env/bin/activate
  • เชกเซ€เชชเชชเชพเชตเชฒเซ‹เชตเชจเซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช‚ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹:
    pip install deeppavlov
    

DeepPavlov เชฎเซ‹เชกเชฒ เชธเชพเชฅเซ‡ REST เชธเชฐเซเชตเชฐ เชฒเซ‹เช‚เชš เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เช†เชชเชฃเซ‡ เชธเซŒเชชเซเชฐเชฅเชฎ เชตเช–เชค เชกเซ€เชชเชชเชพเชตเชฒเซ‹เชต เชฎเซ‹เชกเซ‡เชฒ เชธเชพเชฅเซ‡ เชธเชฐเซเชตเชฐ เชฒเซ‹เช‚เชš เช•เชฐเซ€เช เชคเซ‡ เชชเชนเซ‡เชฒเชพเช‚, เชชเซเชธเซเชคเช•เชพเชฒเชฏเชจเชพ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเชจเซ€ เช•เซ‡เชŸเชฒเซ€เช• เชตเชฟเชถเซ‡เชทเชคเชพเช“ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเชตเซ€ เช‰เชชเชฏเซ‹เช—เซ€ เชฅเชถเซ‡.

DP เชฎเชพเช‚ เช•เซ‹เชˆเชชเชฃ เชฎเซ‹เชกเซ‡เชฒเชฎเชพเช‚ เชจเซ€เชšเซ‡เชจเชพเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡:

  • เชชเชพเชฏเชฅเซ‹เชจ เช•เซ‹เชก;
  • เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเชพ เช˜เชŸเช•เซ‹ - เชšเซ‹เช•เซเช•เชธ เชกเซ‡เชŸเชพ เชชเชฐ เชถเซเชฐเซ‡เชฃเซ€เชฌเชฆเซเชง เชคเชพเชฒเซ€เชฎ เชชเชฐเชฟเชฃเชพเชฎเซ‹ (เชเชฎเซเชฌเซ‡เชกเชฟเช‚เช—เซเชธ, เชจเซเชฏเซเชฐเชฒ เชจเซ‡เชŸเชตเชฐเซเช•เชจเซเช‚ เชตเชœเชจ, เชตเช—เซ‡เชฐเซ‡);
  • เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเชพเช‡เชฒ (เชคเซเชฏเชพเชฐเชฌเชพเชฆ เชฐเซ‚เชชเชฐเซ‡เช–เชพ เชคเชฐเซ€เช•เซ‡ เช“เชณเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡), เชœเซ‡เชฎเชพเช‚ เชฎเซ‹เชกเซ‡เชฒ เชฆเซเชตเชพเชฐเชพ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเชพ เชตเชฐเซเช—เซ‹, เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ‡เชฒ เช˜เชŸเช•เซ‹เชจเชพ URL, เชชเชพเชฏเชฅเซ‹เชจ เช…เชตเชฒเช‚เชฌเชจ เชตเช—เซ‡เชฐเซ‡ เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เชนเซ‹เชฏ เช›เซ‡.

เช…เชฎเซ‡ เชคเชฎเชจเซ‡ เชจเซ€เชšเซ‡เชจเชพ เชฒเซ‡เช–เซ‹เชฎเชพเช‚ เชฆเซ€เชชเชชเชพเชตเชฒเซ‹เชตเชจเชพ เชนเซ‚เชก เชนเซ‡เช เชณ เชถเซเช‚ เช›เซ‡ เชคเซ‡ เชตเชฟเชถเซ‡ เชตเชงเซ เชœเชฃเชพเชตเซ€เชถเซเช‚, เชนเชตเซ‡ เช…เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชคเซ‡ เชœเชพเชฃเชตเซเช‚ เชชเซ‚เชฐเชคเซเช‚ เช›เซ‡:

  • เชกเซ€เชชเชชเชพเชตเชฒเซ‹เชตเชฎเชพเช‚ เช•เซ‹เชˆเชชเชฃ เชฎเซ‹เชกเซ‡เชฒ เชคเซ‡เชจเซ€ เชฐเซ‚เชชเชฐเซ‡เช–เชพเชจเชพ เชจเชพเชฎเชฅเซ€ เช“เชณเช–เชพเชฏ เช›เซ‡;
  • เชฎเซ‹เชกเซ‡เชฒ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชกเซ€เชชเชชเชพเชตเชฒเซ‹เชต เชธเชฐเซเชตเชฐเซเชธเชฎเชพเช‚เชฅเซ€ เชคเซ‡เชจเชพ เช˜เชŸเช•เซ‹ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡;
  • เช‰เชชเชฐเชพเช‚เชค, เชฎเซ‹เชกเซ‡เชฒ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชชเชพเชฏเชฅเซ‹เชจ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชœเซ‡เชจเซ‹ เชคเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡.

เช…เชฎเซ‡ เชœเซ‡ เชชเซเชฐเชฅเชฎ เชฎเซ‹เชกเชฒ เชฒเซ‹เชจเซเชš เช•เชฐเซ€เชถเซเช‚ เชคเซ‡ เชฌเชนเซเชญเชพเชทเซ€ เชจเซ‡เชฎเซเชก เชเชจเซเชŸเชฟเชŸเซ€ เชฐเซ‡เช•เช—เซเชจเชฟเชถเชจ (NER) เชนเชถเซ‡. เชฎเซ‰เชกเชฒ เชฒเช–เชพเชฃ เชถเชฌเซเชฆเซ‹เชจเซเช‚ เชตเชฐเซเช—เซ€เช•เชฐเชฃ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชจเชพเชฎเชตเชพเชณเซ€ เชธเช‚เชธเซเชฅเชพเช“เชจเชพ เชชเซเชฐเช•เชพเชฐ เช…เชจเซเชธเชพเชฐ เชคเซ‡เช“ เชœเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชธเช‚เชฌเช‚เชง เชงเชฐเชพเชตเซ‡ เช›เซ‡ (เชฏเซ‹เช—เซเชฏ เชจเชพเชฎเซ‹, เชญเซŒเช—เซ‹เชฒเชฟเช• เชจเชพเชฎเซ‹, เชšเชฒเชฃเชจเชพ เชจเชพเชฎเซ‹ เช…เชจเซ‡ เช…เชจเซเชฏ). NER เชจเชพ เชตเชฐเซเชคเชฎเชพเชจ เชธเซŒเชฅเซ€ เชคเชพเชœเซ‡เชคเชฐเชจเชพ เชธเช‚เชธเซเช•เชฐเชฃ เชฎเชพเชŸเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพ เชจเชพเชฎ:

ner_ontonotes_bert_mult

เช…เชฎเซ‡ เชฎเซ‹เชกเซ‡เชฒ เชธเชพเชฅเซ‡ REST เชธเชฐเซเชตเชฐ เชฒเซ‹เชจเซเชš เช•เชฐเซ€เช เช›เซ€เช:

  1. เช…เชฎเซ‡ เชคเซ‡เชจเซ€ เชฐเซ‚เชชเชฐเซ‡เช–เชพเชฎเชพเช‚ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชฎเซ‹เชกเซ‡เชฒ เชจเชฟเชฐเซเชญเชฐเชคเชพเชจเซ‡ เชธเช•เซเชฐเชฟเชฏ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชชเชฐเซเชฏเชพเชตเชฐเชฃเชฎเชพเช‚ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€เช เช›เซ€เช:
    python -m deeppavlov install ner_ontonotes_bert_mult
    
  2. เชกเซ€เชชเชชเชพเชตเชฒเซ‹เชต เชธเชฐเซเชตเชฐเซเชธเชฎเชพเช‚เชฅเซ€ เชถเซเชฐเซ‡เชฃเซ€เชฌเชฆเซเชง เชฎเซ‹เชกเซ‡เชฒ เช˜เชŸเช•เซ‹ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ‹:
    python -m deeppavlov download ner_ontonotes_bert_mult
    

    เชธเซ€เชฐเซ€เชฏเชฒเชพเช‡เชเซเชก เช˜เชŸเช•เซ‹ เชกเซ€เชชเชชเชพเชตเชฒเซ‹เชต เชนเซ‹เชฎ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡, เชœเซ‡ เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ€เชคเซ‡ เชธเซเชฅเชฟเชค เช›เซ‡.

    ~/.deeppavlov

    เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, เชชเชนเซ‡เชฒเชพเชฅเซ€ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ‡เชฒ เช˜เชŸเช•เซ‹เชจเซ€ เชนเซ‡เชถ เชธเชฐเซเชตเชฐ เชชเชฐ เชธเซเชฅเชฟเชค เช˜เชŸเช•เซ‹เชจเซ€ เชนเซ‡เชถ เชธเชพเชฎเซ‡ เชคเชชเชพเชธเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชœเซ‹ เช•เซ‹เชˆ เชฎเซ‡เชš เชนเซ‹เชฏ, เชคเซ‹ เชกเชพเช‰เชจเชฒเซ‹เชก เช›เซ‹เชกเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชนเชพเชฒเชจเซ€ เชซเชพเช‡เชฒเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ‡เชฒ เช˜เชŸเช•เซ‹เชจเชพ เช•เชฆ เชธเชฐเซ‡เชฐเชพเชถ 0.5 เชฅเซ€ 8 Gb เชธเซเชงเซ€ เชฌเชฆเชฒเชพเชˆ เชถเช•เซ‡ เช›เซ‡, เช•เซ‡เชŸเชฒเชพเช• เช•เชฟเชธเซเชธเชพเช“เชฎเชพเช‚ เช…เชจเชเชฟเชช เช•เชฐเซเชฏเชพ เชชเช›เซ€ 20 Gb เชธเซเชงเซ€ เชชเชนเซ‹เช‚เชšเซ‡ เช›เซ‡.

  3. เช…เชฎเซ‡ เชฎเซ‹เชกเซ‡เชฒ เชธเชพเชฅเซ‡ REST เชธเชฐเซเชตเชฐ เชฒเซ‹เชจเซเชš เช•เชฐเซ€เช เช›เซ€เช:
    python -m deeppavlov riseapi ner_ontonotes_bert_mult -p 5005
    

เช† เช†เชฆเซ‡เชถเชจเซ‹ เช…เชฎเชฒ เช•เชฐเชตเชพเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‡, เชนเซ‹เชธเซเชŸ เชฎเชถเซ€เชจเชจเชพ เชชเซ‹เชฐเซเชŸ 5005 เชชเชฐ เชฎเซ‹เชกเชฒ เชธเชพเชฅเซ‡เชจเซเช‚ REST เชธเชฐเซเชตเชฐ เชฒเซ‹เชจเซเชš เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ (เชกเชฟเชซเซ‹เชฒเซเชŸ เชชเซ‹เชฐเซเชŸ 5000 เช›เซ‡).

เชฎเซ‹เชกเชฒ เชถเชฐเซ‚ เช•เชฐเซเชฏเชพ เชชเช›เซ€, API เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ เชธเชพเชฅเซ‡ เชธเซเชตเซ‡เช—เชฐ เช…เชจเซ‡ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ URL เชชเชฐ เชฎเชณเซ€ เชถเช•เซ‡ เช›เซ‡ http://127.0.0.1:5005. เชšเชพเชฒเซ‹ เชฎเซ‹เชกเซ‡เชฒเชจเซ‡ เช…เช‚เชคเชฟเชฎ เชฌเชฟเช‚เชฆเซ เชชเชฐ เชฎเซ‹เช•เชฒเซ€เชจเซ‡ เชคเซ‡เชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซ€เช http://127.0.0.1:5005/model เชจเซ€เชšเซ‡เชจเซ€ JSON เชธเชพเชฎเช—เซเชฐเซ€ เชธเชพเชฅเซ‡ เชชเซ‹เชธเซเชŸ เชตเชฟเชจเช‚เชคเซ€:

{
  "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 เชฎเชพเชŸเซ‡ เชฌเซ‡ เชธเซเชŸเซเชฐเชฟเช‚เช—เซเชธเชจเซ€ เชธเซ‚เชšเชฟ เชชเชธเชพเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€, เชœเซ‡เชฎเชพเช‚เชฅเซ€ เชฆเชฐเซ‡เช•เชจเซ‡ เช…เชฒเช— เชฎเชพเชฐเซเช•เช…เชช เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚. เชกเซ€เชชเชชเชพเชตเชฒเซ‹เชตเชฎเชพเช‚, เชคเชฎเชพเชฎ เชฎเซ‹เชกเซ‡เชฒเซ‹ เชธเซเชตเชคเช‚เชคเซเชฐ เชฐเซ€เชคเซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชพเชฏเซ‡เชฒ เชฎเซ‚เชฒเซเชฏเซ‹เชจเซ€ เชธเซ‚เชšเชฟ (เชฌเซ‡เชš) เช‡เชจเชชเซเชŸ เชคเชฐเซ€เช•เซ‡ เชฒเซ‡ เช›เซ‡.

เชถเชฌเซเชฆ "เชฌเซ‡เชš" เช เชฎเชถเซ€เชจ เชฒเชฐเซเชจเชฟเช‚เช—เชจเชพ เช•เซเชทเซ‡เชคเซเชฐเชจเซ‹ เชธเช‚เชฆเชฐเซเชญ เช†เชชเซ‡ เช›เซ‡ เช…เชจเซ‡ เชเช• เชธเชพเชฅเซ‡ เช…เชฒเซเช—เซ‹เชฐเชฟเชงเชฎ เช…เชฅเชตเชพ เชจเซเชฏเซเชฐเชฒ เชจเซ‡เชŸเชตเชฐเซเช• เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชพเชฏเซ‡เชฒ เชธเซเชตเชคเช‚เชคเซเชฐ เช‡เชจเชชเซเชŸ เชฎเซ‚เชฒเซเชฏเซ‹เชจเชพ เชฌเซ‡เชšเชจเซ‹ เชธเช‚เชฆเชฐเซเชญ เช†เชชเซ‡ เช›เซ‡. เช† เช…เชญเชฟเช—เชฎ เชคเชฎเชจเซ‡ เช‡เชจเชชเซเชŸเชจเซ‡ เช…เชฒเช—เชฅเซ€ เชชเชธเชพเชฐ เช•เชฐเซ‡เชฒ เชธเชฎเชพเชจ เชฎเซ‚เชฒเซเชฏเชจเซ€ เชคเซเชฒเชจเชพเชฎเชพเช‚ เชฎเซ‹เชกเซ‡เชฒ เชฌเซ‡เชšเชจเชพ เชเช• เช˜เชŸเช• เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชธเชฎเชฏ (เช˜เชฃเซ€ เชตเช–เชค เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡) เช˜เชŸเชพเชกเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เชชเชฐเช‚เชคเซ เชคเชฎเชพเชฎ เช˜เชŸเช•เซ‹ เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซเชฏเชพ เชชเช›เซ€ เชœ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชชเชฐเชฟเชฃเชพเชฎ เชœเชพเชฐเซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชคเซ‡เชฅเซ€, เช‡เชจเช•เชฎเชฟเช‚เช— เชฌเซ‡เชš เชœเชจเชฐเซ‡เชŸ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, เชฎเซ‹เชกเซ‡เชฒเชจเซ€ เช—เชคเชฟ เช…เชจเซ‡ เชคเซ‡เชจเชพ เชฆเชฐเซ‡เช• เชตเซเชฏเช•เซเชคเชฟเช—เชค เช˜เชŸเช•เซ‹ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชธเชฎเชฏ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชตเซ‹ เชœเชฐเซ‚เชฐเซ€ เชฐเชนเซ‡เชถเซ‡.

เชœเซ‹ เชกเซ€เชชเชชเชพเชตเชฒเซ‹เชต เชฎเซ‹เชกเซ‡เชฒ เชฎเชพเชŸเซ‡ เช˜เชฃเซ€ เชฆเชฒเซ€เชฒเซ‹ เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชฆเชฐเซ‡เช•เชจเซ‡ เชคเซ‡เชจเชพ เชชเซ‹เชคเชพเชจเชพ เชฎเซ‚เชฒเซเชฏเซ‹เชจเซ€ เชฌเซ‡เชš เชชเซเชฐเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡, เช…เชจเซ‡ เช†เช‰เชŸเชชเซเชŸ เชชเชฐ เชฎเซ‹เชกเซ‡เชฒ เชนเช‚เชฎเซ‡เชถเชพ เชœเชตเชพเชฌเซ‹เชจเซ€ เชเช• เชฌเซ‡เชš เช‰เชคเซเชชเชจเซเชจ เช•เชฐเซ‡ เช›เซ‡. เช†เช‰เชŸเช—เซ‹เช‡เช‚เช— เชฌเซ‡เชšเชจเชพ เชคเชคเซเชตเซ‹ เช เชธเชฎเชพเชจ เช‡เชจเซเชกเซ‡เช•เซเชธ เชธเชพเชฅเซ‡ เช†เชตเชจเชพเชฐเชพ เชฌเซ‡เชšเชจเชพ เชคเชคเซเชตเซ‹เชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เช›เซ‡.

เช‰เชชเชฐเซ‹เช•เซเชค เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚, เชฎเซ‹เชกเซ‡เชฒเชจเซเช‚ เชชเชฐเชฟเชฃเชพเชฎ เชฆเชฐเซ‡เช• เชธเซเชŸเซเชฐเชฟเช‚เช—เชจเซ‡ เชŸเซ‹เช•เชจเซเชธ (เชถเชฌเซเชฆเซ‹ เช…เชจเซ‡ เชตเชฟเชฐเชพเชฎเชšเชฟเชนเซเชจเซ‹) เชฎเชพเช‚ เชตเชฟเชญเชพเชœเซ€เชค เช•เชฐเชตเชพเชจเซเช‚ เชนเชคเซเช‚ เช…เชจเซ‡ เชคเซ‡ เชฐเชœเซ‚ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชจเชพเชฎเชตเชพเชณเซ€ เชเชจเซเชŸเชฟเชŸเซ€ (เชธเช‚เชธเซเชฅเชพเชจเซเช‚ เชจเชพเชฎ, เชšเชฒเชฃ) เชธเช‚เชฌเช‚เชงเชฟเชค เชŸเซ‹เช•เชจเชจเซเช‚ เชตเชฐเซเช—เซ€เช•เชฐเชฃ เช•เชฐเชตเชพเชจเซเช‚ เชนเชคเซเช‚. เชนเชพเชฒเชฎเชพเช‚ เชฎเซ‹เชกเซ‡เชฒ ner_ontonotes_bert_mult 18 เชชเซเชฐเช•เชพเชฐเชจเซ€ เชจเชพเชฎเชพเช‚เช•เชฟเชค เชธเช‚เชธเซเชฅเชพเช“เชจเซ‡ เช“เชณเช–เชตเชพเชฎเชพเช‚ เชธเช•เซเชทเชฎ, เชตเชฟเช—เชคเชตเชพเชฐ เชตเชฐเซเชฃเชจ เชฎเชณเซ€ เชถเช•เซ‡ เช›เซ‡ เช…เชนเซ€เช‚.

เชฆเซ€เชชเชชเชพเชตเชฒเซ‹เชต เชฆเซเชตเชพเชฐเชพ เช…เชจเซเชฏ เช†เช‰เชŸ-เช“เชซ-เชง-เชฌเซ‹เช•เซเชธ เชฎเซ‹เชกเชฒเซเชธ

NER เช‰เชชเชฐเชพเช‚เชค, เชจเซ€เชšเซ‡เชจเชพ เช†เช‰เชŸ-เช“เชซ-เชง-เชฌเซ‹เช•เซเชธ เชฎเซ‹เชกเซ‡เชฒเซ‹ เชฒเช–เชตเชพเชจเชพ เชธเชฎเชฏเซ‡ เชกเซ€เชชเชชเชพเชตเชฒเซ‹เชตเชฎเชพเช‚ เช‰เชชเชฒเชฌเซเชง เช›เซ‡:

เชŸเซ‡เช•เซเชธเซเชŸ เชชเซเชฐเชถเซเชจเชจเซ‹ เชœเชตเชพเชฌ

เช† เชŸเซ‡เช•เซเชธเซเชŸเชจเชพ เชŸเซเช•เชกเชพ เชธเชพเชฅเซ‡ เชŸเซ‡เช•เซเชธเซเชŸเชจเชพ เชชเซเชฐเชถเซเชจเชจเซ‹ เชœเชตเชพเชฌ เช†เชชเซ‹. เชฎเซ‹เชกเชฒ เชฐเซ‚เชชเชฐเซ‡เช–เชพ: squad_ru_bert_infer

เช‰เชฆเชพเชนเชฐเชฃ เชตเชฟเชจเช‚เชคเซ€:

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

เชชเชฐเชฟเชฃเชพเชฎ:

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

เช…เชชเชฎเชพเชจ เชถเซ‹เชง

เชœเซ‡ เชตเซเชฏเช•เซเชคเชฟเชจเซ‡ เชŸเซ‡เช•เซเชธเซเชŸ เชธเช‚เชฌเซ‹เชงเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชคเซ‡เชจเชพ เช…เชชเชฎเชพเชจเชจเซ€ เชนเชพเชœเชฐเซ€เชจเซ€ เชคเชชเชพเชธ (เชฒเซ‡เช–เชคเซ€ เชตเช–เชคเซ‡ - เชซเช•เซเชค เช…เช‚เช—เซเชฐเซ‡เชœเซ€ เชฎเชพเชŸเซ‡). เชฎเซ‹เชกเชฒ เชฐเซ‚เชชเชฐเซ‡เช–เชพ: insults_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"]
]

เชชเซ‡เชฐเชพเชซเซเชฐเซ‡เช เชกเชฟเชŸเซ‡เช•เซเชถเชจ

เชฌเซ‡ เช…เชฒเช— เช…เชฒเช— เช—เซเชฐเช‚เชฅเซ‹เชจเซ‹ เชธเชฎเชพเชจ เช…เชฐเซเชฅ เช›เซ‡ เช•เซ‡ เช•เซ‡เชฎ เชคเซ‡ เชจเช•เซเช•เซ€ เช•เชฐเชตเซเช‚. เชฎเซ‹เชกเชฒ เชฐเซ‚เชชเชฐเซ‡เช–เชพ: stand_paraphraser_en

เชตเชฟเชจเช‚เชคเซ€:

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

เชชเชฐเชฟเชฃเชพเชฎ:

[
  [1],
  [0]
]

เชคเชฎเชพเชฎ เช†เช‰เชŸ-เช“เชซ-เชง-เชฌเซ‹เช•เซเชธ เชกเซ€เชชเชชเชพเชตเชฒเซ‹เชต เชฎเซ‹เชกเชฒเซเชธเชจเซ€ เชตเชฐเซเชคเชฎเชพเชจ เชธเซ‚เชšเชฟ เชนเช‚เชฎเซ‡เชถเชพ เชฎเชณเซ€ เชถเช•เซ‡ เช›เซ‡ เช…เชนเซ€เช‚.

เชจเชฟเชทเซเช•เชฐเซเชท

เช† เชฒเซ‡เช–เชฎเชพเช‚, เช…เชฎเซ‡ เชกเซ€เชชเชชเชพเชตเชฒเซ‹เชต API เช…เชจเซ‡ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชจเซ€ เช•เซ‡เชŸเชฒเซ€เช• เชŸเซ‡เช•เซเชธเซเชŸ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เช•เซเชทเชฎเชคเชพเช“เชฅเซ€ เชชเชฐเชฟเชšเชฟเชค เชฅเชฏเชพ เช›เซ€เช เชœเซ‡ เชฌเซ‰เช•เซเชธเชจเซ€ เชฌเชนเชพเชฐ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡. เชคเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฐเชพเช–เชตเซเช‚ เชœเซ‹เชˆเช เช•เซ‡ เช•เซ‹เชˆเชชเชฃ NLP เช•เชพเชฐเซเชฏ เชฎเชพเชŸเซ‡, เช•เชพเชฐเซเชฏเชจเชพ เชตเชฟเชทเชฏ เชตเชฟเชธเซเชคเชพเชฐ (เชกเซ‹เชฎเซ‡เชจ) เชจเซ‡ เช…เชจเซเชฐเซ‚เชช เชกเซ‡เชŸเชพ เชธเซ‡เชŸ เชชเชฐ เชฎเซ‹เชกเซ‡เชฒเชจเซ‡ เชคเชพเชฒเซ€เชฎ เช†เชชเชคเซ€ เชตเช–เชคเซ‡ เชถเซเชฐเซ‡เชทเซเช  เชชเชฐเชฟเชฃเชพเชฎ เชชเซเชฐเชพเชชเซเชค เชฅเชถเซ‡. เชตเชงเซเชฎเชพเช‚, เชตเชงเซ เชฎเซ‹เชกเซ‡เชฒเซ‹, เชธเซˆเชฆเซเชงเชพเช‚เชคเชฟเช• เชฐเซ€เชคเซ‡, เชฌเชงเซ€ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเช“ เชฎเชพเชŸเซ‡ เชชเซเชฐเชถเชฟเช•เซเชทเชฟเชค เชฅเชˆ เชถเช•เชคเชพ เชจเชฅเซ€.

เชจเซ€เชšเซ‡เชจเชพ เชฒเซ‡เช–เซ‹เชฎเชพเช‚ เช†เชชเชฃเซ‡ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชจเซ€ เชตเชงเชพเชฐเชพเชจเซ€ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เชœเซ‹เชˆเชถเซเช‚, เชกเซ‹เช•เชฐเชฅเซ€ เชกเซ€เชชเชชเชพเชตเชฒเซ‹เชต เชฒเซ‹เชจเซเชš เช•เชฐเซ€เชถเซเช‚, เช…เชจเซ‡ เชชเช›เซ€ เช…เชฎเซ‡ เชชเซเชฐเชถเชฟเช•เซเชทเชฃ เชฎเซ‹เชกเชฒเซเชธ เชชเชฐ เช†เช—เชณ เชตเชงเซ€เชถเซเช‚. เช…เชจเซ‡ เชญเซ‚เชฒเชถเซ‹ เชจเชนเซ€เช‚ เช•เซ‡ เชฆเซ€เชชเชชเชพเชตเชฒเซ‹เชต เชชเชพเชธเซ‡ เช›เซ‡ เชซเซ‹เชฐเชฎ - เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เช…เชจเซ‡ เชฎเซ‹เชกเชฒ เชธเช‚เชฌเช‚เชงเชฟเชค เชคเชฎเชพเชฐเชพ เชชเซเชฐเชถเซเชจเซ‹ เชชเซ‚เช›เซ‹. เชคเชฎเชพเชฐเชพ เชงเซเชฏเชพเชจ เชฌเชฆเชฒ เช†เชญเชพเชฐ!

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹