N-գրամ. Ներքին օպտիմիզացիայի բարելավում մրցակիցների օգնությամբ Տեսեք, թե ինչ է «N-gram»-ը այլ բառարաններում

Օգտագործելով N-գրամներ

N-գրամների ընդհանուր օգտագործումը

  • տվյալների արդյունահանում տիեզերքից Երկրի արբանյակային մի շարք պատկերներ հավաքելու համար, որպեսզի այնուհետև որոշվի, թե Երկրի կոնկրետ որ մասերն են պատկերված,
  • գենետիկական հաջորդականությունների որոնում,
  • գենետիկայի ոլորտում օգտագործվում են որոշելու համար, թե կոնկրետ որ կենդանատեսակից են հավաքվում ԴՆԹ-ի նմուշները,
  • համակարգչային սեղմման մեջ,
  • օգտագործելով N-գրամները, որպես կանոն, ինդեքսավորվում են ձայնի հետ կապված տվյալները։

N-գրամները լայնորեն կիրառվում են նաև բնական լեզվի մշակման մեջ։

N-գրամների օգտագործումը բնական լեզվի մշակման կարիքների համար

Բնական լեզվի մշակման ոլորտում N-գրամները հիմնականում օգտագործվում են հավանականական մոդելների վրա հիմնված կանխատեսումների համար։ N-gram մոդելը հաշվարկում է N-գրամի վերջին բառի հավանականությունը, եթե բոլոր նախորդները հայտնի են: Լեզվի մոդելավորման համար այս մոտեցումն օգտագործելիս ենթադրվում է, որ յուրաքանչյուր բառի տեսքը կախված է միայն նախորդ բառերից։

N-գրամների մեկ այլ կիրառություն է գրագողության հայտնաբերումը։ Եթե ​​տեքստը բաժանեք մի քանի փոքր հատվածների, որոնք ներկայացված են n-գրամներով, դրանք հեշտությամբ կարելի է համեմատել միմյանց հետ և այդպիսով ստանալ վերահսկվող փաստաթղթերի նմանության աստիճանը: N-գրամները հաճախ հաջողությամբ օգտագործվում են տեքստը և լեզուն դասակարգելու համար: Բացի այդ, դրանք կարող են օգտագործվել գործառույթներ ստեղծելու համար, որոնք թույլ են տալիս գիտելիքներ ստանալ տեքստային տվյալներից: Օգտագործելով N-գրամներ, կարելի է արդյունավետ կերպով գտնել սխալ գրված բառերը փոխարինող թեկնածուներ:

Google հետազոտական ​​նախագծեր

Google հետազոտական ​​կենտրոնները օգտագործել են N-gram մոդելները հետազոտությունների և մշակումների լայն շրջանակի համար: Դրանք ներառում են այնպիսի նախագծեր, ինչպիսիք են վիճակագրական թարգմանությունը մի լեզվից մյուսը, խոսքի ճանաչումը, ուղղագրության ուղղումը, տեղեկատվության արդյունահանումը և այլն: Այս նախագծերի նպատակների համար օգտագործվել են մի քանի տրիլիոն բառ պարունակող կորպորայի տեքստեր:

Google-ը որոշել է ստեղծել իր ուսումնական շենքը։ Նախագիծը կոչվում է Google teracorpus և պարունակում է 1,024,908,267,229 բառ՝ հավաքված հանրային կայքերից:

n-գրամների արդյունահանման մեթոդներ

Տարբեր խնդիրների լուծման համար N-գրամների հաճախակի օգտագործման պատճառով անհրաժեշտ է հուսալի և արագ ալգորիթմ՝ դրանք տեքստից հանելու համար։ Հարմար n-gram արդյունահանման գործիքը պետք է կարողանա աշխատել անսահմանափակ տեքստի չափի հետ, արագ աշխատել և արդյունավետ օգտագործել առկա ռեսուրսները: Տեքստից N-գրամներ հանելու մի քանի եղանակ կա։ Այս մեթոդները հիմնված են տարբեր սկզբունքների վրա.

Նշումներ

տես նաեւ


Վիքիմեդիա հիմնադրամ. 2010 թ .

  • n-tv
  • N-cadherin

Տեսեք, թե ինչ է «N-gram»-ը այլ բառարաններում.

    ԳՐԱՄ- (ֆրանսերեն gramme, հունարեն քերականական հատկանիշից): Ֆրանսիական միավոր. քաշը \u003d քաշը 1 խորանարդ սանտիմետր թորած ջուր \u003d 22,5 ռուս. բաժնետոմսեր. Ռուսերենում ներառված օտար բառերի բառարան. Չուդինով Ա.Ն., 1910. Քաշի չափման GRAM միավոր Ֆրանսիայում ... Ռուսաց լեզվի օտար բառերի բառարան

    գրամ- գրամ, սեռ. pl. գրամ և թույլատրելի (թվերից հետո բանավոր խոսքում) գրամ: Հարյուր գրամ (գրամ): Ի պաշտպանություն սեռի նոր ձևի։ case pl. գրամների քանակը պատրաստել է ռուսալեզու գրող Կ.Չուկովսկին: Ահա թե ինչ է նա գրել «Ապրել որպես կյանք» գրքում. Ժամանակակից ռուսերեն արտասանության և շեշտադրման դժվարությունների բառարան

    ԳՐԱՄ-ԳՐԱՄ, գրամ, ամուսին։ (հունարեն քերականական նշանից, տառից): Քաշի հիմնական միավորը մետրային համակարգում, որը հավասար է 1 խորանարդ սանտիմետր ջրի քաշին։ Մեկ գրամը կշռում է մոտ 1/400 ֆունտ: ❖ Գրամի ատոմ (ֆիզիկա) նյութի գրամների թիվը, որը հավասար է նրա ատոմային քաշին: ... ... Ուշակովի բացատրական բառարան

    գրամ-ռենտգեն- gram x-ray / n, gram x-ray / on, rod. pl. գրամ ռենտգեն և գրամ ռենտգեն... միաձուլվել. բացի. գծիկի միջոցով:

    գրամ- Գրամ, այս պարզ բառը չէր կարող տրվել սխալների բառարանում, եթե չլիներ երկու հանգամանք. Նախ, եթե ցանկանում եք ցուցադրել բացարձակապես ճիշտ լեզվով, ապա, գալով խանութ, ապշեցրեք վաճառողին ճիշտով. Կշռեք ինձ երկու հարյուր գրամ (ոչ ... ... Ռուսաց լեզվի սխալների բառարան

    ԳՐԱՄ-ԱՏՈՄ- ԳՐԱՄ ԱՏՈՄ, տարրի քանակություն, որի զանգվածը գրամներով հավասար է իր ԱՏՈՄԻ ԶԱՆԳՎԱԾԻՆ։ Այն փոխարինվեց SI միավորի մոլով: Օրինակ՝ ջրածնի ատոմի մեկ գրամը (H, ատոմային զանգված = 1) հավասար է մեկ գրամի։ b>ԳՐԱՄԻ ՀԱՄԱԺԱՐԺԱՐԱՐԸ, դրա քաշը գրամներով…… Գիտատեխնիկական հանրագիտարանային բառարան

    ԳՐԱՄ-ԳՐԱՄ, ախ, սեռ. pl. գրամ ու գրամ, ամուսին. Զանգվածի միավոր չափումների տասնորդական համակարգում՝ կիլոգրամի հազարերորդականը։ Ոչ մի ունցիա (ոչ) ոչինչ (խոսակցական) ընդհանրապես, ոչ բոլորովին: Այս մարդը (չունի) խիղճ ունի։ | կց. գրամ, օհ, օհ. Բացատրական ...... Օժեգովի բացատրական բառարան

    գրամ- բայց; pl. սեռ. գրամ և գրամ; մ [ֆրանս. gramme] Զանգվածի միավոր մետրային համակարգում, հազարերորդական կիլոգրամ: ◊ Չկա (մի) գրամ։ Ոչ բոլորովին, ոչ բոլորովին: Որում լ. ոչ մի ունցիա կեղծիք: Ոչ ոք խիղճ չունի։ * * * գրամ (ֆրանսիական ... Հանրագիտարանային բառարան

    Գրամ Զենոբ Թեոֆիլուս- (Gramme) (1826 1901), ինժեներ էլեկտրատեխնիկ։ Ծնվել է Բելգիայում, աշխատել է Ֆրանսիայում։ Ստացել է օղակաձև խարիսխով գործնական էլեկտրական գեներատորի արտոնագիր (1869 թ.)։ Հիմնել է էլեկտրական մեքենաների արդյունաբերական արտադրությունը։ * * * ԳՐԱՄ Զենոբ…… Հանրագիտարանային բառարան

    գրամ ատոմ- նյութի քանակը գրամներով, թվայինորեն հավասար է նրա ատոմային զանգվածին. Տերմինը խորհուրդ չի տրվում օգտագործել: SI-ում նյութի քանակությունն արտահայտվում է մոլերով։ * * * ԳՐԱՄ ԱՏՈՄ ԳՐԱՄ ԱՏՈՄ, նյութի քանակությունը գրամներով, թվով հավասար է նրա ատոմային զանգվածին (տես ... Հանրագիտարանային բառարան

    գրամ մոլեկուլ- նյութի քանակը գրամներով, թվայինորեն հավասար է նրա մոլեկուլային քաշին. Տերմինը խորհուրդ չի տրվում օգտագործել: SI-ում նյութի քանակությունն արտահայտվում է մոլերով։ * * * ԳՐԱՄԻ ՄՈԼԵԿՈՒԼ ԳՐԱՄ ՄՈԼԵԿՈՒԼ, նյութի քանակությունը գրամներով, թվով հավասար է իր ... ... Հանրագիտարանային բառարան

Իմաստային միջուկ

Կայքի ժամանակակից իրողություններում հաջողությամբ զարգացնելու և տեսանելիությունը բարձրացնելու համար անհրաժեշտ է անընդհատ ընդլայնել իմաստային միջուկը: Աճելու լավագույն միջոցներից մեկը մրցակցի հիմնաբառեր հավաքելն է:

Այսօր դժվար չէ ստանալ մրցակիցների իմաստաբանությունը, քանի որ. Կան բազմաթիվ ծառայություններ՝ և՛ վճարովի, և՛ անվճար:

Անվճար ցուցակ.

— megaindex.ru — Կայքի տեսանելիության գործիք

- xtool.ru - հայտնի ծառայություն, որը ցույց է տալիս նաև այն հիմնաբառերը, որոնց համար կայքը դասակարգված է

Վճարովի ցուցակ.

— spywords.ru — հարմար է Yandex-ի և Google-ի համար

- semrush.ru - կենտրոնացած է միայն Google-ի վրա

— prodvigator.ua — spywords.ru-ի ուկրաինական անալոգը

Ծառայություններից բացի, կարող եք նաև օգտագործել ձեռքով մեթոդ, որը հիմնված է վերնագիրը և նկարագրությունը n-գրամների բաժանելու վրա, ինչի արդյունքում ելքում ստացվում է արտահայտությունների լրացուցիչ ցուցակ:

N-գրամ - n տարրի հաջորդականություն. Գործնականում N-գրամն ավելի տարածված է որպես բառերի շարք: Երկու հաջորդական տարրերի հաջորդականությունը հաճախ կոչվում է դիագրամ, կոչվում է երեք տարրերից բաղկացած հաջորդականություն եռագիր. Առնվազն չորս կամ ավելի տարրեր նշանակված են որպես N-գրամ, N-ը փոխարինվում է հաջորդական տարրերի քանակով:

Քայլ առ քայլ դիտարկեք այս տեխնիկան.

- Վերբեռնեք մրցակիցների անվանումը (նկարագրությունը): Կարելի է անել Screaming Frog SEO-ով:

- Տեքստային խմբագրիչում մենք մաքրում ենք ստացված ցանկը խոսքի սպասարկման մասերից, կետադրական նշաններից և այլ աղբից: Ես օգտագործում եմ «որոնում և փոխարինում» ֆունկցիան տեքստային խմբագրիչի վեհ տեքստում (տաք ստեղնը՝ ctrl+H), օգտագործելով կանոնավոր արտահայտություններ.

- Ընտրեք ցանկալի n-գրամը և սահմանեք հաճախականությունը առնվազն մեկի: Լավագույն տարբերակը եռյակն է և 4 գրամը.

- Ստանում ենք հետևյալ արդյունքը.

Սյունակհաշվելցույց է տալիս կրկնությունների քանակըn-գրամ, սյունակհաճախականությունը - հաճախականությունըn- գրամ:

Արտահայտությունների ցանկը ստանալուց հետո մենք պետք է վերլուծենք այն և ընտրենք համապատասխան հիմնաբառեր՝ իմաստային միջուկը ընդլայնելու համար: Մանրամասներին կարող եք ծանոթանալ մեր բլոգի համապատասխան բաժնում:

Խմբավորման հարցումներ

Շատ կարևոր է հասկանալ, թե ինչպես է խմբավորվում մրցակիցների իմաստային միջուկը, քանի որ սա օգնում է ճիշտ բաշխել հիմնական արտահայտությունները կայքի էջերում:

Դա անելու համար, հարցումների ամբողջական ցանկը կազմելուց հետո, մենք պետք է ստանանք համապատասխան էջեր և մրցակիցների դիրքեր (կարող եք օգտվել seolib.ru ծառայությունից), այնուհետև համեմատել մեր խմբավորման հետ: Եթե ​​տեսնում եք, որ մրցակիցը լավ դիրքեր ունի և միևնույն ժամանակ նրա խմբավորումը տարբերվում է մերից (օրինակ՝ մրցակցի հարցումները բաշխվում են տարբեր էջերում, մինչդեռ մերը նույն հարցումները ունի մեկ էջում), ապա պետք է ուշադրություն դարձնեք. սա և վերանայեք ձեր կայքի վայրէջքի էջերը:

Դիտարկենք պայմանական կայքի և նրա մրցակցի խմբավորումը համեմատելու փոքրիկ օրինակ։

Ինչպես երևում է աղյուսակից, site.ru-ն ունի մեկ վայրէջք էջ բոլոր հիմնաբառերի համար: Մրցակցի մոտ տարբեր էջեր դասակարգվում են նույն հարցումների համար և զբաղեցնում են TOP կամ TOP դիրքերը մոտ: Ելնելով դրանից՝ կարող ենք եզրակացնել, որ site.ru-ում խմբավորումը վերանայման կարիք ունի, մասնավորապես, անհրաժեշտ է ստեղծել առանձին էջ առանցքային արտահայտությունների համար՝ «ֆասադ» բառով։

Տեքստի որակը

Առաջին և ամենակարևորը, որին պետք է ուշադրություն դարձնել մրցակիցների տեքստերը վերլուծելիս, ոչ թե քանակական բաղադրիչն է (երևույթների քանակը, տեքստի երկարությունը և այլն), այլ որակական կամ իմաստայինը. որքանով է օգտակար տեղեկատվությունը, ինչ է առաջարկում մրցակիցը և ինչպես է նա դա անում:

Դիտարկենք մի քանի օրինակ։

Ենթադրենք, դուք ծաղիկներ եք առաքում և տեքստի գլխավոր էջում երաշխավորում եք դրանց թարմությունը: Օրինակ, այսպես.

Ծաղիկների առաքման ծառայությունկայք. enերաշխավորում է ծաղկեփնջերի անվտանգությունը նույնիսկ ցուրտ սեզոնում:

Ահա մի օրինակ մրցակիցներից մեկից.

Մեզնից ձեռնտու է պատվիրել բուրավետ կոմպոզիցիաներ, քանի որ մենք երաշխավորում ենք 100% գումարի վերադարձի երաշխիք, եթե ծաղիկների թարմությունը կասկածի տակ է։

Մրցակցի երաշխիքը ապահովված է փողով, որն ավելի կարևոր է, քան վերացական երաշխիքը:

Դիտարկենք մեկ այլ օրինակ՝ առցանց խանութի «կերամիկական սալիկներ» կատեգորիայի էջի տեքստը.

Այս տեքստը ոչ մի օգտակար իմաստային բեռ չի կրում, պինդ ջուր: Ամենայն հավանականությամբ, այն անձը, ով եկել է կայք և կայացնում է գնումների որոշում, ցանկանում է իմանալ ապրանքի առավելություններն ու հնարավոր կոնֆիգուրացիաները, փոխարենը նա ստանում է անիմաստ նիշերի հավաքածու:

Հիմա եկեք նայենք մրցակցի տեքստին.

Այս տեքստն ավելի օգտակար է, քանի որ լակոնիկ կերպով հաղորդում է սալիկների միջև եղած տարբերությունները և օգնում ձեզ հասկանալ, թե ինչպես ընտրել ճիշտը:

Այսպիսով, համեմատելով մրցակիցների տեքստերը ձեր տեքստերի հետ, դուք կարող եք շատ օգտակար տեղեկություններ ստանալ, որոնք կօգնեն պատճենահանողներին TOR-ը կազմելիս:

Տեքստերի համապատասխանությունը

Շարունակելով տեքստերի որակի թեման՝ չի կարելի չանդրադառնալ դրանց արդիականությանը։ Այսօր, որպեսզի տեքստը ակտուալ լինի, բավարար չէ միայն հիմնաբառեր ներառել։ Էջի ակտուալությունը մեծացնելու և միևնույն ժամանակ տեքստը սպամ չդարձնելու համար պետք է օգտագործել թեմային առնչվող բառեր։

Տեքստի համապատասխանությունը հարցմանը գնահատելիս որոնողական համակարգը վերլուծում է ոչ միայն հիմնաբառերի առկայությունը, այլև լրացուցիչ բառերը՝ այդպիսով որոշելով տեքստի իմաստը: Օրինակ, եթե տեքստ ենք գրում փղի մասին, ապա կարելի է համարել հարակից բառերը՝ «բունջ», «ժանիքներ», «բնություն», «կենդանաբանական այգի»: Եթե ​​շախմատի խաղաքարի մասին տեքստը «փիղ» է, ապա այս բառերը կլինեն՝ «ֆիգուր», «չեկ», «թագուհի» և այլն։

Դուք կարող եք ստանալ ամենահարմար բառերի ցանկը ձեր կարիքների համար մրցակիցների տեքստերում: Դա անելու համար դուք պետք է կատարեք հետևյալ քայլերը.

— Մենք պատճենում ենք բոլոր տեքստերը TOP-10-ից ցանկալի բարձր հաճախականության հարցման համար տարբեր տեքստային ֆայլերի մեջ:

- Մենք հեռացնում ենք խոսքի սպասարկման մասերը, կետադրական նշանները և թվերը տեքստերից (նախապես դիտարկված):

- Բառերը շարել տողում - օգտագործել «որոնել և փոխարինել» ֆունկցիան կանոնավոր արտահայտություններով: Փոխարինեք տարածությունը \n-ով:

- Հաջորդը, դուք պետք է բոլոր բառաձևերը բերեք սովորական բառարանի ձևի (լեմմա): Դա անելու համար կարող եք օգտվել https://tools.k50project.ru/lemma/ ծառայությունից: Դաշտում մուտքագրեք բառերի ցանկը յուրաքանչյուր ֆայլից առանձին և սեղմեք «lemmetize and output as a csv table» կոճակը: Արդյունքը պետք է լինի 10 ֆայլ՝ լեմետացված բառերով:

- Յուրաքանչյուր ֆայլում մենք հեռացնում ենք կրկնօրինակ բառերը:

- Միավորել բառերը ֆայլերից մեկ ցուցակում:

— Այժմ մենք պետք է ստեղծենք հաճախականության բառարան: Դա անելու համար ավելացրեք ստացված ցանկը https://tools.k50project.ru/lemma/ ծառայությանը և սեղմեք «կառուցել հաճախականության բառարան CSV-ի տեսքով»:

- Մեր բառերի ցանկը պատրաստ է.

Եթե ​​հաճախականությունը 10 է, ապա այս բառը օգտագործվել է բոլոր 10 կայքերում, եթե 8, ապա միայն 8-ում և այլն։ Խորհուրդ ենք տալիս օգտագործել ամենահաճախ հանդիպող բառերը, սակայն հազվագյուտ բառերից կարելի է գտնել հետաքրքիր լուծումներ։

Այսքան պարզ ձևով դուք կարող եք ստանալ թեմատիկ բառերի ցանկ՝ TOR կազմող հեղինակների համար:

Ինչպես տեսնում եք, մրցակիցները տեղեկատվության շատ կարևոր աղբյուր են, որը կարող է օգնել ձեզ ավելի լավ օպտիմալացնել ձեր կայքերը: Այս հոդվածում ես շատ եմ անդրադարձել բոլոր ասպեկտներից, և ապագայում կշարունակեմ գրել այն մասին, թե ինչն է օգտակար և ինչպես կարող եք սովորել ձեր մրցակիցներից:

Բաժանորդագրվել տեղեկագրինԱյս ալգորիթմները նախագծված են նախկինում անհայտ տեքստի վրա որոնելու համար և կարող են օգտագործվել, օրինակ, տեքստային խմբագրիչներում, փաստաթղթեր դիտողներում կամ վեբ բրաուզերներում՝ էջի ներսում որոնելու համար: Նրանք չեն պահանջում տեքստի նախնական մշակում և կարող են աշխատել տվյալների շարունակական հոսքի հետ:

Գծային որոնում

Տրված չափման պարզ հաջորդական կիրառում (օրինակ՝ Լևենշտեյնի չափանիշը) մուտքագրված տեքստի բառերին։ Սահմանաչափով չափիչ օգտագործելիս այս մեթոդը թույլ է տալիս հասնել օպտիմալ կատարողականության: Բայց, միևնույն ժամանակ, այնքան ավելի կ, այնքան երկար է ավելանում գործարկման ժամանակը։ Ասիմպտոտիկ ժամանակի գնահատում - O(kn).

Bitap (նաև հայտնի է որպես Shift-Or կամ Baeza-Yates-Gonnet և դրա փոփոխությունը Wu-Manber-ից)

Ալգորիթմ bitapև դրա տարբեր փոփոխություններն առավել հաճախ օգտագործվում են անորոշ որոնման համար՝ առանց ինդեքսավորման: Դրա տատանումն օգտագործվում է, օրինակ, unix utility agrep-ում, որն իրականացնում է գործառույթներ, որոնք նման են ստանդարտ grep-ին, բայց աջակցում է որոնման հարցումում առկա սխալներին և նույնիսկ սահմանափակ հնարավորություններ է տալիս կանոնավոր արտահայտություններ օգտագործելու համար:

Առաջին անգամ այս ալգորիթմի գաղափարն առաջարկվել է քաղաքացիների կողմից Ռիկարդո Բաեզա-ՅատեսԵվ Գաստոն Գոնեթ, հրապարակելով համապատասխան հոդված 1992 թ.
Ալգորիթմի սկզբնական տարբերակը վերաբերում է միայն նիշերի փոխարինմանը և իրականում հաշվարկում է հեռավորությունը Համինգ. Բայց մի փոքր ուշ սուն ուուԵվ Ուդի Մանբերառաջարկել է այս ալգորիթմի փոփոխություն՝ հեռավորությունը հաշվարկելու համար Լևենշտեյն, այսինքն. բերեց ներդիրների և ջնջումների աջակցություն և դրա հիման վրա մշակեց agrep կոմունալ ծրագրի առաջին տարբերակը:






Արդյունքի արժեքը

Որտեղ կ- սխալների քանակը, ժ- նիշերի ինդեքս, ս x - նիշերի դիմակ (դիմակում առանձին բիթերը գտնվում են հարցումում նշված նիշի դիրքերին համապատասխանող դիրքերում):
Հարցմանը համապատասխանելը կամ չհամընկնելը որոշվում է ստացված R վեկտորի ամենավերջին բիթով:

Այս ալգորիթմի բարձր արագությունն ապահովվում է հաշվարկների բիթային զուգահեռականությամբ. մեկ գործողության ընթացքում հնարավոր է հաշվարկներ կատարել միաժամանակ 32 կամ ավելի բիթերի վրա:
Միևնույն ժամանակ, չնչին իրականացումը աջակցում է 32-ից ոչ ավելի երկարությամբ բառերի որոնմանը: Այս սահմանափակումը որոշվում է ստանդարտ տեսակի լայնությամբ: միջ(32-բիթանոց ճարտարապետության վրա): Կարող եք նաև օգտագործել մեծ չափսերի տեսակներ, բայց դա կարող է որոշ չափով դանդաղեցնել ալգորիթմը:

Չնայած այն հանգամանքին, որ այս ալգորիթմի ասիմպտոտիկ գործարկման ժամանակը O(kn)նույնն է, ինչ գծային մեթոդը, շատ ավելի արագ է երկար հարցումներով և սխալների քանակով կավելի քան 2.

Փորձարկում

Թեստավորումն իրականացվել է 3,2 միլիոն բառից բաղկացած տեքստի վրա, միջին բառի երկարությունը եղել է 10:
Ճշգրիտ որոնում
Որոնման ժամանակը: 3562 ms
Որոնել Լևենշտեյնի չափման միջոցով
Որոնման ժամանակը ժամը k=2 5728 ms
Որոնման ժամանակը ժամը k=5 8385 ms
Որոնում՝ օգտագործելով Bitap ալգորիթմը՝ Wu-Manber փոփոխություններով
Որոնման ժամանակը ժամը k=2 5499 ms
Որոնման ժամանակը ժամը k=5 5928 ms

Ակնհայտ է, որ չափիչի օգտագործմամբ պարզ որոնումը, ի տարբերություն Bitap ալգորիթմի, մեծապես կախված է սխալների քանակից: կ.

Այնուամենայնիվ, երբ խոսքը վերաբերում է մեծ քանակությամբ անփոփոխ տեքստի որոնմանը, որոնման ժամանակը կարող է զգալիորեն կրճատվել նման տեքստի նախնական մշակման միջոցով, որը նաև կոչվում է. ինդեքսավորում.

Անորոշ որոնման ալգորիթմներ ինդեքսավորմամբ (անցանց)

Ինդեքսավորմամբ բոլոր անորոշ որոնման ալգորիթմների առանձնահատկությունն այն է, որ ինդեքսը կառուցված է սկզբնաղբյուր տեքստից կամ տվյալների բազայի գրառումների ցանկից կազմված բառարանի համաձայն:

Այս ալգորիթմներն օգտագործում են տարբեր մոտեցումներ խնդիրը լուծելու համար. նրանցից ոմանք օգտագործում են կրճատում ճշգրիտ որոնման համար, մյուսները օգտագործում են չափման հատկությունները տարբեր տարածական կառույցներ կառուցելու համար և այլն:

Նախ, առաջին քայլում սկզբնաղբյուր տեքստից կառուցվում է բառարան, որը պարունակում է բառեր և դրանց դիրքերը տեքստում: Նաև կարող եք հաշվել բառերի և արտահայտությունների հաճախականությունը՝ որոնման արդյունքների որակը բարելավելու համար:

Ենթադրվում է, որ ինդեքսը, ինչպես բառարանը, ամբողջությամբ բեռնված է հիշողության մեջ:

Բառարանի մարտավարական և տեխնիկական բնութագրերը.

  • Աղբյուրի տեքստ - 8,2 գիգաբայթ նյութեր Մոշկովի գրադարանից (lib.ru), 680 միլիոն բառ;
  • Բառարանի չափը - 65 մեգաբայթ;
  • Բառերի քանակը՝ 3,2 միլիոն;
  • Բառի միջին երկարությունը 9,5 նիշ է;
  • Արմատի միջին քառակուսի բառի երկարությունը (կարող է օգտակար լինել որոշ ալգորիթմներ գնահատելիս) - 10.0 նիշ;
  • Այբուբեն - մեծատառ A-Z, առանց E (որոշ գործողություններ պարզեցնելու համար): Ոչ այբբենական նշաններ պարունակող բառերը ներառված չեն բառարանում։
Բառարանի չափի կախվածությունը տեքստի ծավալից խիստ գծային չէ. մինչև որոշակի ծավալ, ձևավորվում է հիմնական բառի շրջանակ, որը տատանվում է 15% -ից 500 հազար բառից մինչև 5% 5 միլիոնի դեպքում, այնուհետև կախվածությունը մոտենում է գծային: , դանդաղորեն նվազում է և հասնում 0,5% 680 միլիոն բառի դեպքում: Աճի հետագա պահպանումը մեծ մասամբ ապահովվում է հազվագյուտ բառերով։

Նմուշի ընդլայնման ալգորիթմ

Այս ալգորիթմը հաճախ օգտագործվում է ուղղագրության ստուգման համակարգերում (այսինքն՝ ուղղագրության ստուգիչներ), որտեղ բառարանի չափը փոքր է, կամ որտեղ արագությունը հիմնական չափանիշը չէ։
Այն հիմնված է մշուշոտ որոնման խնդիրը ճշգրիտ որոնման խնդրին նվազեցնելու վրա:

Բնօրինակ հարցումից կառուցվում է «սխալ» բառերի մի շարք, որոնցից յուրաքանչյուրի համար այնուհետև կատարվում է ճշգրիտ որոնում բառարանում:

Դրա գործարկման ժամանակը մեծապես կախված է սխալների k թվից և A այբուբենի չափից, իսկ երկուական բառարանի որոնում օգտագործելու դեպքում հետևյալն է.

Օրինակ, երբ k = 1իսկ ռուսերեն այբուբենի 7 երկարության բառերը (օրինակ՝ «Կոկորդիլոս») սխալ բառերի հավաքածուն կլինի մոտ 450 չափի, այսինքն՝ անհրաժեշտ կլինի կատարել 450 բառարանային հարցում, ինչը միանգամայն ընդունելի է։
Բայց արդեն ժամը k = 2Նման հավաքածուի չափը կկազմի ավելի քան 115 հազար տարբերակ, ինչը համապատասխանում է փոքր բառարանի ամբողջական որոնմանը կամ մեր դեպքում 1/27-ին, և, հետևաբար, գործարկման ժամանակը բավականին մեծ կլինի: Միևնույն ժամանակ, չպետք է մոռանալ, որ այս բառերից յուրաքանչյուրի համար անհրաժեշտ է ճշգրիտ համապատասխանություն փնտրել բառարանում։

Առանձնահատկություններ:
Ալգորիթմը կարող է հեշտությամբ փոփոխվել՝ կամայական կանոնների համաձայն «սխալ» տարբերակներ ստեղծելու համար, և ավելին, չի պահանջում բառարանի նախնական մշակում և, համապատասխանաբար, լրացուցիչ հիշողություն։
Հնարավոր բարելավումներ.
Հնարավոր է գեներացնել ոչ թե «սխալ» բառերի ամբողջ շարքը, այլ միայն նրանցից, որոնք, ամենայն հավանականությամբ, կհայտնվեն իրական իրավիճակում, օրինակ՝ բառեր՝ հաշվի առնելով ընդհանուր ուղղագրական կամ տպագրական սխալները:

Այս մեթոդը գոյություն ունի երկար ժամանակ և ամենաշատ կիրառվողն է, քանի որ դրա իրականացումը չափազանց պարզ է և ապահովում է բավականին լավ կատարում: Ալգորիթմը հիմնված է սկզբունքի վրա.
«Եթե A բառը համընկնում է B բառի հետ՝ հաշվի առնելով մի քանի սխալներ, ապա հավանականության բարձր աստիճանով նրանք կունենան N երկարությամբ առնվազն մեկ ընդհանուր ենթատող»:
N երկարությամբ այս ենթատողերը կոչվում են N գրամ:
Ինդեքսավորման ժամանակ բառը բաժանվում է նման N-գրամների, այնուհետև այս բառը ներառվում է այս N-գրամներից յուրաքանչյուրի ցուցակներում։ Որոնման ժամանակ հարցումը նույնպես բաժանվում է N-գրամների, որոնցից յուրաքանչյուրի համար հաջորդաբար որոնվում է նման ենթատող պարունակող բառերի ցանկը։

Գործնականում առավել հաճախ օգտագործվում են եռագրամները՝ 3 երկարության ենթատողերը: N-ի ավելի մեծ արժեք ընտրելը հանգեցնում է բառի նվազագույն երկարության սահմանափակմանը, որի դեպքում սխալի հայտնաբերումն արդեն հնարավոր է:

Առանձնահատկություններ:
N-gram ալգորիթմը չի գտնում բոլոր հնարավոր սխալ գրված բառերը: Եթե ​​վերցնենք, օրինակ, VOTKA բառը և այն տարրալուծենք եռագրերի` IN Տ KA → VO ՏՄԱՍԻՆ Տ TO Տ KA - տեսնում եք, որ դրանք բոլորն էլ պարունակում են T սխալը: Այսպիսով, «VODKA» բառը չի գտնվի, քանի որ այն չի պարունակում այս եռագրամներից որևէ մեկը և չի ընկնի դրանց համապատասխան ցուցակներում: Այսպիսով, որքան կարճ է բառի երկարությունը և այն պարունակում է ավելի շատ սխալներ, այնքան մեծ է հավանականությունը, որ այն չի ընկնի հարցման N-գրամներին համապատասխանող ցուցակներում և չի լինի արդյունքում:

Միևնույն ժամանակ, N-gram մեթոդը լրիվ հնարավորություն է թողնում կամայական հատկություններով և բարդությամբ ձեր սեփական չափորոշիչները օգտագործելու համար, բայց դրա համար պետք է վճարեք. այն օգտագործելիս դեռ պետք է հաջորդաբար թվարկել բառարանի մոտ 15%-ը, ինչը բավականին մեծ է: շատ մեծ բառարանների համար:

Հնարավոր բարելավումներ.
Հնարավոր է N-գրամների հեշ աղյուսակները բաժանել ըստ բառերի երկարության և բառի N գրամի դիրքի (փոփոխություն 1): Ինչպես որոնված բառի և հարցման երկարությունը չի կարող տարբերվել ավելի քան կ, իսկ N գրամի դիրքերը մեկ բառում կարող են տարբերվել ոչ ավելի, քան k-ով։ Այսպիսով, անհրաժեշտ կլինի ստուգել միայն բառի մեջ այս N-գրամի դիրքին համապատասխանող աղյուսակը, ինչպես նաև ձախ կողմում գտնվող k աղյուսակները և աջ կողմում գտնվող k աղյուսակները, այսինքն. Ընդամենը 2k + 1հարակից սեղաններ.

Դուք կարող եք ավելի փոքրացնել սկանավորման համար անհրաժեշտ հավաքածուի չափը՝ աղյուսակները բաժանելով ըստ բառի երկարության և նմանապես նայելով միայն հարևան աղյուսակները: 2k + 1աղյուսակներ (փոփոխություն 2):

Այս ալգորիթմը նկարագրված է Լ.Մ.Բոյցովի հոդվածում: Ստորագրության հաշինգ. Այն հիմնված է բառի «կառուցվածքի» բավականին ակնհայտ ներկայացման վրա՝ բիթերի տեսքով, որն օգտագործվում է որպես հեշ (ստորագրություն) հեշ աղյուսակում։

Ինդեքսավորման ժամանակ յուրաքանչյուր բառի համար հաշվարկվում են նման հեշեր, և բառարանի բառերի ցանկի համապատասխանությունը այս հեշին մուտքագրվում է աղյուսակում։ Այնուհետև որոնման ընթացքում հարցման համար հաշվարկվում է հեշ և դասավորվում են բոլոր հարևան հեշերը, որոնք տարբերվում են սկզբնականից ոչ ավելի, քան k բիթով: Այս հեշերից յուրաքանչյուրի համար որոնվում է համապատասխան բառերի ցանկը:

Հեշի հաշվարկման գործընթացը. հեշի յուրաքանչյուր բիթին հատկացվում է այբուբենի նիշերի խումբ: Բիթ 1 դիրքի վրա ես in a hash նշանակում է, որ բնօրինակ բառը պարունակում է նիշ i-րդայբուբենի խմբեր. Բառի մեջ տառերի հերթականությունը բացարձակապես անտեղի է։

Մեկ նիշի հեռացումը կամ չի փոխի հեշ արժեքը (եթե բառում դեռ կան նույն այբուբենի խմբի նիշերը), կամ այս խմբին համապատասխան բիթը կփոխվի 0-ի: Նույն կերպ, երբ տեղադրվի, կամ մեկ բիթը կփոխվի: դրվի 1-ի, հակառակ դեպքում փոփոխություններ չեն լինի: Նիշերը փոխարինելիս ամեն ինչ մի փոքր ավելի բարդ է. հեշը կարող է կամ ընդհանրապես մնալ անփոփոխ, կամ կարող է փոխվել 1 կամ 2 դիրքերում: Փոխարկելիս փոփոխություններ ընդհանրապես տեղի չեն ունենում, քանի որ հեշ կառուցելիս նիշերի հերթականությունը, ինչպես նշվեց ավելի վաղ, հաշվի չի առնվում: Այսպիսով, k սխալներն ամբողջությամբ ծածկելու համար հարկավոր է առնվազն փոխել bit է hash.

Գործարկման ժամանակը, միջինում, k «անավարտ» (ներդիրներ, ջնջումներ և փոխադրումներ, ինչպես նաև փոխարինումների մի փոքր մաս) սխալներով.

Առանձնահատկություններ:
Քանի որ մեկ նիշը փոխարինելիս կարող են միանգամից փոխվել երկու բիթ, ալգորիթմը, որն իրականացնում է, օրինակ, միաժամանակ 2 բիթից ոչ ավելի աղավաղում, իրականում չի արտադրի արդյունքների ամբողջ քանակությունը՝ բացակայության պատճառով: բառերի զգալի մասը (կախված հեշի չափի և այբուբենի հարաբերակցությունից) երկու փոխարինմամբ (և որքան մեծ է հեշի չափը, այնքան ավելի հաճախ նիշերի փոխարինումը կհանգեցնի միանգամից երկու բիթերի խեղաթյուրման և այնքան քիչ ամբողջական արդյունքը կլինի): Բացի այդ, այս ալգորիթմը թույլ չի տալիս նախածանցային որոնումներ:

BK ծառեր

Ծառեր Բուրկհարդ-Քելլերմետրիկ ծառեր են, նման ծառերի կառուցման ալգորիթմները հիմնված են եռանկյունի անհավասարությունը բավարարելու մետրիկի հատկության վրա.

Այս հատկությունը թույլ է տալիս չափիչներին ձևավորել կամայական չափման մետրային տարածություններ: Նման մետրային տարածությունները պարտադիր չէ Էվկլիդեսյան, այսպես, օրինակ, չափումները ԼևենշտեյնԵվ Դամերաու-Լևենշտեյնձեւը ոչ էվկլիդեսյանտարածություն. Այս հատկությունների հիման վրա դուք կարող եք կառուցել տվյալների կառուցվածք, որը որոնում է այնպիսի մետրային տարածության մեջ, որը Barkhard-Keller ծառերն են:

Բարելավումներ:
Դուք կարող եք օգտագործել որոշ չափումների հնարավորությունը՝ սահմանափակմամբ հեռավորությունը հաշվելու համար՝ սահմանելով վերին սահման, որը հավասար է գագաթի հետնորդների առավելագույն հեռավորության գումարին և ստացված հեռավորությանը, ինչը մի փոքր կարագացնի գործընթացը.

Փորձարկում

Փորձարկումն իրականացվել է նոութբուքի վրա՝ Intel Core Duo T2500 (2GHz/667MHz FSB/2MB), 2Gb RAM, OS - Ubuntu 10.10 Desktop i686, JRE - OpenJDK 6 Update 20:

Փորձարկումն իրականացվել է՝ օգտագործելով Դամերաու-Լևենշտեյն հեռավորությունը և սխալների քանակը k = 2. Ցուցանիշի չափը նշված է բառարանի հետ միասին (65 ՄԲ):

Ինդեքսի չափը՝ 65 ՄԲ
Որոնման ժամանակը: 320ms / 330ms
Արդյունքների ամբողջականությունը՝ 100%

N-գրամ (բնօրինակ)
Ինդեքսի չափը՝ 170 ՄԲ
Ինդեքսի ստեղծման ժամանակը՝ 32 վ
Որոնման ժամանակը: 71ms / 110ms
Արդյունքների ամբողջականությունը՝ 65%
N-գրամ (փոփոխություն 1)
Ինդեքսի չափը՝ 170 ՄԲ
Ինդեքսի ստեղծման ժամանակը՝ 32 վ
Որոնման ժամանակը: 39ms / 46ms
Արդյունքների ամբողջականությունը՝ 63%
N-գրամ (փոփոխություն 2)
Ինդեքսի չափը՝ 170 ՄԲ
Ինդեքսի ստեղծման ժամանակը՝ 32 վ
Որոնման ժամանակը: 37ms / 45ms
Արդյունքների ամբողջականությունը՝ 62%

Ինդեքսի չափը՝ 85 ՄԲ
Ինդեքսի ստեղծման ժամանակը՝ 0.6 վ
Որոնման ժամանակը: 55ms
Արդյունքների ամբողջականությունը՝ 56,5%

BK ծառեր
Ինդեքսի չափը՝ 150 ՄԲ
Ինդեքսի ստեղծման ժամանակը՝ 120 վ
Որոնման ժամանակը: 540ms
Արդյունքների ամբողջականությունը՝ 63%

Ընդամենը

Ինդեքսավորված մշուշոտ որոնման ալգորիթմների մեծ մասը իրականում ենթագծային չեն (այսինքն՝ ունեն ասիմպտոտիկ գործարկման ժամանակ O (log n)կամ ավելի ցածր), և դրանց գործողության արագությունը սովորաբար ուղղակիորեն կախված է Ն. Այնուամենայնիվ, բազմաթիվ բարելավումներ և ճշգրտումներ թույլ են տալիս հասնել բավականաչափ կարճ ժամանակի նույնիսկ բառարանների շատ մեծ ծավալների դեպքում:

Կան նաև շատ ավելի բազմազան և անարդյունավետ մեթոդներ, որոնք հիմնված են, ի թիվս այլ բաների, տարբեր տեխնիկայի և տեխնիկայի հարմարեցման վրա, որոնք արդեն օգտագործվում են տվյալ առարկայի համար: Այս մեթոդներից է նախածանցային ծառերի (Trie) հարմարեցումը մշուշոտ որոնման խնդիրներին, որոնք ես թողեցի առանց ուշադրության՝ ցածր արդյունավետության պատճառով: Բայց կան նաև օրիգինալ մոտեցումների վրա հիմնված ալգորիթմներ, օրինակ՝ ալգորիթմը Մաաս-Նովակ, որը, թեև ունի ենթագծային ասիմպտոտիկ գործարկման ժամանակ, բայց չափազանց անարդյունավետ է նման ժամանակի գնահատման հետևում թաքնված հսկայական հաստատունների պատճառով, որոնք դրսևորվում են ցուցիչի հսկայական չափի տեսքով:

Անորոշ որոնման ալգորիթմների գործնական օգտագործումը իրական որոնողական համակարգերում սերտորեն կապված է հնչյունական ալգորիթմների, բառապաշարի ալգորիթմների հետ՝ ընդգծելով նույն բառի տարբեր բառային ձևերի հիմնական մասը (օրինակ, նման գործառույթը տրամադրվում է Snowball-ի և Yandex mystem-ի կողմից), ինչպես. ինչպես նաև վարկանիշ՝ հիմնված վիճակագրական տեղեկատվության վրա կամ օգտագործելով բարդ բարդ չափումներ:

  • Լևենշտեյնի հեռավորությունը (կտրման և նախածանցի տարբերակով);
  • Դամերաու-Լևենշտեյն հեռավորությունը (կտրման և նախածանցի տարբերակով);
  • Bitap ալգորիթմ (Shift-OR / Shift-AND Wu-Manber փոփոխություններով);
  • Նմուշի ընդլայնման ալգորիթմ;
  • N-gram մեթոդ (բնօրինակ և փոփոխություններով);
  • Ստորագրության հեշավորման մեթոդ;
  • BK- ծառեր.
Ես ուզում էի ծածկագիրը դարձնել դյուրըմբռնելի, և միևնույն ժամանակ բավական արդյունավետ օգտագործել գործնական օգտագործման համար: JVM-ից վերջին հյութերը քամելը իմ առաջադրանքների մեջ չէր: վայելել.

Հարկ է նշել, որ այս թեմայի ուսումնասիրության ընթացքում ես հանգեցի իմ որոշ զարգացումների, որոնք թույլ են տալիս ինձ նվազեցնել որոնման ժամանակը մեծության կարգով ՝ ինդեքսի չափի չափավոր աճի և որոշակի սահմանափակման պատճառով: չափումների ընտրության ազատություն. Բայց դա բոլորովին այլ պատմություն է:


Սահմանում Օրինակ Կիրառումներ Ն-գրամ լեզվի մոդելի ստեղծում. n-գրամ հավանականության հաշվարկ. վերապատրաստման կորպուսի սակավության վերացում o Հավելյալ հարթեցում o Witten-Bell զեղչում o Good-Turing զեղչում o Katzs Backoff o Ջնջված ինտերպոլացիա Գնահատում n-gram լեզվի մոդելը` օգտագործելով էնտրոպիա Բովանդակություն


N-գրամ (անգլ. N-gram) որոշ հաջորդականության N տարրերի ենթահաջորդականություն։ Դիտարկենք բառերի հաջորդականությունը: Միգրամ կատու, շուն, ձի,... Բիգրամ փոքրիկ կատու, մեծ շուն, ուժեղ ձի,... Տրիգրամ փոքրիկ կատուն ուտում է, մեծ շունը հաչում է, ձիու ուժեղ վազքը,... Սահմանում


Կիրառական առաջադրանքների օրինակներ Խոսքի ճանաչում. Որոշ բառեր տարբեր ուղղագրությամբ արտասանվում են նույնը: Խնդիրը համատեքստում ճիշտ բառ ընտրելն է: Տրված թեմայի վերաբերյալ տեքստերի ստեղծում: Օրինակ՝ Yandex.Abstracts. Որոնեք իմաստային սխալներ: Նա փորձում է շտկել՝ շարահյուսական առումով, ճիշտ է, իմաստային առումով՝ ոչ։ Նա փորձում է պարզել - ճիշտ է: պարզելու փորձը շատ ավելի հաճախ է հանդիպում անգլերեն տեքստերում, քան պարզելու փորձը, ինչը նշանակում է, որ եթե վիճակագրությունը հասանելի է, կարող ես գտնել և վերացնել այս տեսակի սխալը:


n-գրամների լեզվական մոդելի ստեղծում Թվարկված կիրառական խնդիրները լուծելու համար անհրաժեշտ է ստեղծել N-գրամների լեզվական մոդել։ Մոդել ստեղծելու համար անհրաժեշտ է՝ 1. Հաշվել ն-գրամների հավանականությունները ուսումնական կորպուսում։ 2. Կեղևի նոսրության խնդիրը շտկեք հակաալիզացման մեթոդներից մեկով: 3. Գնահատե՛ք n-գրամների ստացված լեզվական մոդելի որակը՝ օգտագործելով էնտրոպիան:


N-գրամների հավանականության հաշվարկ (1) Ուսուցման կորպուսում որոշակի n-գրամներ առաջանում են տարբեր հաճախականություններով: Յուրաքանչյուր n-գրամի համար մենք կարող ենք հաշվել, թե քանի անգամ է այն տեղի ունենում կորպուսում: Ստացված տվյալների հիման վրա կարելի է կառուցել հավանականական մոդել, որը հետագայում կարող է օգտագործվել որոշ թեստային կորպուսում n-գրամների հավանականությունը գնահատելու համար։


N-գրամների հավանականության հաշվարկ (2) Դիտարկենք օրինակ. Թող կորպուսը կազմված լինի մեկ նախադասությունից. Նրանք խնջույք արեցին լողավազանի մոտ, հետո պառկեցին խոտերի վրա և նայեցին աստղերին: Ընտրենք n-գրամ: Unigrams. Նրանք, picknicked, by, … Digrams. Նրանք picnicked, picknicked by, by the, … Trigrams They picknicked by, picknicked by the, the pool, …


N-գրամների հավանականության հաշվարկ (3) Այժմ հնարավոր է հաշվել n-գրամ: Բոլոր ընտրված բի- և եռագրամները կորպուսում տեղի են ունենում մեկ անգամ: Բոլոր միգրամները, բացառությամբ the բառի, նույնպես հանդիպում են մեկ անգամ: The բառը հանդիպում է երեք անգամ: Այժմ, երբ մենք գիտենք, թե քանի անգամ է տեղի ունենում յուրաքանչյուր n-գրամ, մենք կարող ենք կառուցել n-գրամների հավանականական մոդել: Միգրամների դեպքում u բառի հավանականությունը կարելի է հաշվարկել բանաձևով. Օրինակ՝ բառի համար հավանականությունը կլինի 3/16 (քանի որ կորպուսում կա 16 բառ, որից 3-ը the բառն է) . Ու բառի հայտնաբերման թիվը մարզչական կորպուսում Նրանք պիկն են արել լողավազանի մոտ, հետո պառկել խոտածածկի վրա և նայել աստղերին:


1, հավանականությունը փոքր-ինչ այլ կերպ է դիտարկվում: Դիտարկենք բիգրամի դեպքը. թող անհրաժեշտ լինի հաշվարկել լողավազանի բիգրամի հավանականությունը: Եթե ​​յուրաքանչյուր բիգրամ բառ դիտարկենք որպես ինչ-որ իրադարձություն, ապա հավատալով" title="(!LANG:N-gram probability calculation (4) n-գրամների համար, որտեղ n>1, հավանականությունը հաշվարկվում է մի փոքր այլ կերպ: Դիտարկենք բիգրամների դեպքը. թող անհրաժեշտ լինի հաշվարկել հավանականության դիգրամը լողավազան Եթե դիգրամի յուրաքանչյուր բառ դիտարկենք որպես ինչ-որ իրադարձություն, ապա հավատալով." class="link_thumb"> 9 !} N-գրամների հավանականության հաշվարկ (4) n-գրամների համար, որտեղ n>1, հավանականությունը հաշվարկվում է փոքր-ինչ այլ կերպ: Դիտարկենք բիգրամի դեպքը. թող անհրաժեշտ լինի հաշվարկել լողավազանի բիգրամի հավանականությունը: Եթե ​​յուրաքանչյուր բիգրամի բառ դիտարկենք որպես ինչ-որ իրադարձություն, ապա իրադարձությունների մի շարքի հավանականությունը կարելի է հաշվարկել բանաձևով. Այսպիսով, բիգրամի հավանականությունը ավազան է՝ 1, հավանականությունը փոքր-ինչ այլ կերպ է դիտարկվում: Դիտարկենք բիգրամի դեպքը. թող անհրաժեշտ լինի հաշվարկել լողավազանի բիգրամի հավանականությունը: Եթե ​​յուրաքանչյուր բիգրամ բառ համարենք որպես ինչ-որ իրադարձություն, ապա հավատալով «> 1-ին, ապա հավանականությունը փոքր-ինչ այլ կերպ է դիտարկվում: Դիտարկենք բիգրամի դեպքը. թող անհրաժեշտ լինի հաշվել բիգրամի հավանականությունը լողավազան: Եթե յուրաքանչյուր բիգրամ բառ դիտարկենք որպես ինչ-որ իրադարձություն, ապա իրադարձությունների մի շարքի հավանականությունը կարող է հաշվարկվել բանաձևով. Այսպիսով, բիգրամի հավանականությունը լողավազան է:, որտեղ «> 1, հավանականությունը հաշվարկվում է մի փոքր այլ կերպ: Դիտարկենք բիգրամի դեպքը. թող անհրաժեշտ լինի հաշվարկել լողավազանի բիգրամի հավանականությունը: Եթե ​​յուրաքանչյուր բիգրամ բառ դիտարկենք որպես ինչ-որ իրադարձություն, ապա հավատալով" title="(!LANG:N-gram probability calculation (4) n-գրամների համար, որտեղ n>1, հավանականությունը հաշվարկվում է մի փոքր այլ կերպ: Դիտարկենք բիգրամների դեպքը. թող անհրաժեշտ լինի հաշվարկել հավանականության դիգրամը լողավազան Եթե դիգրամի յուրաքանչյուր բառ դիտարկենք որպես ինչ-որ իրադարձություն, ապա հավատալով."> title="N-գրամների հավանականության հաշվարկ (4) n-գրամների համար, որտեղ n>1, հավանականությունը հաշվարկվում է փոքր-ինչ այլ կերպ: Դիտարկենք բիգրամի դեպքը. թող անհրաժեշտ լինի հաշվարկել լողավազանի բիգրամի հավանականությունը: Եթե ​​դիգրամի յուրաքանչյուր բառը դիտարկենք որպես ինչ-որ իրադարձություն, ապա հավատալ"> !}


N-գրամների հավանականության հաշվարկ (5) Այժմ դիտարկենք կամայական n-գրամի (կամ n երկարությամբ նախադասության) հավանականության հաշվարկը: Ընդլայնելով բիգրամների դեպքը՝ մենք ստանում ենք n-գրամի հավանականության բանաձևը Այսպիսով, նախադասության հավանականության հաշվարկը կրճատվում է այս նախադասությունը կազմող N գրամների պայմանական հավանականության հաշվարկով.




Կորպուսի նոսրության վերացում (1) n-գրամների պարզ (չհարթված) լեզվական մոդելի խնդիրը. որոշ n-գրամների համար հավանականությունը կարող է մեծապես թերագնահատվել (կամ նույնիսկ զրոյական), չնայած իրականում (փորձարկման կորպուսում) սրանք. n-գրամները կարող են առաջանալ բավականին հաճախ: Պատճառը՝ սահմանափակ ուսումնական կորպուս և դրա առանձնահատկությունը: Լուծում. նվազեցնելով որոշ n-գրամների հավանականությունը, մեծացրեք այն n-գրամների հավանականությունը, որոնք չեն եղել (կամ հազվադեպ են հանդիպել) ուսումնական կորպուսում:




Կորպուսի սակավության վերացում (3) Նվազության վերացման ալգորիթմներում օգտագործվում են հետևյալ հասկացությունները. Տեսակներ – տարբեր բառեր (բառերի հաջորդականություն) տեքստում: Նշանները տեքստի բոլոր բառերն են (բառերի հաջորդականությունը): Նրանք խնջույք արեցին լողավազանի մոտ, հետո պառկեցին խոտերի վրա և նայեցին աստղերին՝ 14 տեսակ, 16 նշան





Լրացուցիչ հարթեցում (4) Մեթոդը հաշվարկների մեջ մեծ սխալ է առաջացնում (օրինակ, նախորդ սլայդում ցույց է տրվել, որ չինարեն բառի համար բիգրամների թիվը կրճատվել է 8 անգամ): Փորձարկումները ցույց են տվել, որ չհարթված մոդելը հաճախ ավելի ճշգրիտ արդյունքներ է ցույց տալիս: Ուստի մեթոդը հետաքրքիր է միայն տեսական տեսանկյունից։


Witten-Bell Discounting (1) Հիմնվելով պարզ գաղափարի վրա. օգտագործեք n-գրամների տվյալները, որոնք տեղի են ունենում ուսումնական կորպուսում, գնահատելու n-գրամների բացակայելու հավանականությունը: Մեթոդի գաղափարը վերցված է սեղմման ալգորիթմներից. դիտարկվում են երկու տեսակի իրադարձություններ՝ նրանք հանդիպեցին նոր նիշի (տեսակի) և հանդիպեցին նիշի (նիշի): Հավանականության բանաձև բոլոր բացակայող n-գրամների համար (այսինքն՝ փորձարկման կորպուսում n-գրամի հանդիպելու հավանականությունը, որը չի եղել ուսումնական կորպուսում). որոնք արդեն հանդիպել են ուսումնական կորպուսում






Witten-Bell Զեղչ (4) =>=> =>"> =>"> =>" title="(!LANG:Witten-Bell Discounting (4) =>=>"> title="Witten-Bell Զեղչ (4) =>=>"> !}




Good-Turing Discounting (1) Գաղափար. n-գրամների համար, որոնք առաջանում են զրոյական անգամ (c անգամ), միավորը համամասնական է n-գրամների թվին, որոնք տեղի են ունենում մեկ անգամ (c + 1 անգամ): Դիտարկենք մի օրինակ. Ենթադրենք, որ բռնվել է 18 ձուկ: Ընդհանուր առմամբ որսացել է 6 տարբեր տեսակ, և միայն մեկ ներկայացուցիչ է որսացել երեք տեսակի մեջ։ Պետք է գտնել այն հավանականությունը, որ հաջորդ ձուկը կպատկանի նոր տեսակի։ Ընդհանուր 7 հնարավոր տեսակ կա (6 տեսակ արդեն որսացել է)։








Katzs Backoff (2) α գործակիցը անհրաժեշտ է N-գրամների մնացորդային հավանականության ճիշտ բաշխման համար՝ համաձայն (N-1)-գրամի հավանականության բաշխման: Եթե ​​չմուտքագրեք α, ապա գնահատումը կլինի սխալ, քանի որ հավասարությունը չի կատարվի. α-ի հաշվարկը տրված է հաշվետվության վերջում: Էնտրոպիայի օգտագործմամբ լեզվական մոդելի գնահատում (1) Էնտրոպիան անորոշության չափանիշ է: Էնտրոպիայի օգնությամբ կարելի է որոշել N-գրամների ամենահարմար լեզվական մոդելը տվյալ կիրառական առաջադրանքի համար։ Երկուական էնտրոպիայի բանաձև. Օրինակ. Հաշվեք մետաղադրամ նետելու թեստի էնտրոպիան: Պատասխան՝ 1 բիթ, պայմանով, որ փորձի արդյունքները հավասարապես հավանական են (ցանկացած կողմն ընկնում է 1/2 հավանականությամբ):




Լեզվի մոդելի գնահատում էնտրոպիայի միջոցով (3) Խաչաձև էնտրոպիան օգտագործվում է տարբեր լեզուների մոդելները համեմատելու համար. Մեր դեպքում H(p )-ը թեստային կորպուսի էնտրոպիան է: m(w) – լեզվի մոդել (օրինակ՝ N-gram մոդել)


Լեզվի մոդելի գնահատում էնտրոպիայի միջոցով (4) Լեզվի մոդելի որակի գնահատման մեկ այլ մեթոդ կա՝ հիմնված այսպես կոչված. միացման ցուցիչ (տարակուսանք): Գաղափար. Հաշվեք ամբողջ թեստային կորպուսի հավանականությունը: Ավելի լավ մոդելը ցույց կտա ավելի մեծ հավանականություն: շփոթության բանաձև. Այսպիսով, որքան փոքր է տարակուսանքը, այնքան լավ մոդելը: Շփոթմունքը կարող է մեկնաբանվել որպես բառերի միջին քանակ, որոնք կարող են գալ որոշակի բառից հետո (այսինքն՝ որքան շատ է տարակուսանքը, այնքան բարձր է երկիմաստությունը և, հետևաբար, այնքան վատ է լեզվական մոդելը): Շփոթության և երկուական էնտրոպիայի միջև կապը.


Լեզվի մոդելի գնահատում էնտրոպիայի միջոցով (5) Որպես օրինակ՝ դիտարկենք որոշ կորպուսի համար շփոթության արժեքները, որոնք ստացվել են միգրամների, բիգրամների և եռագրամների պատրաստված մոդելների միջոցով. երկիմաստացմանը նպաստում է բոլոր մոդելների պատմության ամենաերկար երկարությունը (հավասար է 2-ի) եռագրամի պայմանական հավանականությունները հաշվարկելիս: UnigramBigramTrigram շփոթություն


Ես ուզում եմ ներդնել որոշ n-gram հավելվածներ (ցանկալի է PHP-ով):

Ո՞ր տեսակի n-գրամներն են ավելի հարմար նպատակների մեծ մասի համար: Բառի մակարդակ, թե՞ գրանշանների մակարդակ n-գրամ մակարդակ: Ինչպե՞ս կարող է n-քերականական նշանաբանը ներդրվել PHP-ում:

Նախ, ես կցանկանայի իմանալ, թե ինչ է N-գրամը: Ճիշտ է? Ահա թե ինչպես եմ ես հասկանում n-grams.

Առաջարկ՝ «Ես ապրում եմ Նյու Յորքում»։

բառի մակարդակի բիրամներ (2-ը n-ի համար). «# I», «Ես ապրում եմ», «ապրում եմ», «Նյու Յորքում», «NY #»

նիշերի մակարդակի բիրամներ (2-ը n-ի համար). «#I», «I #», «#l», «li», «iv», «ve», «e #», «#i», «in», «n#», «#N», «NY», «Y#»

Երբ դուք ունեք n-gram մասերի այս զանգվածը, դուք կրկնօրինակներ եք նետում և յուրաքանչյուր մասի համար ավելացնում եք հաշվիչը, որը նշում է հաճախականությունը.

բառի մակարդակի բիգրամներ.

նիշերի մակարդակի բիգրամներ.

Ճի՞շտ է դա։

Բացի այդ, ես կցանկանայի ավելին իմանալ այն մասին, թե ինչ կարող եք անել n-grams-ով.

  • Ինչպե՞ս կարող եմ հայտնաբերել տեքստի լեզուն՝ օգտագործելով n-grams:
  • Հնարավո՞ր է մեքենայական թարգմանություն կատարել n-գրամների միջոցով, նույնիսկ եթե չունեք երկլեզու կորպուս:
  • Ինչպե՞ս ստեղծել սպամի զտիչ (սպամ, խոզապուխտ): Միացնե՞լ n-գրամները Բայեսյան ֆիլտրի հետ:
  • Ինչպե՞ս կարող եմ թեմա գտնել: Օրինակ՝ բասկետբոլի կամ շների մասին տեքստ կա՞: Իմ մոտեցումը (Վիքիպեդիայի «շներ» և «բասկետբոլ» հոդվածի հետ կատարեք հետևյալը). գծեք n-gram վեկտորները երկու փաստաթղթերի համար, նորմալացրեք դրանք, հաշվարկեք Մանհեթեն/Էվկլիդյան հեռավորությունը, որքան արդյունքը մոտ լինի 1-ին, այնքան բարձր է: նմանությունը կլինի

Ինչպե՞ս եք վերաբերվում իմ դիմումին, հատկապես վերջինին:

Հուսով եմ, որ դուք կարող եք օգնել ինձ: Նախապես շնորհակալություն!

2 պատասխան

Բառը n-gram սովորաբար ավելի օգտակար կլինի ձեր նշած տեքստի վերլուծության հավելվածների մեծ մասի համար, բացառությամբ լեզվի սահմանման հնարավորության, որտեղ նիշերի եռագրամների նման մի բան կարող է ավելի լավ արդյունքներ տալ: Արդյունավետորեն, դուք կստեղծեիք n-գրամների վեկտոր տեքստի մարմնի համար յուրաքանչյուր լեզվով, որը ձեզ հետաքրքրում է, և այնուհետև կհամեմատեք եռագրամի հաճախականությունները յուրաքանչյուր կորպուսում ձեր դասակարգվող փաստաթղթի հետ: Օրինակ, the եռագիրն, ամենայն հավանականությամբ, շատ ավելի հաճախ կհայտնվի անգլերենում, քան գերմաներենում և կապահովի վիճակագրական հարաբերակցության որոշակի մակարդակ: Երբ դուք ունեք n-gram փաստաթղթեր, դուք ունեք ընտրություն հետագա վերլուծության համար բազմաթիվ ալգորիթմներից, Baysian Filters, N Nearest Neighbor, Support Vector Machines և այլն:

Ձեր նշած հավելվածներից մեքենայական թարգմանությունը, հավանաբար, ամենահեռանկարն է, քանի որ միայն n-գրամը ձեզ շատ հեռու չի տանի ճանապարհից: Մուտքային ֆայլը n-գրամ ներկայացման վերածելը պարզապես տվյալների ձևաչափի մեջ դնելու միջոց է հետագա հատկությունների վերլուծության համար, բայց քանի որ դուք կորցնում եք շատ համատեքստային տեղեկատվություն, դա կարող է օգտակար չլինել թարգմանության համար:

Պետք է նշել մի բան, որ բավարար չէ մի փաստաթղթի համար վեկտոր ստեղծելը և մեկ այլ փաստաթղթի համար վեկտոր, եթե չափերը չեն համընկնում: Այսինքն՝ վեկտորի առաջին մուտքը չի կարող լինել մի փաստաթղթում և գտնվում է մեկ այլ փաստաթղթում, կամ ալգորիթմները չեն աշխատի։ Դուք կստանաք այնպիսի վեկտորներ, ինչպիսիք են , քանի որ փաստաթղթերի մեծ մասը չի պարունակի ավելին, քան ձեզ հետաքրքրող n-գրամները: Այս «աստառը» պահանջում է նաև, որ նախօրոք որոշեք, թե որ նգրամներն եք ներառելու ձեր վերլուծության մեջ։ Հաճախ սա իրականացվում է որպես երկու անցուղի ալգորիթմ՝ նախ որոշելու համար տարբեր n-գրամների վիճակագրական նշանակությունը՝ որոշելու, թե ինչ պահել: Լրացուցիչ տեղեկությունների համար Google-ի «առանձնահատկությունների ընտրություն»:

Բառի վրա հիմնված n-grams գումարած վեկտորային մեքենաների աջակցությունը թեման սահմանելու հիանալի միջոց է, սակայն դասակարգիչ պատրաստելու համար անհրաժեշտ է տեքստի մեծ հավաքածու՝ նախապես դասակարգված «թեմայից դուրս» և «թեմայից դուրս» թեմաների: Դուք կգտնեք մեծ թվով հետազոտական ​​հոդվածներ, որոնք բացատրում են այս խնդրի տարբեր մոտեցումները այնպիսի կայքում, ինչպիսին է citeseerx-ը: Ես խորհուրդ չեմ տա այս խնդրին էվկլիդեսյան հեռավորության մոտեցումը, քանի որ այն չի կշռում առանձին n-գրամներ՝ հիմնվելով վիճակագրական նշանակության վրա, ուստի երկու փաստաթուղթ, որոնք ներառում են , a, is and of-ը, կհամարվեն ավելի լավ համընկնում, քան երկու փաստաթուղթ, որի մեջ մտնում էր Բայսյանը։ Ձեր հետաքրքրության n-գրամներից վերջակետ բառերը հեռացնելը մի փոքր կբարելավի դա:

Դուք ճիշտ եք n-գրամների սահմանման հարցում։

Որոնման տիպի հավելվածների համար կարող եք օգտագործել բառի մակարդակի n-grams: Նիշերի մակարդակի n-գրամները կարող են ավելի շատ օգտագործվել տեքստը վերլուծելու համար: Օրինակ, տեքստի լեզուն նույնականացնելու համար ես կօգտագործեի տառերի հաճախականությունները սահմանված լեզվական հաճախականությունների դեմ: Այսինքն՝ տեքստը մոտավորապես պետք է համապատասխանի այս լեզվով տառերի առաջացման հաճախականությանը։

PHP-ում բառերի n-քերականական նշանաբանը կարող է իրականացվել sttok-ի միջոցով.

Նիշերի համար օգտագործեք բաժանում.

Այնուհետև դուք կարող եք պարզապես զանգվածը բաժանել ցանկացած թվով n-գրամների, ինչպես ցանկանում եք:

Բայեսյան ֆիլտրերը պետք է վերապատրաստվեն որպես սպամի զտիչներ օգտագործելու համար, որոնք կարող են օգտագործվել n-գրամների հետ համատեղ: Այնուամենայնիվ, դուք պետք է նրան շատ ներդրում տաք, որպեսզի նա շարունակի սովորել:

Ձեր վերջին մոտեցումը պատշաճ է թվում, քանի որ այն սովորում է էջի ենթատեքստը... այնուամենայնիվ, դա դեռ բավականին բարդ է անել, բայց n-գրամները կարծես լավ մեկնարկային կետ են դրա համար: