Data Scientist-ի նշումներ. Տվյալների հարցումների լեզուների անհատականացված ակնարկ

Data Scientist-ի նշումներ. Տվյալների հարցումների լեզուների անհատականացված ակնարկ
Ես ձեզ անձնական փորձից եմ ասում, թե ինչն է օգտակար որտեղ և երբ: Դա ակնարկ և թեզ է, որպեսզի պարզ լինի, թե ինչ և որտեղ կարող եք ավելի խորանալ, բայց այստեղ ես բացառապես սուբյեկտիվ անձնական փորձ ունեմ, գուցե ձեզ համար ամեն ինչ բոլորովին այլ է:

Ինչու՞ է կարևոր իմանալ և օգտագործել հարցումների լեզուները: Տվյալների գիտությունն իր հիմքում ունի աշխատանքի մի քանի կարևոր փուլ, և ամենաառաջինը և ամենակարևորը (առանց դրա, անշուշտ, ոչինչ չի ստացվի) տվյալների ստացումն է կամ արդյունահանումը: Ամենից հաճախ տվյալները ինչ-որ տեղ նստած են ինչ-որ ձևով և պետք է «առբերվեն» այնտեղից: 

Հարցման լեզուները թույլ են տալիս հանել հենց այս տվյալները: Եվ այսօր ես ձեզ կպատմեմ այն ​​հարցման լեզուների մասին, որոնք օգտակար են եղել ինձ համար, և ես ձեզ կասեմ և ցույց կտամ, թե որտեղ և ինչպես ճիշտ, ինչու է դա անհրաժեշտ սովորելու համար:

Տվյալների հարցումների տեսակների երեք հիմնական բլոկներ կլինեն, որոնք մենք կքննարկենք այս հոդվածում.

  • «Ստանդարտ» հարցման լեզուներն այն են, ինչ սովորաբար հասկանում են հարցման լեզվի մասին խոսելիս, ինչպիսին է հարաբերական հանրահաշիվը կամ SQL-ը:
  • Հարցումների սկրիպտավորման լեզուներ. օրինակ՝ Python բաների պանդաները, թմրած կամ կեղևային սկրիպտը:
  • Հարցման լեզուներ գիտելիքների գրաֆիկների և գրաֆիկների տվյալների բազաների համար:

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

«Ստանդարտ» հարցումների լեզուներ

Ստանդարտ հարցումների լեզուները հենց այն իմաստով են, որ մենք սովորաբար մտածում ենք դրանց մասին, երբ խոսում ենք հարցումների մասին:

Հարաբերական հանրահաշիվ

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

Ի՞նչ է հարաբերական հանրահաշիվը:

Պաշտոնական սահմանումը հետևյալն է. հարաբերական հանրահաշիվը հարաբերությունների վերաբերյալ գործողությունների փակ համակարգ է հարաբերական տվյալների մոդելում: Մի փոքր ավելի մարդկայնորեն ասած՝ սա աղյուսակների վրա գործողությունների համակարգ է, որ արդյունքը միշտ աղյուսակ է:

Տեսեք բոլոր հարաբերական գործողությունները սա է հոդվածը Habr-ից - այստեղ մենք նկարագրում ենք, թե ինչու պետք է իմանաք և որտեղ է դա օգտակար:

Ինչու?

Սկսելով հասկանալ, թե ինչի մասին են հարցման լեզուները և ինչ գործառնություններ են թաքնված հարցումների հատուկ լեզուներով արտահայտությունների հետևում, հաճախ ավելի խորը պատկերացում է տալիս, թե ինչ է գործում հարցման լեզուներում և ինչպես:

Data Scientist-ի նշումներ. Տվյալների հարցումների լեզուների անհատականացված ակնարկ
Վերցված ինչ - որ տեղից սա է հոդվածներ։ Գործողության օրինակ՝ միանալ, որը միացնում է աղյուսակները:

Ուսումնասիրության նյութեր.

Լավ ներածական դասընթաց Սթենֆորդից. Ընդհանրապես, հարաբերական հանրահաշվի և տեսության վերաբերյալ նյութերը շատ են՝ Coursera, Udacity: Ինտերնետում կա նաև հսկայական քանակությամբ նյութ, ներառյալ լավը ակադեմիական դասընթացներ. Իմ անձնական խորհուրդը՝ դուք պետք է շատ լավ հասկանաք հարաբերական հանրահաշիվը, սա է հիմունքների հիմքը:

SQL

Data Scientist-ի նշումներ. Տվյալների հարցումների լեզուների անհատականացված ակնարկ
Վերցված ինչ - որ տեղից սա է հոդվածներ:

SQL-ն, ըստ էության, հարաբերական հանրահաշվի իրականացում է. կարևոր նախազգուշացմամբ՝ SQL-ը դեկլարատիվ է: Այսինքն, հարաբերական հանրահաշվի լեզվով հարցում գրելիս դուք իրականում ասում եք, թե ինչպես կարելի է հաշվարկել, բայց SQL-ով դուք նշում եք, թե ինչ եք ուզում հանել, և այնուհետև DBMS-ն արդեն ստեղծում է (արդյունավետ) արտահայտություններ հարաբերական հանրահաշվի լեզվով (դրանց համարժեքությունը մեզ հայտնի է որպես Կոդի թեորեմ).

Data Scientist-ի նշումներ. Տվյալների հարցումների լեզուների անհատականացված ակնարկ
Վերցված ինչ - որ տեղից սա է հոդվածներ:

Ինչու?

Հարաբերական DBMS. Oracle-ը, Postgres-ը, SQL Server-ը և այլն դեռևս գրեթե ամենուր են, և աներևակայելի մեծ հավանականություն կա, որ դուք ստիպված կլինեք շփվել նրանց հետ, ինչը նշանակում է, որ դուք կամ պետք է կարդաք SQL (ինչը շատ հավանական է), կամ գրեք այն ( նույնպես քիչ հավանական է):

Ինչ կարդալ և ուսումնասիրել

Համաձայն վերը նշված նույն հղումների (հարաբերական հանրահաշվի մասին) կա անհավատալի քանակությամբ նյութ, օրինակ. այս.

Ի դեպ, ի՞նչ է NoSQL-ը։

«Հարկ է ևս մեկ անգամ ընդգծել, որ «NoSQL» տերմինը բացարձակապես ինքնաբուխ ծագում ունի և դրա հետևում չունի ընդհանուր ընդունված սահմանում կամ գիտական ​​հաստատություն»: Համապատասխան հոդված վրա Habr.

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

Նաև դասական հարաբերական մոդելի ֆիքսված մաթեմատիկական սխեմաների փոխարեն հաճախ անհրաժեշտ են ճկուն սխեմաներ, և դա աներևակայելիորեն հեշտացնում է հավելվածների մշակումը, երբ կարևոր է համակարգը տեղակայել և սկսել արագ աշխատել, մշակել արդյունքները, կամ սխեման և պահպանված տվյալների տեսակները: այնքան էլ կարևոր չեն:

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

{"en_wikipedia_url":"https://en.wikipedia.org/wiki/Johnny_Cash",
"ru_wikipedia_url":"https://ru.wikipedia.org/wiki/?curid=301643",
"ru_wiki_pagecount":149616,
"entity":[42775,"Джонни Кэш","ru"],
"en_wiki_pagecount":2338861}

Կարող եք ավելին կարդալ այստեղ NoSQL-ի մասին։

Ի՞նչ ուսումնասիրել:

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

Հարցման լեզուներ գրելու համար

Սկզբում թվում է, թե ի՞նչ կապ ունի Python-ը դրա հետ ընդհանրապես. դա ծրագրավորման լեզու է, և ընդհանրապես ոչ հարցումների մասին:

Data Scientist-ի նշումներ. Տվյալների հարցումների լեզուների անհատականացված ակնարկ

  • Pandas-ը բառացիորեն տվյալների գիտության շվեյցարական բանակի դանակ է, որի մեջ տեղի է ունենում տվյալների մեծ քանակի փոխակերպում, ագրեգացում և այլն:
  • Numpy - վեկտորային հաշվարկներ, մատրիցներ և գծային հանրահաշիվ այնտեղ:
  • Scipy - այս փաթեթում շատ մաթեմատիկա կա, հատկապես վիճակագրություն:
  • Jupyter lab. շատ հետախուզական տվյալների վերլուծություն լավ տեղավորվում է դյուրակիր համակարգիչների մեջ. օգտակար է իմանալ:
  • Պահանջներ - աշխատել ցանցի հետ:
  • Pyspark-ը շատ տարածված է տվյալների ինժեներների շրջանում, ամենայն հավանականությամբ, դուք ստիպված կլինեք շփվել այս կամ Spark-ի հետ՝ պարզապես նրանց ժողովրդականության պատճառով:
  • *Սելեն - շատ օգտակար է կայքերից և ռեսուրսներից տվյալներ հավաքելու համար, երբեմն պարզապես տվյալներ ստանալու այլ ճանապարհ չկա:

Իմ գլխավոր խորհուրդը՝ սովորիր Python!

Պանդա

Որպես օրինակ վերցնենք հետևյալ կոդը.

import pandas as pd
df = pd.read_csv(“data/dataset.csv”)
# Calculate and rename aggregations
all_together = (df[df[‘trip_type’] == “return”]
    .groupby(['start_station_name','end_station_name'])
                  	    .agg({'trip_duration_seconds': [np.size, np.mean, np.min, np.max]})
                           .rename(columns={'size': 'num_trips', 
           'mean': 'avg_duration_seconds',    
           'amin': min_duration_seconds', 
           ‘amax': 'max_duration_seconds'}))

Ըստ էության, մենք տեսնում ենք, որ կոդը տեղավորվում է դասական SQL օրինակին:

SELECT start_station_name, end_station_name, count(trip_duration_seconds) as size, …..
FROM dataset
WHERE trip_type = ‘return’
GROUPBY start_station_name, end_station_name

Բայց կարևորն այն է, որ այս կոդը սկրիպտի և խողովակաշարի մի մասն է, իրականում մենք հարցումներ ենք տեղադրում Python խողովակաշարի մեջ: Այս իրավիճակում հարցումների լեզուն գալիս է մեզ գրադարաններից, ինչպիսիք են Pandas-ը կամ pySpark-ը:

Ընդհանուր առմամբ, pySpark-ում մենք տեսնում ենք տվյալների փոխակերպման նմանատիպ տիպ՝ հարցումների լեզվի միջոցով հետևյալի ոգով.

df.filter(df.trip_type = “return”)
  .groupby(“day”)
  .agg({duration: 'mean'})
  .sort()

Որտեղ և ինչ կարդալ

Բուն Python-ի վրա ընդհանրապես ոչ թե խնդիր գտնել նյութեր ուսումնասիրելու համար. Առցանց ձեռնարկների հսկայական քանակ կա pandas, pySpark և դասընթացների վերաբերյալ Կայծ (և նաև ինքնին DS) Ընդհանուր առմամբ, այստեղ բովանդակությունը հիանալի է գուգլելու համար, և եթե ես ստիպված լինեի ընտրել մեկ փաթեթ՝ կենտրոնանալու համար, դա, իհարկե, պանդաները կլինեն: Ինչ վերաբերում է նաև DS+Python նյութերի համադրությանը շատ.

Shell-ը որպես հարցման լեզու

Տվյալների մշակման և վերլուծության բավականին շատ նախագծեր, որոնց հետ ես աշխատել եմ, իրականում կեղևի սկրիպտներ են, որոնք կանչում են կոդ Python-ում, Java-ում, իսկ shell-ն ինքն է հրաման տալիս: Հետևաբար, ընդհանուր առմամբ, դուք կարող եք խողովակաշարերը bash/zsh/ և այլն համարել որպես ինչ-որ բարձր մակարդակի հարցում (կարող եք, իհարկե, օղակներ տեղադրել այնտեղ, բայց սա բնորոշ չէ DS կոդի համար shell լեզուներով), եկեք տանք. պարզ օրինակ. ինձ անհրաժեշտ էր կատարել վիքիտվյալների QID քարտեզագրում և ամբողջական հղումներ դեպի ռուսերեն և անգլերեն վիքիներ, դրա համար ես գրեցի պարզ հարցում bash-ի հրամաններից, իսկ ելքի համար ես գրեցի պարզ սցենար Python-ում, որը ես հավաքել այսպես.

pv “data/latest-all.json.gz” | 
unpigz -c  | 
jq --stream $JQ_QUERY | 
python3 scripts/post_process.py "output.csv"

որտեղ

JQ_QUERY = 'select((.[0][1] == "sitelinks" and (.[0][2]=="enwiki" or .[0][2] =="ruwiki") and .[0][3] =="title") or .[0][1] == "id")' 

Սա, փաստորեն, ամբողջ խողովակաշարն էր, որը ստեղծեց անհրաժեշտ քարտեզագրումը, ինչպես տեսնում ենք, ամեն ինչ աշխատում էր հոսքի ռեժիմում.

  • pv filepath - տալիս է առաջընթացի տող՝ հիմնված ֆայլի չափի վրա և փոխանցում է դրա բովանդակությունը
  • unpigz -c կարդաց արխիվի մի մասը և տվեց jq
  • jq ստեղնով - հոսքը անմիջապես ստացավ արդյունքը և փոխանցեց այն հետպրոցեսորին (նույնը, ինչ առաջին օրինակում) Python-ում
  • Ներքին առումով, հետպրոցեսորը պարզ պետական ​​մեքենա էր, որը ձևաչափում էր ելքը 

Ընդհանուր առմամբ, հոսքային ռեժիմով աշխատող բարդ խողովակաշար մեծ տվյալների վրա (0.5 ՏԲ), առանց նշանակալի ռեսուրսների և պատրաստված պարզ խողովակաշարից և մի քանի գործիքներից:

Մեկ այլ կարևոր խորհուրդ՝ կարողանալ լավ և արդյունավետ աշխատել տերմինալում և գրել bash/zsh/ և այլն:

Որտեղ այն օգտակար կլինի: Այո, գրեթե ամենուր, կրկին, ինտերնետում ուսումնասիրելու համար շատ նյութեր կան: Մասնավորապես, այստեղ սա է իմ նախորդ հոդվածը.

R սցենարավորում

Կրկին, ընթերցողը կարող է բացականչել. Դե, սա մի ամբողջ ծրագրավորման լեզու է: Եվ, իհարկե, նա ճիշտ կլինի։ Այնուամենայնիվ, ես սովորաբար R-ին հանդիպում էի այնպիսի համատեքստում, որ, ըստ էության, այն շատ նման էր հարցման լեզվին:

R-ն վիճակագրական հաշվողական միջավայր և լեզու է ստատիկ հաշվարկների և վիզուալիզացիայի համար (ըստ այս).

Data Scientist-ի նշումներ. Տվյալների հարցումների լեզուների անհատականացված ակնարկ
վերցված ուստի. Ի դեպ, խորհուրդ եմ տալիս, լավ նյութ։

Ինչու՞ է տվյալների գիտնականը պետք իմանա Ռ. Համենայն դեպս, քանի որ կա ոչ ՏՏ մարդկանց հսկայական շերտ, ովքեր վերլուծում են տվյալներ Ռ-ում, ես դրան հանդիպեցի հետևյալ վայրերում.

  • Դեղագործական ոլորտ.
  • Կենսաբաններ.
  • Ֆինանսական հատված.
  • Զուտ մաթեմատիկական կրթություն ունեցող մարդիկ, ովքեր զբաղվում են վիճակագրությամբ։
  • Մասնագիտացված վիճակագրական մոդելներ և մեքենայական ուսուցման մոդելներ (որոնք հաճախ կարելի է գտնել միայն հեղինակային տարբերակում՝ որպես R փաթեթ):

Ինչու՞ է այն իրականում հարցման լեզու: Այն ձևով, որով այն հաճախ հանդիպում է, դա իրականում մոդել ստեղծելու խնդրանք է, ներառյալ տվյալների ընթերցումը և հարցման (մոդելի) պարամետրերը շտկելը, ինչպես նաև տվյալների արտացոլումը այնպիսի փաթեթներում, ինչպիսին է ggplot2-ը, սա նաև հարցումներ գրելու ձև է: .

Վիզուալիզացիայի հարցումների օրինակներ

ggplot(data = beav, 
       aes(x = id, y = temp, 
           group = activ, color = activ)) +
  geom_line() + 
  geom_point() +
  scale_color_manual(values = c("red", "blue"))

Ընդհանուր առմամբ, R-ից շատ գաղափարներ տեղափոխվել են python փաթեթներ, ինչպիսիք են pandas, numpy կամ scipy, ինչպիսիք են տվյալների շրջանակները և տվյալների վեկտորացումը, ուստի ընդհանուր առմամբ R-ում շատ բաներ ձեզ ծանոթ և հարմար կթվան:

Կան բազմաթիվ աղբյուրներ ուսումնասիրելու համար, օրինակ. այս.

Գիտելիքի գրաֆիկներ

Այստեղ ես մի փոքր անսովոր փորձ ունեմ, քանի որ ես բավականին հաճախ պետք է աշխատեմ գիտելիքների գրաֆիկների և գրաֆիկների հարցումների լեզուների հետ: Հետևաբար, եկեք միայն համառոտ անցնենք հիմունքներին, քանի որ այս մասը մի փոքր ավելի էկզոտիկ է:

Դասական հարաբերական տվյալների բազաներում մենք ունենք ֆիքսված սխեմա, բայց այստեղ սխեման ճկուն է, յուրաքանչյուր պրեդիկատ իրականում «սյունակ» է և նույնիսկ ավելին:

Պատկերացրեք, որ դուք մոդելավորում էիք մարդուն և ցանկանում էիք նկարագրել հիմնական բաները, օրինակ՝ եկեք վերցնենք կոնկրետ մարդու՝ Դուգլաս Ադամսին և հիմք ընդունենք այս նկարագրությունը։

Data Scientist-ի նշումներ. Տվյալների հարցումների լեզուների անհատականացված ակնարկ
www.wikidata.org/wiki/Q42

Եթե ​​մենք օգտագործեինք հարաբերական տվյալների բազա, մենք պետք է ստեղծեինք հսկայական աղյուսակ կամ աղյուսակներ հսկայական թվով սյունակներով, որոնցից շատերը կլինեն NULL կամ լցված կլինեն որոշ կանխադրված False արժեքով, օրինակ, քիչ հավանական է, որ մեզանից շատերն ունեն մուտքը Կորեայի ազգային գրադարանում. իհարկե, մենք կարող էինք դրանք դնել առանձին աղյուսակների մեջ, բայց սա, ի վերջո, փորձ կլիներ մոդելավորելու ճկուն տրամաբանական միացում պրեդիկատներով՝ օգտագործելով ֆիքսված հարաբերականը:

Data Scientist-ի նշումներ. Տվյալների հարցումների լեզուների անհատականացված ակնարկ
Այսպիսով, պատկերացրեք, որ բոլոր տվյալները պահվում են որպես գրաֆիկ կամ որպես երկուական և միատար բուլյան արտահայտություններ:

Որտե՞ղ կարող եք նույնիսկ հանդիպել դրան: Նախ՝ աշխատելով տվյալների վիքիև ցանկացած գրաֆիկական տվյալների բազաներով կամ կապակցված տվյալների հետ:

Հետևյալը հարցման հիմնական լեզուներն են, որոնք ես օգտագործել և աշխատել եմ:

SPARQL

Վիքիպեդիա:
SPARQL (ռեկուրսիվ հապավում - ից Eng. SPARQL արձանագրություն և RDF հարցման լեզու) - տվյալների հարցման լեզուն, ներկայացված մոդելով RDF- նԻսկ արձանագրությունը փոխանցել այս հարցումները և պատասխանել դրանց։ SPARQL-ը առաջարկություն է W3C կոնսորցիում և տեխնոլոգիաներից մեկը իմաստային վեբ.

Բայց իրականում դա հարցման լեզու է տրամաբանական միանար և երկուական պրեդիկատների համար: Դուք ուղղակի պայմանականորեն նշում եք, թե ինչն է ամրագրված բուլյան արտահայտության մեջ և ինչը ոչ (շատ պարզեցված):

Ինքնին RDF (Resource Description Framework) բազան, որի վրա կատարվում են SPARQL հարցումները, եռակի է. object, predicate, subject - և հարցումն ընտրում է պահանջվող եռապատկերները՝ ըստ ոգով սահմանված սահմանափակումների. գտի՛ր X այնպիսին, որ p_55(X, q_33) ճշմարիտ լինի, որտեղ, իհարկե, p_55-ը մի տեսակ հարաբերություն է ID 55-ի հետ, իսկ q_33-ը՝ ID 33-ով օբյեկտ (այստեղ և ամբողջ պատմությունը՝ կրկին բաց թողնելով բոլոր տեսակի մանրամասները):

Տվյալների ներկայացման օրինակ.

Data Scientist-ի նշումներ. Տվյալների հարցումների լեզուների անհատականացված ակնարկ
Երկրների հետ նկարներ և օրինակներ այստեղ ուստի.

Հիմնական հարցման օրինակ

Data Scientist-ի նշումներ. Տվյալների հարցումների լեզուների անհատականացված ակնարկ

Փաստորեն, մենք ցանկանում ենք գտնել ?country փոփոխականի արժեքը այնպես, որ պրեդիկատի համար
անդամ_of, ճիշտ է, որ Member_of(?country,q458) և q458-ը Եվրոպական Միության ID-ն է:

Python շարժիչի ներսում իրական SPARQL հարցման օրինակ.

Data Scientist-ի նշումներ. Տվյալների հարցումների լեզուների անհատականացված ակնարկ

Սովորաբար, ես ստիպված էի կարդալ SPARQL-ը, այլ ոչ թե գրել այն. այդ իրավիճակում, հավանաբար, օգտակար հմտություն կլիներ հասկանալ լեզուն գոնե հիմնական մակարդակով, որպեսզի հասկանայի, թե ինչպես են տվյալները վերցվում: 

Առցանց ուսումնասիրելու համար շատ նյութեր կան. օրինակ՝ այստեղ այս и այս. Ես սովորաբար google-ում հատուկ նմուշներ և օրինակներ եմ փնտրում, և դա առայժմ բավական է:

Հարցման տրամաբանական լեզուներ

Թեմայի վերաբերյալ ավելին կարող եք կարդալ իմ հոդվածում այստեղ. Եվ այստեղ մենք միայն համառոտ կքննարկենք, թե ինչու են տրամաբանական լեզուները լավ պիտանի հարցումներ գրելու համար: Ըստ էության, RDF-ն ընդամենը p(X) և h(X,Y) ձևի տրամաբանական հայտարարությունների մի շարք է, իսկ տրամաբանական հարցումն ունի հետևյալ ձևը.

output(X) :- country(X), member_of(X,“EU”).

Այստեղ մենք խոսում ենք նոր պրեդիկատային ելք ստեղծելու մասին/1 (/1 նշանակում է միանման), պայմանով, որ X-ի համար ճիշտ է, որ երկիրը(X) - այսինքն՝ X-ը երկիր է և նաև անդամ_of(X,EU "):

Այսինքն՝ այս դեպքում և՛ տվյալները, և՛ կանոնները ներկայացվում են նույն ձևով, ինչը թույլ է տալիս շատ հեշտ և լավ մոդելավորել խնդիրները։

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

Կոդի հատվածի օրինակ տրամաբանական լեզվի մշակման վիքիտվյալներում.

Data Scientist-ի նշումներ. Տվյալների հարցումների լեզուների անհատականացված ակնարկ

Նյութեր. Ես այստեղ կտամ մի քանի հղում ժամանակակից տրամաբանական ծրագրավորման լեզվին, Answer Set Programming - խորհուրդ եմ տալիս ուսումնասիրել այն.

Data Scientist-ի նշումներ. Տվյալների հարցումների լեզուների անհատականացված ակնարկ

Source: www.habr.com

Добавить комментарий