డెవలపర్‌ల కోసం డీప్‌పావ్‌లోవ్: #1 NLP సాధనాలు మరియు చాట్‌బాట్ సృష్టి

అందరికి వందనాలు! మేము సహజ భాషా ప్రాసెసింగ్ (నేచురల్ లాంగ్వేజ్ ప్రాసెసింగ్ లేదా కేవలం NLP)కి సంబంధించిన ఆచరణాత్మక సమస్యలను పరిష్కరించడానికి అంకితమైన కథనాల శ్రేణిని తెరుస్తున్నాము మరియు ఓపెన్ సోర్స్ లైబ్రరీని ఉపయోగించి డైలాగ్ ఏజెంట్‌లను (చాట్‌బాట్‌లు) సృష్టిస్తున్నాము. డీప్ పావ్లోవ్, ఇది MIPT లాబొరేటరీ ఆఫ్ న్యూరల్ సిస్టమ్స్ మరియు డీప్ లెర్నింగ్‌లో మా బృందంచే అభివృద్ధి చేయబడుతోంది. విస్తృత శ్రేణి డెవలపర్‌లకు డీప్‌పావ్‌లోవ్‌ను పరిచయం చేయడం మరియు మెషిన్ లెర్నింగ్ మరియు గణితంలో పీహెచ్‌డీలో లోతైన జ్ఞానం లేకుండా మీరు అనువర్తిత NLP సమస్యలను ఎలా పరిష్కరించవచ్చో చూపించడం సిరీస్ యొక్క ప్రధాన లక్ష్యం.

NLP టాస్క్‌లలో టెక్స్ట్ యొక్క సెంటిమెంట్‌ను నిర్ణయించడం, పేరు పెట్టబడిన ఎంటిటీలను అన్వయించడం, సంభాషణకర్త మీ బాట్ నుండి ఏమి కోరుకుంటున్నారో నిర్ణయించడం: పిజ్జాను ఆర్డర్ చేయండి లేదా నేపథ్య సమాచారాన్ని పొందండి మరియు మరెన్నో ఉన్నాయి. మీరు NLP టాస్క్‌లు మరియు పద్ధతుల గురించి మరింత చదువుకోవచ్చు ఇక్కడ.

ఈ కథనంలో, అదనపు కాన్ఫిగరేషన్ లేదా శిక్షణ లేకుండా ఉపయోగించడానికి సిద్ధంగా ఉన్న ముందస్తు శిక్షణ పొందిన NLP మోడల్‌లతో REST సర్వర్‌ను ఎలా అమలు చేయాలో మేము మీకు చూపుతాము.

డెవలపర్‌ల కోసం డీప్‌పావ్‌లోవ్: #1 NLP సాధనాలు మరియు చాట్‌బాట్ సృష్టి

DeepPavlov యొక్క సంస్థాపన

ఇక్కడ మరియు క్రింద, Linux కోసం సూచనలు ఇవ్వబడతాయి. Windows కోసం, మా చూడండి డాక్యుమెంటేషన్

  • ప్రస్తుత మద్దతు ఉన్న పైథాన్ వెర్షన్‌తో వర్చువల్ వాతావరణాన్ని సృష్టించండి మరియు సక్రియం చేయండి:
    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 కంటెంట్‌తో 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లో, ఆర్గ్యుమెంట్‌లు పేరు పెట్టబడ్డాయి, వాటి పేర్లు ఇన్‌కమింగ్ డిక్షనరీ యొక్క కీలు. చాలా సందర్భాలలో, ఆర్గ్యుమెంట్ అనేది ప్రాసెస్ చేయవలసిన వచనం. నమూనాల ద్వారా అందించబడిన వాదనలు మరియు విలువల గురించి మరింత సమాచారం డాక్యుమెంటేషన్ యొక్క మోడల్స్ విభాగంలో చూడవచ్చు డీప్ పావ్లోవ్

ఉదాహరణలో, రెండు స్ట్రింగ్‌ల జాబితా ఆర్గ్యుమెంట్ 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"]
]

పారాఫ్రేజ్ డిటెక్షన్

రెండు వేర్వేరు పాఠాలు ఒకే అర్థాన్ని కలిగి ఉన్నాయో లేదో నిర్ణయించడం. మోడల్ కాన్ఫిగరేషన్: స్టాండ్_పారాఫ్రేసర్_రు

అభ్యర్థన:

{
  "text_a": [
    "Город погружается в сон, просыпается Мафия.",
    "Президент США пригрозил расторжением договора с Германией."
  ],
  "text_b": [
    "Наступает ночь, все жители города пошли спать, а преступники проснулись.",
    "Германия не собирается поддаваться угрозам со стороны США."
  ]
}

ఫలితంగా:

[
  [1],
  [0]
]

అన్ని అవుట్-ఆఫ్-ది-బాక్స్ డీప్‌పావ్‌లోవ్ మోడల్‌ల ప్రస్తుత జాబితాను ఎల్లప్పుడూ కనుగొనవచ్చు ఇక్కడ.

తీర్మానం

ఈ కథనంలో, మేము డీప్‌పావ్‌లోవ్ API మరియు బాక్స్ వెలుపల అందించబడిన లైబ్రరీ యొక్క కొన్ని టెక్స్ట్ ప్రాసెసింగ్ సామర్థ్యాలతో పరిచయం పొందాము. ఏదైనా NLP టాస్క్ కోసం, టాస్క్ యొక్క సబ్జెక్ట్ ఏరియా (డొమైన్)కి సంబంధించిన డేటా సెట్‌లో మోడల్‌కు శిక్షణ ఇచ్చినప్పుడు ఉత్తమ ఫలితం సాధించబడుతుందని గుర్తుంచుకోవాలి. అదనంగా, మరిన్ని నమూనాలు, సూత్రప్రాయంగా, అన్ని పరిస్థితులకు శిక్షణ పొందలేవు.

కింది కథనాలలో మేము లైబ్రరీ యొక్క అదనపు సెట్టింగ్‌లను పరిశీలిస్తాము, డాకర్ నుండి డీప్‌పావ్‌లోవ్‌ను ప్రారంభించాము, ఆపై మేము శిక్షణా నమూనాలకు వెళ్తాము. మరియు DeepPavlov కలిగి ఉన్నారని మర్చిపోవద్దు ఫోరమ్ - లైబ్రరీ మరియు నమూనాలకు సంబంధించి మీ ప్రశ్నలను అడగండి. మీరు ఆసక్తి చూపినందుకు ధన్యవాదములు!

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి