Nòt Data Scientist la: Yon Revizyon Pèsonalize nan Lang Rechèch Done yo

Nòt Data Scientist la: Yon Revizyon Pèsonalize nan Lang Rechèch Done yo
Mwen di ou nan eksperyans pèsonèl sa ki te itil ki kote ak ki lè. Li nan BECA ak tèz, pou ke li klè ki sa ak ki kote ou ka fouye pi lwen - men isit la mwen gen eksperyans pèsonèl sèlman subjectif, petèt tout bagay se konplètman diferan pou ou.

Poukisa li enpòtan pou konnen epi kapab itilize lang rechèch? Nan nwayo li yo, Syans Done gen plizyè etap enpòtan nan travay, ak premye ak pi enpòtan an (san li, sètènman pa gen anyen ap travay!) se jwenn oswa èkstraksyon done. Pi souvan, done yo chita yon kote nan kèk fòm epi yo bezwen "rekipere" soti nan la. 

Lang rechèch pèmèt ou ekstrè done sa yo! Ak jodi a mwen pral pale w sou lang rechèch sa yo ki te itil mwen epi mwen pral di w epi montre w ki kote ak ki jan egzakteman - poukisa li nesesè etidye.

Pral gen twa blòk prensipal nan kalite rechèch done, ke nou pral diskite nan atik sa a:

  • Lang rekèt "estanda" yo se sa ki souvan konprann lè w ap pale de yon lang rekèt, tankou aljèb relasyon oswa SQL.
  • Lang rekèt Scripting: pou egzanp, Python bagay panda, numpy oswa script shell.
  • Rechèch lang pou graf konesans ak baz done graf.

Tout sa ki ekri isit la se jis yon eksperyans pèsonèl, sa ki te itil, ak yon deskripsyon sitiyasyon ak "poukisa li te nesesè" - tout moun ka eseye sou ki jan sitiyasyon menm jan an ka vini nan wout ou epi eseye prepare pou yo davans lè yo konprann lang sa yo. anvan ou gen pou aplike (ijan) sou yon pwojè oswa menm rive nan yon pwojè kote yo bezwen yo.

Lang rechèch "estanda".

Lang rechèch estanda yo se jisteman nan sans ke nou anjeneral panse sou yo lè nou pale sou demann.

Aljèb relasyon

Poukisa aljèb relasyon yo bezwen jodi a? Pou gen yon bon konpreyansyon sou poukisa lang rechèch yo estriktire nan yon sèten fason epi sèvi ak yo konsyan, ou bezwen konprann nwayo ki kache yo.

Ki sa ki aljèb relasyon?

Definisyon fòmèl la se jan sa a: aljèb relasyon se yon sistèm fèmen nan operasyon sou relasyon nan yon modèl done relasyon. Pou mete l 'yon ti kras plis imen, sa a se yon sistèm nan operasyon sou tab sa yo ke rezilta a se toujou yon tab.

Gade tout operasyon relasyon yo nan sa a atik ki soti nan Habr - isit la nou dekri poukisa ou bezwen konnen ak ki kote li vini an sou la men.

Poukisa?

Kòmanse konprann kisa lang rechèch yo ye ak ki operasyon ki dèyè ekspresyon nan lang rechèch espesifik yo souvan bay yon konpreyansyon pi pwofon sou sa ki travay nan lang rechèch ak ki jan.

Nòt Data Scientist la: Yon Revizyon Pèsonalize nan Lang Rechèch Done yo
Pran nan sa a atik yo. Yon egzanp yon operasyon: join, ki rantre tab.

Materyèl pou etid:

Bon kou entwodiksyon nan Stanford. An jeneral, gen anpil materyèl sou aljèb relasyon ak teyori - Coursera, Udacity. Genyen tou yon gwo kantite materyèl sou entènèt, ki gen ladan bon kou akademik yo. Konsèy pèsonèl mwen: ou bezwen konprann aljèb relasyon trè byen - sa a se baz de baz yo.

SQL

Nòt Data Scientist la: Yon Revizyon Pèsonalize nan Lang Rechèch Done yo
Pran nan sa a atik.

SQL se esansyèlman yon aplikasyon aljèb relasyon - ak yon opozisyon enpòtan, SQL se deklaratif! Sa vle di, lè w ap ekri yon rechèch nan lang aljèb relasyon an, ou aktyèlman di ki jan yo kalkile - men ak SQL ou presize sa ou vle ekstrè, ak Lè sa a, DBMS a deja jenere ekspresyon (efikas) nan lang aljèb relasyon yo (yo. ekivalans nou konnen kòm Teyorèm Codd a).

Nòt Data Scientist la: Yon Revizyon Pèsonalize nan Lang Rechèch Done yo
Pran nan sa a atik.

Poukisa?

DBMS Relasyonèl: Oracle, Postgres, SQL Server, elatriye yo toujou nòmalman toupatou epi gen yon chans ekstrèmman wo ke w ap gen kominike avèk yo, ki vle di ou pral swa gen li SQL (ki gen anpil chans) oswa ekri li ( pa fasil tou).

Kisa pou li ak etidye

Dapre menm lyen ki anwo yo (sou aljèb relasyon), gen yon kantite materyèl enkwayab, pou egzanp, sa a.

By wout la, ki sa ki NoSQL?

"Li vo mete aksan sou yon lòt fwa ankò ke tèm "NoSQL" gen yon orijin absoliman espontane epi li pa gen okenn definisyon jeneralman aksepte oswa enstitisyon syantifik dèyè li." Korespondan atik sou Habr.

An reyalite, moun yo reyalize ke yon modèl relasyon konplè pa nesesè pou rezoud anpil pwoblèm, espesyalman pou moun kote, pou egzanp, pèfòmans se kritik ak sèten demann senp ak agrégation domine - kote li enpòtan pou byen vit kalkile mesures epi ekri yo nan la. baz done, ak pifò karakteristik yo se relasyon yo te tounen soti yo dwe pa sèlman nesesè, men tou, danjere - poukisa nòmalize yon bagay si li pral gate bagay ki pi enpòtan pou nou (pou kèk travay espesifik) - pwodiktivite?

Epitou, yo souvan bezwen schémas fleksib olye de schémas matematik fiks yo nan modèl relasyon klasik la - e sa a ekstrèmman senplifye devlopman aplikasyon lè li enpòtan pou deplwaye sistèm nan epi kòmanse travay byen vit, trete rezilta yo - oswa chema a ak kalite done ki estoke. yo pa tèlman enpòtan.

Pou egzanp, nou ap kreye yon sistèm ekspè epi nou vle estoke enfòmasyon sou yon domèn espesifik ansanm ak kèk enfòmasyon meta - nou ka pa konnen tout jaden yo epi tou senpleman magazen JSON pou chak dosye - sa a ba nou yon anviwònman trè fleksib pou elaji done yo. modèl ak byen vit iterasyon - se konsa nan sa a Nan ka sa a, NoSQL pral menm pi preferab ak plis lizib. Egzanp antre (ki soti nan youn nan pwojè mwen yo kote NoSQL te jis kote li te bezwen).

{"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}

Ou ka li plis isit la sou NoSQL.

Kisa pou etidye?

Isit la, pito, ou jis bezwen byen analize travay ou a, ki pwopriyete li genyen ak ki sistèm NoSQL ki disponib ki ta anfòm deskripsyon sa a - ak Lè sa a, kòmanse etidye sistèm sa a.

Scripting Rekèt Lang

Okòmansman, li sanble, kisa Python gen fè ak li an jeneral - li se yon langaj pwogramasyon, epi yo pa sou demann ditou.

Nòt Data Scientist la: Yon Revizyon Pèsonalize nan Lang Rechèch Done yo

  • Pandas se literalman yon kouto Lame Swis nan Syans Done, yon gwo kantite transfòmasyon done, agrégation, elatriye k ap pase nan li.
  • Numpy - kalkil vektè, matris ak aljèb lineyè la.
  • Scipy - gen yon anpil nan matematik nan pake sa a, espesyalman stats.
  • Laboratwa Jupyter - yon anpil nan analiz done eksplorasyon adapte byen nan laptops - itil yo konnen.
  • Demann - travay ak rezo a.
  • Pyspark se trè popilè nan mitan enjenyè done, gen plis chans ou pral oblije kominike avèk sa a oswa Spark, tou senpleman akòz popilarite yo.
  • * Selenyòm - trè itil pou kolekte done ki soti nan sit ak resous, pafwa pa gen tou senpleman okenn lòt fason yo ka resevwa done yo.

Konsèy prensipal mwen an: aprann Python!

Panda

Ann pran kòd sa a kòm yon egzanp:

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'}))

Esansyèlman, nou wè ke kòd la adapte nan modèl la SQL klasik.

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

Men, pati enpòtan an se ke kòd sa a se yon pati nan script la ak tiyo a; an reyalite, nou ap entegre demann nan tiyo a Python. Nan sitiyasyon sa a, lang rechèch la vin jwenn nou nan bibliyotèk tankou Pandas oswa pySpark.

An jeneral, nan pySpark nou wè yon kalite menm jan transfòmasyon done atravè yon lang rechèch nan lespri a:

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

Ki kote ak sa pou li

Sou Python tèt li an jeneral pa yon pwoblèm jwenn materyèl pou etidye. Gen yon gwo kantite leson patikilye sou entènèt panda, pySpark ak kou sou Fè lafimen oupbyen etensèl (epi tou pou kont li DS). An jeneral, kontni an isit la se gwo pou googling, epi si mwen te chwazi yon pake yo konsantre sou, li ta panda, nan kou. Konsènan konbinezon an nan materyèl DS + Python tou anpil.

Shell kòm yon lang rechèch

Gen kèk pwosesis done ak analiz pwojè ke mwen te travay avèk yo se, an reyalite, scripts koki ki rele kòd nan Python, Java, ak kòmandman koki yo tèt yo. Se poutèt sa, an jeneral, ou ka konsidere tiyo nan bash / zsh / elatriye kòm yon kalite rechèch wo nivo (ou ka, nan kou, bagay bouk nan la, men sa a se pa tipik pou kòd DS nan lang koki), ann bay yon egzanp senp - mwen te bezwen fè yon kat QID nan wikidata ak lyen konplè nan wiki Ris ak angle, pou sa mwen te ekri yon demann senp nan kòmandman yo nan bash la ak pou pwodiksyon an mwen te ekri yon script senp nan Python, ki mwen mete ansanm konsa:

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

kote

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

Sa a te, an reyalite, tiyo a tout antye ki te kreye kat ki nesesè yo; jan nou wè, tout bagay te travay nan mòd kouran:

  • pv filepath - bay yon ba pwogrè ki baze sou gwosè fichye a epi li pase kontni li yo
  • unpigz -c li yon pati nan achiv la epi li bay jq
  • jq ak kle a - kouran imedyatman te pwodwi rezilta a epi li te pase li bay postprocessor la (menm jan ak premye egzanp lan) nan Python.
  • intern, postprocesseur a se te yon machin eta senp ki fòma pwodiksyon an 

An total, yon tiyo konplèks k ap travay nan mòd koule sou done gwo (0.5TB), san resous enpòtan ak te fè soti nan yon tiyo senp ak yon koup nan zouti.

Yon lòt konsèy enpòtan: kapab travay byen ak efektivman nan tèminal la epi ekri bash/zsh/etc.

Ki kote li pral itil? Wi, prèske tout kote - ankò, gen yon ANPIL materyèl yo etidye sou entènèt la. An patikilye, isit la sa a atik anvan mwen an.

R scripting

Yon fwa ankò, lektè a ka di - byen, sa a se yon langaj pwogram antye! Ak nan kou, li pral gen rezon. Sepandan, anjeneral mwen te rankontre R nan yon kontèks ke, an reyalite, li te trè menm jan ak yon lang rechèch.

R se yon anviwònman ak lang estatistik estatistik pou enfòmatik estatik ak vizyalizasyon (dapre sa a).

Nòt Data Scientist la: Yon Revizyon Pèsonalize nan Lang Rechèch Done yo
pran kon sa. By wout la, mwen rekòmande li, bon materyèl.

Poukisa yon syantifik done bezwen konnen R? Omwen, paske gen yon gwo kouch moun ki pa IT ki analize done nan R. Mwen te vin jwenn li nan kote sa yo:

  • Sektè famasetik.
  • Byolojis yo.
  • Sektè finansye.
  • Moun ki gen yon edikasyon piman matematik ki fè fas ak stats.
  • Modèl estatistik espesyalize ak modèl aprantisaj machin (ki souvan ka jwenn sèlman nan vèsyon otè a kòm yon pake R).

Poukisa se aktyèlman yon lang rechèch? Nan fòm sa a souvan jwenn, li se aktyèlman yon demann yo kreye yon modèl, ki gen ladan done lekti ak fikse paramèt rechèch (modèl), osi byen ke vizyalize done nan pakè tankou ggplot2 - sa a se tou yon fòm demann ekri. .

Egzanp demann pou vizyalizasyon

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

An jeneral, anpil lide ki soti nan R te imigre nan pakè python tankou panda, numpy oswa scipy, tankou dataframes ak vektorizasyon done - kidonk an jeneral anpil bagay nan R pral sanble abitye ak pratik pou ou.

Gen anpil sous pou etidye, pa egzanp, sa a.

Grafik konesans

Isit la mwen gen yon eksperyans yon ti kras etranj, paske mwen byen souvan gen travay ak graf konesans ak lang rechèch pou graf. Se poutèt sa, kite a jis yon ti tan ale sou Basics yo, kòm pati sa a se yon ti kras plis ekzotik.

Nan baz done relasyon klasik nou gen yon chema fiks, men isit la chema a fleksib, chak predi se aktyèlman yon "kolòn" e menm plis.

Imajine ke ou t ap modèl yon moun epi ou vle dekri bagay kle yo, pou egzanp, ann pran yon moun espesifik, Douglas Adams, epi sèvi ak deskripsyon sa a kòm yon baz.

Nòt Data Scientist la: Yon Revizyon Pèsonalize nan Lang Rechèch Done yo
www.wikidata.org/wiki/Q42

Si nou itilize yon baz done relasyon, nou ta dwe kreye yon gwo tab oswa tab ki gen yon gwo kantite kolòn, pi fò nan yo ta dwe NULL oswa ranpli ak kèk valè default fo, pou egzanp, li pa posib ke anpil nan nou gen yon antre nan bibliyotèk nasyonal Koreyen an - nan kou, nou ta ka mete yo nan tab separe, men sa a ta finalman ta dwe yon tantativ modèl yon sikwi lojik fleksib ak predikate lè l sèvi avèk yon sèl relasyon fiks.

Nòt Data Scientist la: Yon Revizyon Pèsonalize nan Lang Rechèch Done yo
Se konsa, imajine ke tout done yo estoke kòm yon graf oswa kòm ekspresyon booleyen binè ak inèr.

Ki kote ou ka menm rankontre sa a? Premyerman, travay ak done wiki, ak nenpòt baz done graf oswa done ki konekte.

Sa ki anba la yo se lang prensipal rechèch ke mwen te itilize ak travay avèk yo.

SPARQL

Wiki:
SPARQL (akwonim recursive soti nan Kreyòl Eng. Pwotokòl SPARQL ak Lang Rekèt RDF) - lang rekèt done, reprezante pa modèl la R.F.D.Ak pwotokòl transmèt demann sa yo epi reponn yo. SPARQL se yon rekòmandasyon W3C Consortium ak youn nan teknoloji yo web semantik.

Men, an reyalite li se yon langaj rechèch pou predikatè lojik inèr ak binè. W ap tou senpleman presize kondisyonèl sa ki fiks nan yon ekspresyon Boolean ak sa ki pa (trè senplifye).

RDF (Resource Description Framework) baz li menm, sou ki demann SPARQL yo egzekite, se yon trip. object, predicate, subject - ak rechèch la chwazi trip obligatwa yo dapre restriksyon yo espesifye nan lespri a: jwenn yon X konsa ke p_55(X, q_33) se vre - kote, nan kou, p_55 se yon kalite relasyon ak ID 55, ak q_33 se yon objè ak ID 33 (isit la ak tout istwa a, ankò omisyon tout kalite detay).

Egzanp prezantasyon done:

Nòt Data Scientist la: Yon Revizyon Pèsonalize nan Lang Rechèch Done yo
Foto ak egzanp ak peyi isit la kon sa.

Egzanp rechèch debaz

Nòt Data Scientist la: Yon Revizyon Pèsonalize nan Lang Rechèch Done yo

An reyalite, nou vle jwenn valè ?variab peyi a konsa pou predika a
member_of, se vre ke member_of(?country,q458) ak q458 se ID Inyon Ewopeyen an.

Yon egzanp yon rekèt SPARQL reyèl andedan motè python la:

Nòt Data Scientist la: Yon Revizyon Pèsonalize nan Lang Rechèch Done yo

Tipikman, mwen te oblije li SPARQL olye ke ekri li - nan sitiyasyon sa a, li ta gen anpil chans yon konpetans itil yo konprann lang nan omwen nan yon nivo debaz yo konprann egzakteman ki jan done yo rekipere. 

Gen yon anpil nan materyèl yo etidye sou entènèt: pou egzanp, isit la sa a и sa a. Mwen anjeneral google desen espesifik ak egzanp ak sa a ase pou kounye a.

Lang rekèt lojik

Ou ka li plis sou sijè a nan atik mwen an isit la. Ak isit la, nou pral sèlman yon ti tan egzamine poukisa lang lojik yo byen adapte pou ekri demann. Esansyèlman, RDF se jis yon seri deklarasyon lojik nan fòm p (X) ak h (X, Y), ak yon rechèch lojik gen fòm sa a:

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

Isit la nou ap pale de kreye yon nouvo pwodiksyon predicat/1 (/1 vle di inè), depi pou X se vre ke peyi (X) - sa vle di, X se yon peyi epi tou manm_of(X,"EU ").

Sa vle di, nan ka sa a, tou de done yo ak règ yo prezante nan menm fason an, ki fè li posib modèl pwoblèm trè fasil ak byen.

Ki kote ou te rankontre nan endistri a?: yon pwojè antye gwo ak yon konpayi ki ekri demann nan yon lang konsa, osi byen ke sou pwojè aktyèl la nan nwayo a nan sistèm nan - li ta sanble ke sa a se yon bagay olye ekzotik, men pafwa li rive.

Yon egzanp yon fragman kòd nan yon wikidata lojik pou trete langaj:

Nòt Data Scientist la: Yon Revizyon Pèsonalize nan Lang Rechèch Done yo

Materyèl: Mwen pral bay isit la yon koup nan lyen ki mennen nan lang modèn pwogramasyon lojik Answer Set Programming - Mwen rekòmande etidye li:

Nòt Data Scientist la: Yon Revizyon Pèsonalize nan Lang Rechèch Done yo

Sous: www.habr.com

Add nouvo kòmantè