Մեքենայի ուսուցման ցանկացած նախագծի համար հիմնական խնդիրն է նախապես մշակել տվյալները՝ նախքան դրանք նեյրոնային ցանցին մատակարարելը: Եթե ​​վերցնենք 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՝ համացանցային չորեքշաբթի: