Olen juba näidanud, kuidas luua Wikipedia lehelt teadmiste graafik. Kuna postitus pälvis aga palju tähelepanu, otsustasin uurida teisi valdkondi, kus teadmiste graafiku koostamiseks on mõttekas kasutada NLP tehnikaid. Minu arvates on biomeditsiini valdkond suurepärane näide, kus andmete esitamine graafikuna on mõttekas, kuna analüüsite sageli geenide, haiguste, ravimite, valkude ja muu vahelisi koostoimeid ja seoseid.
Ülaltoodud visualiseeringus on meil askorbiinhape, tuntud ka kui C-vitamiin, ja mõned selle seosed teiste mõistetega. Näiteks näitab see, et C-vitamiini saab kasutada kroonilise gastriidi raviks.
Nüüd võiks domeeniekspertide meeskond lasta teie jaoks kaardistada kõik need seosed ravimite, haiguste ja muude biomeditsiiniliste kontseptsioonide vahel. Kuid kahjuks ei saa paljud meist endale lubada palgata arstide meeskonda, kes meie eest tööd teeks. Sel juhul võime nende suhete automaatseks ekstraheerimiseks kasutada NLP-tehnikaid. Hea osa on see, et saame kasutada NLP-konveierit kõigi sealsete uurimistööde lugemiseks, ja halb on see, et kõik saadud tulemused ei ole täiuslikud. Arvestades aga, et minu kõrval pole teadlaste meeskonda, kes on valmis seoseid käsitsi eraldama, kasutan NLP tehnikaid, et koostada oma biomeditsiiniliste teadmiste graafik.
Kasutan selles ajaveebipostituses ühte uurimistööd, et juhendada teid kõigi biomeditsiiniliste teadmiste graafiku koostamiseks vajalike sammudega – Naha regenereerimise ja juuste kasvu koetehnoloogia.
Lehe kirjutas Mohammadreza Ahmadi. Artikli PDF-versioon on saadaval CC0 1.0 litsentsi all. Teeme teadmiste graafiku koostamiseks läbi järgmised sammud:
- PDF-dokumendi lugemine OCR-iga
- Teksti eeltöötlus
- Biomeditsiinilise kontseptsiooni äratundmine ja sidumine
- Suhte väljatõmbamine
- Väline andmebaasi rikastamine
Selle postituse lõpuks koostate järgmise skeemiga graafiku.
Graafiku salvestamiseks kasutame graafide andmebaasi Neo4j, millel on märgistatud atribuutide graafiku mudel. Igal artiklil võib olla üks või mitu autorit. Jagame artikli sisu lauseteks ja kasutame NLP-d nii meditsiiniliste üksuste kui ka nende suhete eraldamiseks. Võib olla veidi intuitiivne, et suhete asemel salvestame olemitevahelised suhted vahesõlmedena. Kriitiline tegur selle otsuse taga on see, et tahame omada kontrolljälge lähteteksti kohta, millest seos eraldati. Sildistatud atribuutide graafiku mudeliga ei saa teil olla seost, mis osutab teisele suhtele. Sel põhjusel muudame meditsiiniliste mõistete vahelise seose vahepealseks sõlmeks. See võimaldab ka domeenieksperdil hinnata, kas seos ekstraheeriti õigesti või mitte.
Teel demonstreerin ka rakendusi, kuidas konstrueeritud graafikut kasutada salvestatud teabe otsimiseks ja analüüsimiseks.
Sukeldume otse sellesse!
Kui see põhjalik hariv sisu on teile kasulik, tellige meie AI-uuringute meililist hoiatada, kui avaldame uut materjali.
PDF-dokumendi lugemine OCR-iga
Nagu mainitud, on uurimistöö PDF-versioon avalikkusele kättesaadav CC0 1.0 litsentsi alusel, mis tähendab, et saame selle Pythoniga hõlpsasti alla laadida. Me hakkame kasutama pütesserakt teek, et PDF-ist teksti eraldada. Minu teada on pytesseract'i teek OCR-i jaoks üks populaarsemaid teeke. Kui soovite järgida koodinäiteid, olen koostanud a Google Colabi märkmik, nii et te ei pea ise koodi kopeerima-kleepima.
import requests import pdf2image import pytesseract pdf = requests.get('https://arxiv.org/pdf/2110.03526.pdf') doc = pdf2image.convert_from_bytes(pdf.content) # Get the article text article = [] for page_number, page_data in enumerate(doc): txt = pytesseract.image_to_string(page_data).encode("utf-8") # Sixth page are only references if page_number < 6: article.append(txt.decode("utf-8")) article_txt = " ".join(article)Teksti eeltöötlus
Nüüd, kui artikli sisu on saadaval, jätkame ja eemaldame tekstist jaotiste pealkirjad ja jooniste kirjeldused. Järgmisena jagame teksti lauseteks.
import nltk nltk.download('punkt') def clean_text(text): """Remove section titles and figure descriptions from text""" clean = "n".join([row for row in text.split("n") if (len(row.split(" "))) > 3 and not (row.startswith("(a)")) and not row.startswith("Figure")]) return clean text = article_txt.split("INTRODUCTION")[1] ctext = clean_text(text) sentences = nltk.tokenize.sent_tokenize(ctext)Biomeditsiinilise nimega üksuse linkimine
Nüüd tuleb põnev osa. Neile, kes pole NLP-s ja nimega üksuste tuvastamise ja linkimise kasutajad, alustame mõne põhitõega. Nimega olemi tuvastamise tehnikaid kasutatakse asjakohaste üksuste või mõistete tuvastamiseks tekstis. Näiteks biomeditsiini valdkonnas tahame tekstis tuvastada erinevaid geene, ravimeid, haigusi ja muid mõisteid.
Selles näites tuvastas NLP-mudel tekstis geenid, haigused, ravimid, liigid, mutatsioonid ja rajad. Nagu mainitud, nimetatakse seda protsessi nimega olemi tuvastamiseks. Nimetatud olemi tuvastamise täiendus on nn nimega olemi linkimine. Nimetatud olemi linkimise tehnika tuvastab tekstis asjakohased mõisted ja püüab neid sihtteadmiste baasiga seostada. Biomeditsiini valdkonnas on mõned sihtteadmiste baasid:
- MESH
- CHEBI
- OMIM
- ÜHENDAMINE
- ja teised
Miks me peaksime siduma meditsiiniüksused sihtteadmiste baasiga? Peamine põhjus on see, et see aitab meil tegeleda olemi täpsustustega. Näiteks me ei soovi, et graafikul oleks eraldi üksused, mis esindavad askorbiinhapet ja C-vitamiini, kuna domeenieksperdid võivad teile öelda, et need on samad asjad. Teisene põhjus on see, et kontseptsioonide kaardistamisel sihtteadmiste baasiga saame oma graafikumudelit rikastada, hankides teavet kaardistatud mõistete kohta sihtteadmiste baasist. Kui kasutame uuesti askorbiinhappe näidet, saaksime CHEBI andmebaasist hõlpsasti lisateavet hankida, kui me seda juba teame. CHEBI id.
Olen juba mõnda aega otsinud korralikku avatud lähtekoodiga eelkoolitatud biomeditsiinilise nimega üksust. Paljud NLP mudelid keskenduvad ainult teatud meditsiiniliste mõistete, näiteks geenide või haiguste alamhulga ekstraheerimisele. Veelgi harvem on leida mudel, mis tuvastab enamiku meditsiinilisi mõisteid ja seob need sihtteadmiste baasiga. Õnneks olen komistanud BERN[1], neuraalsete biomeditsiiniliste üksuste tuvastamise ja mitut tüüpi normaliseerimistööriist. Kui ma õigesti aru saan, on see täppishäälestatud BioBerti mudel, millel on erinevad nimega üksuste sidumise mudelid, mis on integreeritud kontseptsioonide kaardistamiseks biomeditsiiniliste sihtide teadmistebaasidega. Lisaks sellele pakuvad nad ka tasuta REST-i lõpp-punkti, nii et me ei pea tegelema sõltuvuste ja mudeli tööle saamisega. Eespool kasutatud biomeditsiiniline olemituvastuse visualiseerimine loodi BERN-i mudeli abil, nii et teame, et see tuvastab tekstis geene, haigusi, ravimeid, liike, mutatsioone ja radu.
Kahjuks ei määra BERN-i mudel kõigile mõistetele sihtteadmistebaasi ID-sid. Seega olen koostanud skripti, mis esmalt vaatab, kas kontseptsioonile on antud selge ID, ja kui seda ei ole, kasutab see id-na olemi nime. Arvutame välja ka lausete teksti sha256, et hiljem, kui teeme seose ekstrakti, oleks konkreetseid lauseid lihtsam tuvastada.
import hashlib def query_raw(text, url="https://bern.korea.ac.kr/plain"): """Biomedical entity linking API""" return requests.post(url, data={'sample_text': text}).json() entity_list = [] # The last sentence is invalid for s in sentences[:-1]: entity_list.append(query_raw(s)) parsed_entities = [] for entities in entity_list: e = [] # If there are not entities in the text if not entities.get('denotations'): parsed_entities.append({'text':entities['text'], 'text_sha256': hashlib.sha256(entities['text'].encode('utf-8')).hexdigest()}) continue for entity in entities['denotations']: other_ids = [id for id in entity['id'] if not id.startswith("BERN")] entity_type = entity['obj'] entity_name = entities['text'][entity['span']['begin']:entity['span']['end']] try: entity_id = [id for id in entity['id'] if id.startswith("BERN")][0] except IndexError: entity_id = entity_name e.append({'entity_id': entity_id, 'other_ids': other_ids, 'entity_type': entity_type, 'entity': entity_name}) parsed_entities.append({'entities':e, 'text':entities['text'], 'text_sha256': hashlib.sha256(entities['text'].encode('utf-8')).hexdigest()})Olen kontrollinud nimetatud üksuse linkimise tulemusi ja ootuspäraselt pole see täiuslik. Näiteks ei määratle see tüvirakke meditsiinilise kontseptsioonina. Teisest küljest tuvastas see ühe üksuse nimega "süda, aju, närvid ja neer". Siiski on BERN endiselt parim avatud lähtekoodiga biomeditsiiniline mudel, mida ma oma uurimise käigus leida võisin.
Koostage teadmiste graafik
Enne seose eraldamise tehnikate vaatamist koostame biomeditsiiniliste teadmiste graafiku, kasutades ainult üksusi ja uurime võimalikke rakendusi. Nagu mainitud, olen ette valmistanud a Google Colabi märkmik mida saate kasutada selles postituses olevate koodinäidete järgimiseks. Graafiku salvestamiseks kasutame Neo4j-d. Te ei pea tegelema kohaliku Neo4j keskkonna ettevalmistamisega. Selle asemel saate kasutada tasuta Neo4j liivakasti eksemplari.
Alusta Tühi projekt liivakastis ja kopeerige ühenduse üksikasjad Colabi märkmikusse.
Nüüd saate Neo4j ühenduse sülearvutis ette valmistada.
from neo4j import GraphDatabase import pandas as pd host = 'bolt://3.236.182.55:7687' user = 'neo4j' password = 'hydrometer-ditches-windings' driver = GraphDatabase.driver(host,auth=(user, password)) def neo4j_query(query, params=None): with driver.session() as session: result = session.run(query, params) return pd.DataFrame([r.values() for r in result], columns=result.keys())Alustame autori ja artikli importimisest graafikusse. Artikli sõlm sisaldab ainult pealkirja.
author = article_txt.split("n")[0] title = " ".join(article_txt.split("n")[2:4]) neo4j_query(""" MERGE (a:Author{name:$author}) MERGE (b:Article{title:$title}) MERGE (a)-[:WROTE]->(b) """, {'title':title, 'author':author})Kui avate Neo4j brauseri, peaksite nägema järgmist graafikut.
Saate importida laused ja mainitud olemid, käivitades järgmise Cypher-päringu:
neo4j_query(""" MATCH (a:Article) UNWIND $data as row MERGE (s:Sentence{id:row.text_sha256}) SET s.text = row.text MERGE (a)-[:HAS_SENTENCE]->(s) WITH s, row.entities as entities UNWIND entities as entity MERGE (e:Entity{id:entity.entity_id}) ON CREATE SET e.other_ids = entity.other_ids, e.name = entity.entity, e.type = entity.entity_type MERGE (s)-[m:MENTIONS]->(e) ON CREATE SET m.count = 1 ON MATCH SET m.count = m.count + 1 """, {'data': parsed_entities})Koostatud graafiku kontrollimiseks saate käivitada järgmise Cypheri päringu:
MATCH p=(a:Article)-[:HAS_SENTENCE]->()-[:MENTIONS]->(e:Entity) RETURN p LIMIT 25
Kui olete andmed õigesti importinud, peaksite nägema sarnast visualiseerimist.
Teadmiste graafiku rakendused
Isegi ilma seose eraldamise vooluta on meie graafikul juba paar kasutusjuhtu.
Otsingumootor
Võiksime oma graafikut kasutada otsingumootorina. Näiteks võite kasutada järgmist Cypher-päringut, et leida lauseid või artikleid, mis mainivad konkreetset meditsiinilist olemit.
MATCH (e:Entity)<-[:MENTIONS]-(s:Sentence) WHERE e.name = "autoimmune diseases" RETURN s.text as result
Tulemused
Koosesinemise analüüs
Teine võimalus on koosesinemise analüüs. Saate määratleda meditsiiniliste üksuste koosesinemise, kui need esinevad samas lauses või artiklis. Leidsin artikli[2], mis kasutab meditsiiniliste kaasnähtude võrgustikku, et ennustada uusi võimalikke seoseid meditsiiniliste üksuste vahel.
Linki ennustamine MeSH kaasesinemise võrgus: esialgsed tulemused – PubMed
Võite kasutada järgmist Cypher-päringut, et leida olemeid, mis esinevad sageli samas lauses.
MATCH (e1:Entity)<-[:MENTIONS]-()-[:MENTIONS]->(e2:Entity) MATCH (e1:Entity)<-[:MENTIONS]-()-[:MENTIONS]->(e2:Entity) WHERE id(e1) < id(e2) RETURN e1.name as entity1, e2.name as entity2, count(*) as cooccurrence ORDER BY cooccurrence DESC LIMIT 3
Tulemused
üksus1 üksus2 kokkusattumine nahahaigused diabeetilised haavandid 2 kroonilised haavad diabeetilised haavandid 2 nahahaigused kroonilised haavad 2 Ilmselgelt oleksid tulemused paremad, kui analüüsiksime tuhandeid või rohkemgi artikleid.
Kontrollige autoriteadmisi
Seda graafikut saate kasutada ka autori teadmiste leidmiseks, uurides meditsiinilisi üksusi, millest nad kõige sagedamini kirjutavad. Selle teabe põhjal saate soovitada ka tulevast koostööd.
Käivitage järgmine Cypheri päring, et kontrollida, milliseid meditsiinilisi üksusi meie üks autor uurimistöös mainis.
MATCH (a:Author)-[:WROTE]->()-[:HAS_SENTENCE]->()-[:MENTIONS]->(e:Entity) RETURN a.name as author, e.name as entity, MATCH (a:Author)-[:WROTE]->()-[:HAS_SENTENCE]->()-[:MENTIONS]->(e:Entity) RETURN a.name as author, e.name as entity, count(*) as count ORDER BY count DESC LIMIT 5
Tulemused
autor üksus loe Mohammadreza Ahmadi kollageen 9 Mohammadreza Ahmadi põletus 4 Mohammadreza Ahmadi nahahaigused 4 Mohammadreza Ahmadi kollagenaasi ensüümid 2 Mohammadreza Ahmadi Bulloosi epidermolüüs 2 Suhte väljatõmbamine
Nüüd püüame välja tuua seosed meditsiiniliste mõistete vahel. Minu kogemuse põhjal on seose ekstraheerimine vähemalt suurusjärgu võrra raskem kui nimega olemi ekstraheerimine. Kui te ei peaks nimega olemi linkimisel ideaalseid tulemusi ootama, võite kindlasti oodata relatsiooni eraldamise tehnikas mõningaid vigu.
Olen otsinud saadaolevaid biomeditsiiniliste seoste ekstraheerimise mudeleid, kuid ei leidnud midagi, mis toimiks koheselt või ei nõuaks peenhäälestamist. Tundub, et suhete kaevandamise valdkond on tipptasemel ja loodetavasti saame sellele tulevikus rohkem tähelepanu pöörata. Kahjuks ei ole ma NLP-ekspert, mistõttu vältisin enda mudeli peenhäälestamist. Selle asemel kasutame paberil põhinevat nullkaadri relatsiooni ekstrakti FewReli nullkaadri piirangu uurimine[3]. Kuigi ma ei soovitaks seda mudelit tootmisse panna, on see lihtsaks demonstratsiooniks piisavalt hea. Mudel on saadaval aadressil Kallistav Nägu, nii et me ei pea tegelema koolituse ega mudeli seadistamisega.
from transformers import AutoTokenizer from zero_shot_re import RelTaggerModel, RelationExtractor model = RelTaggerModel.from_pretrained("fractalego/fewrel-zero-shot") tokenizer = AutoTokenizer.from_pretrained("bert-large-uncased-whole-word-masking-finetuned-squad") relations = ['associated', 'interacts'] extractor = RelationExtractor(model, tokenizer, relations)Nullpildi relatsiooni ekstraktijaga saate määrata, milliseid seoseid soovite tuvastada. Selles näites olen kasutanud seotud ja interaktiivne suhted. Olen proovinud ka spetsiifilisemaid suhtetüüpe, nagu ravi, põhjused ja muud, kuid tulemused ei olnud suurepärased.
Selle mudeliga peate määratlema, milliste olemipaaride vahel soovite seoseid tuvastada. Nimetatud olemi linkimise tulemusi kasutame seose ekstraheerimise protsessi sisendina. Esiteks leiame kõik laused, kus on mainitud kahte või enamat olemit, ja seejärel käivitame need seoste eraldamise mudeli kaudu, et eraldada seosed. Olen määratlenud ka läviväärtuse 0.85, mis tähendab, et kui mudel ennustab seost olemite vahel tõenäosusega, mis on väiksem kui 0.85, siis ignoreerime ennustust.
import itertools # Candidate sentence where there is more than a single entity present candidates = [s for s in parsed_entities if (s.get('entities')) and (len(s['entities']) > 1)] predicted_rels = [] for c in candidates: combinations = itertools.combinations([{'name':x['entity'], 'id':x['entity_id']} for x in c['entities']], 2) for combination in list(combinations): try: ranked_rels = extractor.rank(text=c['text'].replace(",", " "), head=combination[0]['name'], tail=combination[1]['name']) # Define threshold for the most probable relation if ranked_rels[0][1] > 0.85: predicted_rels.append({'head': combination[0]['id'], 'tail': combination[1]['id'], 'type':ranked_rels[0][0], 'source': c['text_sha256']}) except: pass # Store relations to Neo4j neo4j_query(""" UNWIND $data as row MATCH (source:Entity {id: row.head}) MATCH (target:Entity {id: row.tail}) MATCH (text:Sentence {id: row.source}) MERGE (source)-[:REL]->(r:Relation {type: row.type})-[:REL]->(target) MERGE (text)-[:MENTIONS]->(r) """, {'data': predicted_rels})Talletame graafikus nii seosed kui ka lähteteksti, mida kasutatakse selle seose eraldamiseks.
Olemite ja lähteteksti vahelisi ekstraktitud seoseid saate uurida järgmise Cypher-päringuga:
MATCH (s:Entity)-[:REL]->(r:Relation)-[:REL]->(t:Entity), (r)<-[:MENTIONS]-(st:Sentence) RETURN s.name as source_entity, t.name as target_entity, r.type as type, st.text as source_text
Tulemused
Nagu mainitud, pole NLP-mudel, mida olen suhete eraldamiseks kasutanud, täiuslik ja kuna ma ei ole arst, siis ma ei tea, kui palju seoseid see vahele jäi. Need, mille ta tuvastas, tunduvad siiski mõistlikud.
Väline andmebaasi rikastamine
Nagu ma varem mainisin, saame oma graafiku rikastamiseks siiski kasutada väliseid andmebaase, nagu CHEBI või MESH. Näiteks sisaldab meie graafik meditsiinilist olemit Bulloosi epidermolüüs ja me teame ka selle MeSH id.
Epidermolysis bullosa MeSH-id saate hankida järgmise päringuga:
MATCH (e:Entity) WHERE e.name = "Epidermolysis bullosa" RETURN e.name as entity, e.other_ids as other_ids
Saadaoleva teabe leidmiseks võite MeSH-i üle vaadata:
Siin on ekraanipilt saadaolevast teabest MeSH veebisaidil Epidermolysis bullosa kohta. Nagu mainitud, ei ole ma arst, mistõttu ma ei tea täpselt, kuidas oleks parim viis selle teabe graafikus modelleerimiseks. Siiski näitan teile, kuidas seda teavet Neo4j-s hankida, kasutades protseduuri apoc.load.json, et hankida teave lõpp-punktist MeSH REST. Seejärel võite paluda domeenieksperdil seda teavet modelleerida.
Cypheri päring teabe toomiseks MeSH REST-i lõpp-punktist on järgmine:
MATCH (e:Entity) WHERE e.name = "Epidermolysis bullosa" WITH e, [id in e.other_ids WHERE id contains "MESH" | split(id,":")[1]][0] as meshId CALL apoc.load.json("https://id.nlm.nih.gov/mesh/lookup/details?descriptor=" + meshId) YIELD value RETURN value
Teadmiste graafik masinõppe andmesisendina
Viimase mõttena räägin teile kiiresti, kuidas saaksite kasutada biomeditsiiniliste teadmiste graafikut masinõppe töövoo sisendina. Viimastel aastatel on sõlmede manustamise valdkonnas tehtud palju uuringuid ja edusamme. Sõlme manustamismudelid muudavad võrgutopoloogia manustamisruumiks.
Oletame, et koostasite biomeditsiiniliste teadmiste graafiku, mis sisaldab meditsiinilisi üksusi ja mõisteid, nende seoseid ja rikastamist erinevatest meditsiiniandmebaasidest. Võite kasutada sõlme manustamise tehnikaid, et õppida tundma sõlme esitusi, mis on fikseeritud pikkusega vektorid, ja sisestada need oma masinõppe töövoogu. Seda lähenemisviisi kasutavad mitmesugused rakendused, alustades ravimi taaskasutamisest kuni ravimi kõrvaltoimete või kõrvaltoimete prognoosimiseni. Leidsin uurimistöö, mis kasutab uute haiguste võimalike ravivõimaluste prognoosimine[4].
Järeldus
Biomeditsiini valdkond on suurepärane näide teadmiste graafikute rakendamisest. Rakendusi on palju, alates lihtsatest otsingumootoritest ja lõpetades keerukamate masinõppe töövoogudega. Loodetavasti tekkis teil seda blogipostitust lugedes mõned ideed, kuidas saaksite oma rakenduste toetamiseks kasutada biomeditsiiniliste teadmiste graafikuid. Võite alustada a tasuta Neo4j liivakast ja alustage uurimist juba täna.
Nagu alati, on kood saadaval aadressil GitHub.
viited
[1] D. Kim et al., "Närvi nimega olemi tuvastamise ja mitmetüübilise normaliseerimise tööriist biomeditsiinilise teksti kaevandamiseks" IEEE juurdepääs, vol. 7, lk 73729–73740, 2019, doi: 10.1109/ACCESS.2019.2920708.
[2] Kastrin A, Rindflesch TC, Hristovski D. Lingi ennustus MeSH-i koosesinemise võrgus: esialgsed tulemused. Stud Health Technol Inform. 2014;205:579–83. PMID: 25160252.
[3] Cetoli, A. (2020). FewReli nullkaadri piirangu uurimine. sisse 28. rahvusvahelise arvutuslingvistika konverentsi materjalid (lk 1447–1451). Rahvusvaheline Arvutuslingvistika Komitee.
[4] Zhang, R., Hristovski, D., Schutte, D., Kastrin, A., Fiszman, M., & Kilicoglu, H. (2021). Uimastite taaskasutamine COVID-19 jaoks teadmiste graafiku täitmise kaudu. Journal of Biomedical Informatics, 115, 103696.
See artikkel oli algselt avaldatud Andmeteaduse poole ja avaldati autori loal uuesti TOPBOTSis.
Kas teile meeldib see artikkel? Registreeruge, et saada rohkem AI värskendusi.
Anname teile teada, kui avaldame rohkem tehnilist haridust.
Postitus Koostage NLP abil biomeditsiiniliste teadmiste graafik ilmus esmalt TOPBOOTID.
- '
- "
- &
- 10
- 11
- 2019
- 2020
- 2021
- 7
- 9
- a
- MEIST
- juurdepääsetav
- Täiendavad lisad
- haldamine
- ebasoodne
- eespool
- AI
- ai uuringud
- Materjal: BPA ja flataatide vaba plastik
- juba
- alati
- amp
- analüüs
- analytics
- analüüsima
- Teine
- kohaldatav
- rakendused
- rakendatud
- Rakendades
- lähenemine
- artikkel
- kaubad
- seotud
- tähelepanu
- audit
- autorid
- automaatselt
- saadaval
- Alused
- enne
- alla
- BEST
- vahel
- suurim
- Natuke
- Blogi
- Bolt
- Kast
- brauseri
- äri
- helistama
- kandidaat
- kandidaadid
- juhul
- juhtudel
- põhjuste
- väljakutse
- kood
- kombinatsioon
- kombinatsioonid
- Arvutama
- mõiste
- Konverents
- ühendus
- Side
- sisaldab
- sisu
- jätkama
- võiks
- Paar
- Covid-19
- looma
- loodud
- kriitiline
- klient
- Klienditugi
- andmed
- andmebaas
- andmebaasid
- tegelema
- otsustatud
- otsus
- näitama
- Näidatud
- kirjeldama
- detailid
- tuvastatud
- haigused
- Arst
- arstid
- Ei tee
- domeen
- Domeenid
- lae alla
- juht
- uimasti
- Narkootikumide
- ajal
- iga
- kergesti
- serv
- Käsitöö
- haridus-
- mõju
- Lõpp-punkt
- Mootor
- Inseneriteadus
- rikastab
- üksuste
- üksus
- keskkond
- hindama
- sündmus
- täpselt
- näide
- näited
- Välja arvatud
- põnev
- ootama
- oodatav
- kogemus
- ekspert
- teadmised
- ekspertide
- uurima
- FUNKTSIOONID
- Joonis
- rahastama
- esimene
- voog
- Keskenduma
- järgima
- Järel
- avastatud
- tasuta
- Alates
- tulevik
- saamine
- hea
- suur
- Grupp
- juuksed
- juhataja
- Tervis
- aitama
- aitab
- palkama
- Kuidas
- Kuidas
- aga
- hr
- HTTPS
- ideid
- identifitseerima
- pilt
- importivate
- info
- sisend
- Näiteks
- integreeritud
- rahvusvaheliselt
- uurimine
- IT
- ajakiri
- Teadma
- teadmised
- teatud
- Korea
- Õppida
- õppimine
- Õigus
- Raamatukogu
- litsents
- LIMIT
- LINK
- sidumine
- lingid
- koormus
- kohalik
- otsin
- masin
- masinõpe
- TEEB
- käsitsi
- kaart
- kaardistus
- Turundus
- Vastama
- materjal
- tähendus
- vahendid
- meditsiini-
- meditsiin
- keskmine
- mainitud
- mainib
- võib
- Kaevandamine
- vigu
- MIT
- mudel
- mudelid
- rohkem
- kõige
- riiklik
- võrk
- NIH
- sõlmed
- märkmik
- saadud
- avatud
- Operations
- Arvamus
- valik
- et
- Muu
- enda
- Paber
- osa
- Parool
- täiuslik
- palun
- populaarne
- võimalik
- potentsiaal
- ennustada
- ennustus
- Ennustused
- Valmistama
- esitada
- esmane
- protsess
- Toode
- Produktsioon
- projekt
- kinnisvara
- anda
- avalik
- kiiresti
- alates
- Lugemine
- mõistlik
- hiljuti
- soovitama
- suhted
- suhe
- Suhted
- vabastama
- asjakohane
- esindavad
- Taotlusi
- nõudma
- nõutav
- teadustöö
- Resort
- REST
- Tulemused
- tagasipöördumine
- jooks
- müük
- sama
- liivakast
- teadlased
- Otsing
- otsingumootor
- Otsingumootorid
- kesk-
- tunne
- komplekt
- kehtestamine
- kirjutama
- sarnane
- lihtne
- alates
- ühekordne
- kuues
- nahk
- Tõmme
- So
- mõned
- Ruum
- konkreetse
- jagada
- algus
- vars
- Veel
- salvestada
- toetama
- sihtmärk
- meeskond
- Tehniline
- tehnikat
- .
- Allikas
- asi
- tuhandeid
- künnis
- Läbi
- aeg
- Kapslid
- täna
- tööriist
- koolitus
- käsitlema
- liigid
- meie
- all
- mõistma
- Uudised
- us
- kasutama
- kasutamise juhtumid
- väärtus
- eri
- versioon
- visualiseerimine
- veebisait
- M
- kuigi
- Wikipedia
- ilma
- Töö
- Töövoogud
- töötab
- oleks
- X
- aastat
- saak
- Sinu