Tabiiy tillarga ishlov berish qiziqarli!

Kompyuterlar inson tilini qanday tushunadilar

Ushbu maqola NLP-da davom etadigan seriyalarning bir qismidir: 1-qism, 2-qism, 3-qism, 4-qism. Shuningdek, ushbu maqolaning o'quvchi tomonidan tarjima qilingan versiyasini in da o'qishingiz mumkin.

Devning yangilanishi: Men ushbu maqolalar asosida yangi kitob yozdim! Bu nafaqat mening barcha maqolalarimni kengaytiradi va yangilaydi, balki juda ko'p minglab yangi tarkibga va ko'plab kodlash loyihalariga ega. Hozir tekshirib ko'ring!

Kompyuterlar elektron jadvallar va ma'lumotlar bazalari jadvallari kabi tuzilgan ma'lumotlar bilan ishlashda juda yaxshi. Ammo biz odamlar odatda jadvalda emas, balki so'zlarda gaplashamiz. Bu kompyuterlar uchun baxtsizdir.

Afsuski, biz tarixning alternativ versiyasida yashamaymiz, unda barcha ma'lumotlar tuzilgan.

Dunyoda juda ko'p ma'lumot mavjud emas - ingliz yoki boshqa inson tilidagi xom matn. Qanday qilib biz kompyuterni tarkibiy bo'lmagan matnni tushunishimiz va undan ma'lumotlarni chiqarib olishimiz mumkin?

Tabiiy tillarga ishlov berish yoki NLP bu kompyuterlarga inson tillarini tushunish va qayta ishlash imkoniyatini berishga qaratilgan AIning quyi sohasidir. Keling, NLP qanday ishlashini ko'rib chiqamiz va Python-dan foydalanib, xom-ashyodan ma'lumotlarni chiqarib yuboradigan dasturlarni yozishni o'rganamiz!

Eslatma: Agar NLP qanday ishlashi haqida qayg'urmasangiz va shunchaki biron bir kodni kesib olishni xohlasangiz, "Pythonda NLP quvur liniyasini kodlash" bo'limiga o'ting.

Kompyuterlar tilni tushuna oladimi?

Kompyuterlar atrofida ekan, dasturchilar ingliz tilini tushunadigan dasturlarni yozishga harakat qilishdi. Sababi ravshan - odamlar minglab yillar davomida yozib kelishgan va agar kompyuter barcha ma'lumotlarni o'qib tushunsa, bu juda foydali bo'ladi.

Kompyuterlar hanuzgacha ingliz tilini odamlarnikiday tushunmaydilar - lekin ular allaqachon ko'p narsani amalga oshirishlari mumkin! Ba'zi cheklangan joylarda siz NLP bilan nima qila olsangiz, sehr kabi ko'rinadi. Siz o'zingizning loyihalaringizga NLP texnikasini qo'llash orqali ko'p vaqtni tejashingiz mumkin.

Va bundan ham yaxshisi, NLP-ning eng so'nggi yutuqlariga spaCy, tekstika va nevralkore kabi ochiq manbali Python kutubxonalari orqali osongina kirish mumkin. Pitonning bir nechta satrlari bilan nima qila olasiz?

Matndan ma'noni ajratish qiyin

Ingliz tilini o'qish va tushunish jarayoni juda murakkab - va ingliz tilida mantiqiy va izchil qoidalarga rioya qilinmasligi xayolga ham kelmaydi. Masalan, ushbu yangiliklar sarlavhasi nimani anglatadi?

"Atrof-muhitni tartibga soluvchi organlar tadbirkorga noqonuniy ko'mir yoqish oqibatida panjara ortida."

Tartibga soluvchi organlar tadbirkorga ko'mirni noqonuniy yoqish to'g'risida savol bermoqdami? Yoki regulyator tom ma'noda biznes egasini pishiradimi? Ko'rib turganingizdek, ingliz tilini kompyuter bilan tahlil qilish juda qiyin bo'ladi.

Mashinani o'rganishda murakkab narsalarni qilish odatda quvur liniyasini qurishni anglatadi. G'oya shundan iboratki, sizning muammolaringizni juda kichik qismlarga ajratish va keyin har bir kichik qismni alohida-alohida hal qilish uchun mashina yordamida o'rganish. Keyin bir-birlariga oziqlanadigan bir nechta mashina o'rganish modellarini zanjirlab, siz juda murakkab narsalarni qilishingiz mumkin.

Va aynan biz NLP uchun ishlatadigan strategiyamiz. Biz ingliz tilini tushunish jarayonini kichik qismlarga ajratamiz va ularning har biri qanday ishlashini ko'rib chiqamiz.

Bosqichma-bosqich, NLP quvurini qurish

Vikipediyadan bir parchani ko'rib chiqamiz:

London Angliya va Buyuk Britaniyaning poytaxti va eng gavjum shahri. Buyuk Britaniya orolining janubi-sharqidagi Temza daryosida joylashgan London ikki ming yillardan beri katta aholi punkti bo'lib kelgan. Uni Londinium deb nomlagan rimliklar asos solgan.
(Manba: Vikipediyaning "London" maqolasi)

Ushbu xatboshida bir nechta foydali ma'lumotlar mavjud. Agar kompyuter ushbu matnni o'qib, Londonning shahar ekanligini, London Angliyada joylashganligini, Londonni Rimliklar tomonidan o'rnatilishini va hokazolarni tushunsa yaxshi bo'lar edi. Ammo u erga borish uchun biz avval kompyuterimizga yozma tilning asosiy tushunchalarini o'rgatishimiz va keyin u erdan yuqoriga ko'tarilishimiz kerak.

1-qadam: Hukm segmenti

Quvur liniyasidagi birinchi qadam - bu matnni alohida jumlalarga ajratish. Bu bizga quyidagilarni beradi:

  1. "London Angliya va Buyuk Britaniyaning poytaxti va eng gavjum shahri."
  2. "Buyuk Britaniya orolining janubi-sharqidagi Temza daryosida joylashgan London, ikki ming yillardan beri katta aholi punkti bo'lgan."
  3. "Bu rimliklar tomonidan Londinium deb nomlangan."

Ingliz tilidagi har bir jumlani alohida fikr yoki g'oya deb taxmin qilishimiz mumkin. Bitta jumlani tushunishdan ko'ra bitta jumlani tushunish uchun dastur yozish osonroq bo'ladi.

Centence Segmentation modelini kodlash, tinish belgilarini ko'rganda, jumlalarni ajratish kabi sodda bo'lishi mumkin. Ammo zamonaviy NLP quvurlari, odatda hujjat toza formatlashtirilmasa ham ishlaydigan yanada murakkab texnikadan foydalanadi.

2-qadam: Word Tokenizatsiya

Endi biz hujjatlarimizni jumlalarga ajratdik, ularni birma-bir qayta ishlashimiz mumkin. Hujjatimizning birinchi jumlasidan boshlaylik:

"London Angliya va Buyuk Britaniyaning poytaxti va eng gavjum shahri."

Bizning quvur liniyamizdagi keyingi qadam bu jumlani alohida so'zlar yoki belgilarga bo'lishdir. Bunga tokenizatsiya deyiladi. Natijada:

"London", "bo'ladi", "poytaxt", "va", "ko'p", "gavjum", "shahar", "of", "Angliya", "va", "va", "birlashgan" "," Shohlik ",". "

Tokenizatsiya ingliz tilida oson. Agar ular orasida bo'sh joy bo'lsa, biz shunchaki so'zlarni ajratamiz. Shuningdek, biz tinish belgilarini alohida token sifatida ko'rib chiqamiz, chunki tinish belgilarining ham ma'nosi bor.

3-qadam: Har bir token uchun nutq qismlarini oldindan aytib berish

Keyinchalik, har bir tokenni ko'rib chiqamiz va uning nutq qismini - ot, fe'l, sifatlar va boshqalar bo'ladimi, aniqlashga harakat qilamiz. Har bir so'zning jumladagi ahamiyatini bilish, jumlada nima haqida gap ketayotganini tushunishga yordam beradi.

Biz buni har bir so'zni (va uning atrofidagi ba'zi qo'shimcha so'zlarni) oldindan tayyorlangan nutqni tasniflash modeliga kiritish orqali amalga oshirishimiz mumkin:

Nutqning qisman modeli dastlab unga millionlab inglizcha jumlalarni nutqning har bir qismi allaqachon belgilangan va shu xatti-harakatni ko'paytirishni o'rganish orqali o'rgatilgan.

Shuni yodda tutingki, model to'liq statistikaga asoslangan - aslida odamlar so'zlaridagi kabi so'zlar nimani anglatishini umuman tushunmaydi. U shunchaki ko'rgan jumlalari va so'zlari asosida nutqning qanday qismini taxmin qilishni biladi.

Jumlani to'liq qayta ko'rib chiqqandan so'ng bizda shunday natija bo'ladi:

Ushbu ma'lumot bilan biz allaqachon ba'zi bir asosiy ma'nolarni terishni boshlashimiz mumkin. Masalan, biz jumladagi otlar "London" va "poytaxt" ni o'z ichiga olganligini ko'rishimiz mumkin, shuning uchun jumlada London haqida gap ketayotgan bo'lishi mumkin.

4-qadam: Matnni lemmatizatsiya qilish

Ingliz tilida (va ko'pgina tillarda) so'zlar turli shakllarda paydo bo'ladi. Ushbu ikkita jumlaga qarang:

Menda pony bor edi.

Menda ikkita poni bor edi.

Ikkala jumla ham ot poni haqida gapiradi, ammo ular turli xil inflektsiyalardan foydalanmoqdalar. Kompyuterda matn bilan ishlashda har bir so'zning asosiy shaklini bilish foydalidir, shunda ikkala jumlada ham bir xil tushuncha haqida gap ketayotganini bilib olasiz. Aks holda "pony" va "ponies" satrlari kompyuterga mutlaqo boshqacha so'zlarga o'xshaydi.

NLPda biz ushbu jarayonni lemmatizatsiya deb ataymiz - jumladagi har bir so'zning eng asosiy shakli yoki lemmasini aniqlash.

Xuddi shu narsa fe'llarga tegishli. Fe'llarni ham ildiz, bog'lanmagan shaklini topish orqali lemmatizatsiyalashimiz mumkin. Shunday qilib, "Menda ikkita ponyon bor edi" "Menda [ikkita [ponyon]” bo'ladi.

Lemmatizatsiya odatda so'zlarning lemma shakllari jadvalini qidirish jadvaliga ega bo'lish orqali va ehtimol siz ilgari hech qachon ko'rmagan so'zlarni boshqarish bo'yicha ba'zi qoidalarga ega bo'lish orqali amalga oshiriladi.

Fe'lning ildiz shaklida lemmatizatsiya qo'shilganidan keyin bizning gapimiz quyidagicha:

Faqatgina "o'zgarish" ni "bo'lish" ga aylantirishimiz edi.

5-qadam: Stop so'zlarini aniqlash

Keyinchalik, jumladagi har bir so'zning ahamiyatini ko'rib chiqmoqchimiz. Ingliz tilida "va", "the" va "a" kabi tez-tez uchraydigan to'ldiruvchi so'zlar juda ko'p. Matn bo'yicha statistikani amalga oshirayotganda, bu so'zlar juda ko'p shovqinni keltirib chiqaradi, chunki ular boshqa so'zlarga qaraganda tez-tez ko'rinib turadi. Ba'zi NLP quvurlari ularni to'xtatish so'zlari sifatida belgilaydi, ya'ni har qanday statistik tahlilni amalga oshirishdan oldin filtrlashni xohlashingiz mumkin.

To'xtatilgan so'zlar bilan kulib yuborilgan bizning so'zlarimiz quyidagicha:

To'xtatish so'zlari odatda ma'lum to'xtash so'zlarining qattiq kodlangan ro'yxatini tekshirish orqali aniqlanadi. Ammo barcha dasturlar uchun mos keladigan to'xtatish so'zlarining standart ro'yxati yo'q. E'tibor bermaslik kerak bo'lgan so'zlar ro'yxati sizning ilovangizga qarab farq qilishi mumkin.

Masalan, agar siz rok-guruh qidiruv tizimini yaratayotgan bo'lsangiz, "The" so'zini e'tiborsiz qoldirmasligingiz kerak. Chunki "The" so'zi nafaqat ko'plab guruhlarning ismlarida uchraydi, 1980 yilda mashhur The The!

6-qadam: Bog'lanishni belgilash

Keyingi qadam, bizning jumlamizdagi barcha so'zlar bir-biri bilan qanday bog'liqligini aniqlashdir. Bu bog'liqlikni tahlil qilish deb ataladi.

Maqsad jumladagi har bir so'zga bitta ota-ona so'zini tayinlaydigan daraxtni qurishdir. Daraxtning ildizi jumlada asosiy fe'l bo'ladi. Parametr daraxti boshlanishi bizning jumlamiz uchun qanday ko'rinishga ega:

Ammo biz bir qadam oldinga borishimiz mumkin. Har bir so'zning ota-so'zini aniqlashdan tashqari, ushbu ikki so'z o'rtasidagi munosabatlar turini ham taxmin qilishimiz mumkin:

Ushbu novda daraxti bizga jumlaning predmeti "London" nomini va u "kapital" bilan "bo'lish" munosabati borligini ko'rsatadi. Biz nihoyat foydali narsani bilamiz - London poytaxt! Va agar biz ushbu jumla uchun to'liq tahlil qilingan daraxtga ergashsak (ko'rsatilgan narsadan tashqari), biz London Buyuk Britaniyaning poytaxti ekanligini ham bilib olamiz.

Biz ilgari nutq qismlarini mashinani o'rganish modelidan qanday bashorat qilganimiz singari, bog'liqlikni tahlil qilish ham so'zlarni mashinani o'rganish modeliga kiritish va natijani berish orqali ishlaydi. Ammo so'zlarga bog'liqlikni tahlil qilish ayniqsa murakkab vazifa bo'lib, uni batafsil tushuntirish uchun butun maqolani talab qiladi. Agar siz uning qanday ishlashini bilmoqchi bo'lsangiz, Metyu Xonnibalning "Ingliz tilida Python-ning 500 satrini tarjima qilish" maqolasini o'qishni boshlash uchun yaxshi joy.

Ammo 2015 yilda muallifning ushbu yondoshish odatiy holga aylanganligi haqidagi yozuviga qaramay, u aslida eskirgan va hatto undan foydalanmaydi. 2016 yilda Google Parsey McParseface ("Parsey McParseface") yangi qaramlik tahlilini chiqazdi, u sanoatning barcha sohalarida tez tarqaladigan yangi chuqur o'rganish usulidan foydalangan holda oldingi ko'rsatkichlardan ustun chiqdi. Bir yil o'tgach, ular yanada yangi bo'lgan ParseySaurus modelini chiqardilar, bu esa vaziyatni yanada yaxshilashga imkon berdi. Boshqacha qilib aytganda, tahlil qilish usullari hali ham izlanishlarning faol sohasi bo'lib, doimo o'zgarib va ​​takomillashib boradi.

Shuni ham yodda tutish kerakki, ko'plab inglizcha jumlalar noaniq va ularni tahlil qilish juda qiyin. Bunday hollarda, model taxmin qilinadigan jumlaning taxmin qilingan versiyasiga asoslanib taxmin qiladi, ammo u mukammal emas va ba'zida model xijolatli ravishda noto'g'ri bo'ladi. Ammo vaqt o'tishi bilan bizning NLP modellarimiz matnni aniq tahlil qilishda yaxshilanishni davom ettiradilar.

O'zingizning jumlangizga bog'liqlik tahlilini sinab ko'rmoqchimisiz? Bu erda spaCy jamoasi tomonidan ajoyib interfaol demo mavjud.

6b qadam: Ot birikmalarini topish

Xullas, biz jumladagi har bir so'zni alohida shaxs sifatida ko'rib chiqdik. Ammo ba'zida bitta g'oya yoki narsani anglatadigan so'zlarni birlashtirish maqsadga muvofiqdir. Bog'lanishni tahlil qilish daraxtidan olingan ma'lumotlardan barchasi bir xil gaplashadigan so'zlarni avtomatik ravishda birlashtirish uchun foydalanishimiz mumkin.

Masalan, buning o'rniga:

Buni yaratish uchun ot so'z birikmalarini guruhlashimiz mumkin:

Ushbu qadamni bajaramizmi yoki yo'qmi, yakuniy maqsadimizga bog'liq. Ammo ko'pincha so'zlarning sifati haqida qo'shimcha ma'lumotga ehtiyoj sezmasak va to'liq g'oyalarni chiqarishga ko'proq ahamiyat bermasak, jumlalarni soddalashtirishning tez va oson usulidir.

7-qadam: Nomlangan korxonani tan olish (NER)

Endi biz bu mashaqqatli ishlarning barchasini bajarganimizdan so'ng, oxir-oqibat sinf maktablari grammatikasidan chetga chiqib, aslida g'oyalarni to'plashni boshlashimiz mumkin.

Bizning jumlada quyidagi otlar mavjud:

Bu otlarning ba'zilari dunyodagi haqiqiy narsalarni taqdim etadi. Masalan, "London", "Angliya" va "Birlashgan Qirollik" xaritada jismoniy joylarni anglatadi. Buni aniqlay olsa yaxshi bo'lardi! Ushbu ma'lumot bilan biz NLP-dan foydalanib hujjatda ko'rsatilgan real dunyo joylarining ro'yxatini avtomatik ravishda olishimiz mumkin.

Nomlangan shaxsni tanib olish yoki NERning maqsadi bu otlarni aniq vakili bo'lgan real dunyo tushunchalari bilan aniqlash va belgilashdir. Bizning NER teglar modelimiz orqali har bir tokenni ishga tushirgandan so'ng bizning jumlamiz quyidagicha:

Ammo NER tizimlari shunchaki oddiy lug'atni qidirish bilan shug'ullanmaydi. Buning o'rniga, ular so'zning jumlada qanday paydo bo'lishi kontekstidan va so'zning qaysi turni anglatishini taxmin qilish uchun statistik modeldan foydalanmoqdalar. Yaxshi NER tizimi "Bruklin Deker" odam bilan "Bruklin" joyi o'rtasidagi farqni tushuntirishi mumkin.

Oddiy NER tizimi belgilashi mumkin bo'lgan ob'ektlarning ba'zi turlari:

  • Odamlarning ismlari
  • Kompaniya nomlari
  • Geografik joylashuvi (ham jismoniy, ham siyosiy)
  • Mahsulot nomlari
  • Sanalar va vaqtlar
  • Pul miqdori
  • Tadbirlar nomlari

NER-ning juda ko'p foydalanishi mavjud, chunki bu strukturalangan ma'lumotlarni matndan ajratib olishni osonlashtiradi. Bu NLP quvuridan qiymatni tezda olishning eng oson usullaridan biridir.

Nomlangan shaxsni tanib olishni o'zingiz sinab ko'rmoqchimisiz? Bu erda spaCy-dan yana bir ajoyib interfaol demo mavjud.

8-qadam: Murojaatlarni hal qilish

Ushbu nuqtada, biz allaqachon bizning jumlamizning foydali ifodasiga egamiz. Biz har bir so'z uchun nutq qismlarini, so'zlarning bir-biri bilan qanday bog'liqligini va qaysi so'zlar nomlangan ob'ektlar haqida gaplashayotganini bilamiz.

Biroq, bizda hali ham bitta katta muammo bor. Inglizcha olmoshlarga to'la - u, u va u kabi so'zlar. Bu har bir jumlada qayta-qayta nomlarni yozib olish o'rniga biz foydalanadigan yorliqlar. Odamlar ushbu so'zlarning kontekstga qarab nimani anglatishini kuzatib borishlari mumkin. Ammo bizning NLP modelimiz olmoshlar nimani anglatishini bilmaydi, chunki u bir vaqtning o'zida faqat bitta jumlani ko'rib chiqadi.

Hujjatimizning uchinchi jumlasiga qaraylik:

"Bu rimliklar tomonidan Londinium deb nomlangan."

Agar biz buni NLP quvurimiz bilan tahlil qilsak, biz "bu" Rimliklar tomonidan tashkil etilganligini bilib olamiz. "London" ni Rimliklar asos solganligini bilish juda foydali.

Ushbu jumlani o'qiyotgan odam, siz "bu" "London" degan ma'noni anglatishini tushunishingiz mumkin. Asosiy yo'nalish qarori maqsadi - bu xaritani jumlalardagi talaffuzlarni kuzatish orqali aniqlash. Xuddi shu shaxsga taalluqli barcha so'zlarni aniqlamoqchimiz.

"London" so'zi uchun bizning hujjatimizdagi asosiy moslashuvchanlik qarori natijasi:

Sintaksis daraxti va nomlangan ob'ekt to'g'risidagi ma'lumot bilan birlashtirilgan asosiy ma'lumotlar bilan biz ushbu hujjatdan juda ko'p ma'lumotlarni chiqarib olishimiz kerak!

Coreference rezolyutsiyasi - bu bizning quvur liniyamizdagi eng qiyin qadamlardan biri. Bu jumlalarni tahlil qilishdan ham qiyinroq. Yaqinda chuqur o'rganish sohasidagi yutuqlar yangi yondashuvlarni keltirib chiqardi, ammo u hali mukammal emas. Agar u qanday ishlashi haqida ko'proq bilmoqchi bo'lsangiz, shu erdan boshlang.

Birgalikda aniqlik bilan o'ynashni xohlaysizmi? Hugging Face-dan ushbu ajoyib mos yozuvlar namoyish qilish demosini tekshiring.

Pythonda NLP quvur liniyasini kodlash

Bizning to'liq NLP quvurimiz haqida qisqacha ma'lumot:

Axborotni aniqlashtirish - bu ixtiyoriy qadam bo'lib, u har doim ham amalga oshirilmaydi.

Voy, bu juda ko'p qadamlar!

Eslatma: Davom etishdan oldin, bu odatiy NLP quvuridagi qadamlar ekanligini eslatib o'tish kerak, lekin siz nima qilishni xohlaganingizga va NLP kutubxonangiz qanday amalga oshirilishiga qarab qadamlarni tashlab yoki qayta buyurtma berasiz. Masalan, spaCy kabi ba'zi kutubxonalar qaramlik tahlilining natijalaridan foydalanib, keyinchalik quvur liniyasida gaplarni segmentatsiya qilishadi.

Shunday qilib, biz ushbu quvur liniyasini qanday kodlaymiz? SpaCy kabi ajoyib piton kutubxonalari tufayli, u allaqachon bajarildi! Bosqichlar barchasi kodlangan va foydalanish uchun sizga tayyor.

Birinchidan, siz Python 3-ni allaqachon o'rnatgan deb hisoblasangiz, siz quyidagicha spaCy-ni o'rnatishingiz mumkin:

Keyin matnda NLP quvur liniyasini ishga tushirish kodi quyidagicha ko'rinadi:

Agar siz ushbu usulni ishlatsangiz, hujjatimizda aniqlangan ob'ektlar va ob'ektlar ro'yxatini olasiz:

London (GPE)
Angliya (GPE)
Birlashgan Qirollik (GPE)
Temza daryosi (FAC)
Buyuk Britaniya (GPE)
London (GPE)
ikki ming yillik (DATE)
Rimliklar (NORP)
Londinium (PERSON)

Ushbu kod kodlarining har biri nimani anglatishini qidirishingiz mumkin.

E'tibor bering, bu "Londinium" da xatoga yo'l qo'yadi va uni joy o'rniga insonning ismi deb o'ylaydi. Ehtimol, chunki o'quv ma'lumotlarida shunga o'xshash narsa yo'q edi va bu eng yaxshi taxminni yaratdi. Agar siz bunday noyob yoki ixtisoslashgan atamalarga ega matnni tahlil qilsangiz, nomlangan shaxsni aniqlash odatda biroz modellashtirishni talab qiladi.

Keling, ma'lumotlar skruberini yaratish uchun ob'ektlarni aniqlash g'oyasini olib, uni atrofga aylantiraylik. Aytaylik, siz yangi GDPR maxfiylik qoidalariga rioya qilmoqchisiz va sizda odamlarning ismi kabi shaxsiy ma'lumotlarga ega bo'lgan minglab hujjatlar mavjudligini aniqladingiz. Sizga hujjatlaringizdagi har qanday va barcha nomlarni olib tashlash vazifasi yuklatilgan.

Minglab hujjatlarni ko'rib chiqish va barcha ismlarni qo'l bilan o'zgartirishga urinish ko'p yillar talab qilishi mumkin edi. Ammo NLP bilan bu shabada. Mana bu oddiy skruber, u aniqlagan barcha nomlarni olib tashlaydi:

Agar siz uni ishlatsangiz, u kutilganidek ishlayotganini ko'rasiz:

1950 yilda [REDACTED] o'zining mashhur "Hisoblash mashinalari va intellekt" maqolasini nashr etdi. 1957 yilda [REDACTED]
Sintaktik tuzilmalar tilshunoslikda "universal grammatika", sintaktik tuzilmalar qoidalariga asoslangan tizimda inqilob qildi.

Faktlarni ajratib olish

SpaCy-ni qutidan tashqarida nima qilishingiz mumkin, bu juda ajoyib. Ammo, shuningdek, spaCy-dan olingan tahlil qilingan ma'lumotni yanada murakkab ma'lumotlarni olish algoritmlariga kirish sifatida foydalanishingiz mumkin. SpaCy-ning tepasida bir nechta umumiy ma'lumotlarni yig'ish algoritmlarini amalga oshiruvchi tekstika deb nomlangan piton kutubxonasi mavjud. Bu juda yaxshi boshlanish nuqtasi.

U bajaradigan algoritmlardan biri yarim tuzilgan bayonotni ajratib olish deb nomlanadi. Biz uni "London" va fe'l "bo'l" shakli bo'lgan oddiy iboralarni qidirish uchun ishlatishimiz mumkin. Bu bizga London haqidagi dalillarni topishda yordam beradi.

Mana, kod qanday ko'rinishda:

Va mana buni nashr etadi:

London haqida bilgan narsalarim:
 - Angliya va Buyuk Britaniyaning poytaxti va eng gavjum shahri.
- ikki ming yillik uchun katta aholi punkti.

Ehtimol, bu unchalik ta'sirchan emas. Ammo agar siz bitta kodni uchta jumlalar o'rniga butun Vikipediya maqolalaridagi matnda ishlatsangiz, yanada ta'sirchan natijaga erishasiz:

London haqida bilgan narsalarim:
 - Angliya va Buyuk Britaniyaning poytaxti va eng gavjum shahri
 - ikki ming yillik uchun katta aholi punkti
 - 1831 yildan 1925 yilgacha dunyodagi eng gavjum shahar
 - Angliyadagi eng katta shahar
 - hali ham juda ixcham
 - taxminan 1831 yildan 1925 yilgacha dunyodagi eng katta shahar
 - Birlashgan Qirollik hukumatining o'rni
 - toshqinga qarshi himoyasiz
 - 40 foizdan ortiq yashil maydon yoki ochiq suvli "dunyoning eng yashil shaharlaridan biri"
 - Evropa Ittifoqining eng gavjum shahri va poytaxti va Evropada ikkinchi eng zich shahar
 - dunyoning 19-chi eng yirik shahri va 18-chi eng yirik mintaqa
 - Xristian va ko'p sonli cherkovlarga ega, xususan London shahrida
 - shuningdek, yirik musulmon, hindu, sikx va yahudiy jamoalari yashaydi
 - shuningdek, 42 ​​hind ibodatxonasi mavjud
 - dunyo mulkining jurnali (2015) hisobotiga ko'ra dunyodagi so'nggi uch yil ichida eng qimmat ofis bozori
 - xalqaro moliya uchun eng muhim joylashuv sifatida dunyoning taniqli moliyaviy markazlaridan biri
 - TripAdvisor foydalanuvchilari reytingiga ko'ra dunyoning eng yaxshi shaharlari
 - dunyodagi eng gavjum shahar havo hududiga ega bo'lgan yirik xalqaro havo transporti markazi
 - Milliy temir yo'l tarmog'ining markazi, temir yo'l qatnovlarining 70 foizi Londonda boshlanadi yoki tugaydi
 - oliy ta`lim va tadqiqotning global global markazi va Evropadagi eng yirik oliy o'quv yurtlariga ega
 - dizaynerlar Vivienne Vestvud, Galliano, Stella Makkartni, Manolo Blaxnik, Jimmi Chu va boshqalar.
 - ko'plab adabiy asarlarning holati
 - Televizion mahsulotlarni ishlab chiqarish bo'yicha yirik markaz, shu qatorda BBC Televizion Markazi, Favvoralar studiyasi va London studiyalari
 - shuningdek, shahar musiqasi markazi
 - 35 ming akr maydonda jamoat bog'lari, o'rmonzor va bog'lar joylashgan "eng yashil shahar"
 - Angliya poytaxti emas, chunki Angliyaning o'z hukumati yo'q

Endi ishlar qiziqarli bo'lmoqda! Biz avtomatik ravishda to'plangan juda ta'sirli ma'lumot.

Qo'shimcha kredit olish uchun nevralkosf kutubxonasini o'rnatib, quvur liniyasiga Coreference Resolution qo'shib ko'ring. Bu sizga yana bir nechta dalillarni keltirib chiqaradi, chunki unda to'g'ridan-to'g'ri "London" haqida gapirishning o'rniga "u" haqida gapiradigan jumlalar paydo bo'ladi.

Biz yana nima qila olamiz?

SpaCy hujjatlari va matnli hujjatlar to'g'risidagi hujjatlarni ko'rib chiqib, siz tahlil qilingan matn bilan ishlash usullarining ko'plab misollarini ko'rasiz. Biz shu paytgacha ko'rgan narsalarimiz juda ozgina namunadir.

Yana bir amaliy misol: Tasavvur qiling, siz oxirgi misolda biz yig'ib bergan ma'lumotlardan foydalanib, dunyoning har bir shahri uchun foydalanuvchilarga ma'lumotlarni ko'rishga imkon beradigan veb-sayt yaratgansiz.

Agar veb-saytda qidirish xususiyati mavjud bo'lsa, Google kabi oddiy qidiruv so'rovlarini avtomatik to'ldirish yaxshi bo'lar edi:

Buning uchun biz foydalanuvchiga taklif qilishimiz mumkin bo'lgan tugallanishlar ro'yxati kerak. Ushbu ma'lumotlarni tezda yaratish uchun biz NLP-dan foydalanishimiz mumkin.

Hujjatdan tez-tez uchraydigan ot birikmalarini ajratib olishning bir usuli:

Agar siz buni London Vikipediyasida chop qilsangiz, siz quyidagicha natijaga erishasiz:

Westminster abbey
tabiiy tarix muzeyi
g'arbiy oxiri
sharqiy oxiri
paul sobori
qirollik albertlari zali
London metrosi
katta olov
Britaniya muzeyi
London ko'z
.... va boshqalar ....

Chuqurroq borish

Bu siz NLP bilan qila oladigan narsalarning arzimas ta'mi. Kelgusi xabarlarda, biz NLP kabi boshqa dasturlar va matnni tasniflash kabi narsalar haqida gaplashamiz.

Ammo shunga qadar, spaCy-ni o'rnating va uning atrofida o'ynashni boshlang! Yoki agar siz Python foydalanuvchisi bo'lmasangiz va boshqa NLP kutubxonasidan foydalansangiz, g'oyalar barchasini bir xil ishlashi kerak.

Ushbu maqola NLP haqida ketma-ketliklarning bir qismidir. Siz 2-qismga o'tishingiz mumkin.

Agar sizga ushbu maqola yoqqan bo'lsa, mening Machine Learning-ga yozilishni o'ylab ko'ring! axborot byulleteni:

Bundan tashqari, meni Twitter-da @ageitgey-da kuzatib borishingiz, to'g'ridan-to'g'ri elektron pochta orqali yuborishingiz yoki linkda topishingiz mumkin. Agar siz mashinangizni o'rganish bo'yicha sizga yoki jamoangizga yordam bera olsam, sizdan eshitishni istayman.