Մեքենայի ուսուցման ցանկացած նախագծի համար հիմնական խնդիրն է նախապես մշակել տվյալները՝ նախքան դրանք նեյրոնային ցանցին մատակարարելը: Եթե վերցնենք Computer Vision-ի օրինակը, ապա գորշ գույնի պատկերը վերածվում է 2D զանգվածի: Համակարգիչները գործ ունեն թվերի հետ, և այդ պատճառով մենք պատկերը վերածում ենք 2D զանգվածի: Այսպիսով, անհրաժեշտ է, որ տվյալները, որոնք այս դեպքում նախադասություններ են, վերածենք թվերի, դա այն է, ինչ մենք կսովորենք այս հոդվածում:
Հոդվածի հիմնական շարժառիթը Տեքստի դասակարգման համար նախադասությունների մշակումն է: Դուք կարող եք անդրադառնալ նախորդ հոդվածներին SpiderՄեքենայական ուսուցման մասին, այստեղ:
Սկսել
Մենք պատրաստվում ենք NumPy-ի և Pandas-ի հետ միասին օգտվել մի քանի հայտնի փաթեթներից, որոնք կոչվում են NLTK և Spacy: Ահա որոշ ռեսուրսներ.
Ներմուծել փաթեթներ
Tokenization
Նախադասությունը բաժանված է բառերի ցանկի: Մենք նախ պետք է նախադասություն դարձնենք, որը ոչ այլ ինչ է, քան նախադասությունը բառերի ցանկի բաժանելը: Դրա համար մենք պատրաստվում ենք օգտագործել Python փաթեթը, որը կոչվում է NLTK:
dtf փոփոխականը պանդաների DataFrame օբյեկտ է, որը պետք է պահի արդյունքը յուրաքանչյուր քայլից հետո: Tokenization-ից հետո DataFrame օբյեկտը dtf ունի հետևյալ տեսքը.
Դադարեցրեք բառերը
Բազմաթիվ բառեր կան, որոնք նախադասությունից հանելու դեպքում իրենց իմաստը չի փոխվում։ Դրանք կոչվում են Ստոպ բառեր:
Դիտարկենք օրինակ.
A sentence with stop words: This article is boring. The same sentence after removing the stop words: article boring.
Տվյալների չափը նվազեցնելու համար մենք պետք է հեռացնենք Stop բառերը: NLTK-ն ունի մի քանի հայտնի Stop բառերի ցանկ: Ստորև բերված ծածկագիրը ցույց է տալիս, թե ինչպես հեռացնել Stop բառերը նախադասությունից:
dtf:
Լեմատիկացում
Կան մի քանի բառեր, որոնք ունեն ընդհանուր արմատ բառ: Եկեք օրինակ վերցնենք, դիտարկենք «խաղաց» և «խաղում» բառերը, այս երկու բառերն էլ ունեն «խաղալ» ընդհանուր արմատ բառը: Մենք բոլոր բառերը փոխակերպում ենք իրենց արմատական բառերին մի գործընթացի միջոցով, որը կոչվում է Լեմմատիզացիա: Ստորև բերված ծածկագիրը նույնն է ցույց տալիս:
dtf:
Բառերի քանակ, նիշերի քանակ և բառերի միջին երկարություն
Հաջորդ կարևոր հատկանիշը, որը պետք է արդյունահանվի, նախադասության մեջ բառերի և նախադասության նիշերի քանակն է և միջին_բառի_երկարությունը, որը ստացվում է նիշերի քանակը բաժանելով բառերի քանակին:
dtf:
Անվանված անձի ճանաչում
Named Entity-ի ճանաչումն օգտագործվում է բառերը պիտակավորելու համար՝ հիմնված դասերի նախապես սահմանված հավաքածուի վրա: Եթե «Ջոնը ԱՄՆ-ում է» նախադասությունը սնվում է որպես մուտքագրում, ապա «John» բառը պիտակավորված է որպես «անձ» և «ԱՄՆ-ըըպիտակավորված է որպես«Տեղ»: Ինչպե՞ս դա կարող է օգտակար լինել տեքստային տվյալները թվերի վերածելու մեր նպատակին: Եկեք օրինակ բերենք «Google-ը հսկայական է» նախադասությունը: Google-ը պիտակավորված է որպես «Կազմակերպություն», չկա այլ բառ, որը տեղավորվում է նախապես սահմանված դասերի մեջ: Դրանով ավելացվում է «ORG» անունով սյունակ, և արժեքը նախադասության մեջ «ORG» դասակարգված բառի քանակն է, մեր դեպքում արժեքը 1.
Ահա նախապես սահմանված դասերի հավաքածուի ցանկը.
dtf:
Առայժմ մեր արդյունահանված հատկանիշներն են.
Սա կարող է փոխակերպվել 2D NumPy զանգվածի՝ օգտագործելով DataFrame մեթոդը .to_numpy(): Առաջին նախադասության հատկանիշի վեկտորն ունի հետևյալ տեսքը.
[ 2, 10, 5.0, 0.0, 1.0 ]
Բառի վեկտոր
Այս գործընթացում յուրաքանչյուր բառ վերածվում է վեկտորի: Սա արվում է NLTK-ի ֆունկցիայի միջոցով: Այնուհետև մենք կարող ենք միավորել այս բոլոր վեկտորները՝ ձևավորելով մեկ մեծ վեկտոր, որը ներկայացնում է նախադասություն: Բայց NLTK-ն վեկտորացնում է միայն ընդհանուր բայերն ու գոյականները: Հետևաբար, նախադասությունից առաջ անհրաժեշտ է հեռացնել հատուկ գոյականները: Յուրաքանչյուր նախադասություն կարող է ունենալ տարբեր թվով բառեր, հետևաբար վեկտորը, որը ներկայացնում է որոշակի նախադասություն, կարող է տարբեր լինել մեկ այլ վեկտորի երկարությամբ: Այս խնդրի դեմ պայքարելու համար օգտագործվում է PCA կոչվող ալգորիթմը: PCAօգնում է նվազեցնել վեկտորի երկարությունը սահմանված երկարությանը:
Ահա կոդի օրինակ՝ «գնդակ խաղալ» լեմմատիզացված նախադասությունը վեկտորացնելու համար: Հենց որ հասնենք նախադասության վեկտորացված տարբերակին, մենք այն կապում ենք գոյություն ունեցող հատկանիշի վեկտորի հետ:
Ահա և վերջ, վերջնական հատկանիշի վեկտորը կարող է սնվել նեյրոնային ցանց՝ տեքստը դասակարգելու համար:
Տղաներ, կհանդիպենք մեկ այլ հոդվածով, մինչ այդ, ուրախ եմ սովորելու:
Այս հոդվածը հրապարակված է որպես ML Series մաս Spider Research and Development Club, NIT Trichy՝ համացանցային չորեքշաբթի: