Knowledge discovery in graph databases built with text mining on raw text

text-mining
graph-databases
artificial-reasoning

(Adavidoaiei Dumitru-Cornel) #1

Un coleg mi-a dat urmatoarea tema de gandire, daca ai putea sa faci un program caruia sa ii dai toata legislatia si apoi sa ii poti pune tot felul de intrebari si sa iti dea raspunsuri, altfel spus sa faca ceea ce ar face un avocat, e un challenge si nu cred ca exista o solutie perfecta avand in vedere cat de incurcata e legistatia.

Intuitia imi zicea ca solutia ar fii sa parsezi textul si ca knowlege representation sa folosesti un graf, partea de reasoning sa fie fie query-uri pe acest graph acestea pot semana cu inferenta de clauze din Prolog.

Dupa o scurta cautare pe net am gasit o solutie comerciala(exista si o versiune free) GraphDB, care sa acopere partea de semantic graph database si care sa suporte reasoning prin inferenta.

O imagine care exemplifica un posibil pipeline:

Si articolul care explica imaginea de mai de sus:
http://ontotext.com/text-mining-graph-databases-work-well-together/


(István F.) #2

Nu vad problema o data ce avem un Natural Language Processing solid.

Daca avem de exemplu legea : “Este interzis consumul si detinerea de stupefiante”. o sa avem keyword-urile interzis, consumul, detinerea si stupefiante. Interzis va duce direct la un tabel cu categorii de pedepse in cazul in care consumul sau detinerea si stupefiante vor fi true. Consumul va fi asociat cu keyword-urile mancat, baut, tras pe nas, prizat, injectat, inhalat, gustat, detinerea va fi asociat cu in buzunar, in locuinta (apartament/casa/garsoniera/sura), in autoturism (care va fi asociat masina, furgoneta, bmw, autobuz…) si stupefiante va fi un tabel cu acid lisergic (timbru), canabis (hasis,iarba,cui), opiu, diazepam (valium,faustan), mdma (ecstasy)…

Daca avem o casuta de cautare in care scriem de exemplu : Este ilegal sa tragi un cui ? inteligenta artificiala o sa caute subiectul - cui - o sa il gaseasca la stupefiante, ilegal o sa fie asociat cu un raspuns da daca interzis este true in analiza legislatiei, va gasi interzis intr-o propozitie in care exista un termen asociat cu cui (stupefiante) doar ca interzis este legat de doua clauze. Va verifica daca a consumat este true, adica daca intrebarea contine un termen asociat cu consumul si daca da va returna articolul din lege si raspunsul Da, este ilegal.

Daca legile nu se contrazic intre ele totul devine la fel de logic de parca ai da un query sql la legi. Generarea asociatiilor intr-un mod automat deja devine un challenge, deoarece ne trebuie un program care sa citeasca carti, articole de tot felul si sa genereze asocieri intre cuvinte cu anumite grade de siguranta in functie de sursa, in rest daca avem maimute care sa faca baza de date cu terminologiile intr-un mod corect nu vad ce e asa complicat.

Problema e ca legile se scriu cu niste smecherii in unele cazuri pe care algoritmul ar trebui sa le recunoasca.


(Adavidoaiei Dumitru-Cornel) #3

Generarea asociatiilor intr-un mod automat deja devine un challenge, deoarece ne trebuie un program care sa citeasca carti, articole de tot felul si sa genereze asocieri intre cuvinte cu anumite grade de siguranta in functie de sursa.

Asta poate face urmatoarea librarie de pe github: Open Information Extraction (Open Information Extraction system runs over sentences and creates extractions that represent relations in text) care e rezultatul proiectului de cercetare Machine Reading condus de profesorul Pedro Domingos.

Dandu-i un text de genul:

The U.S. president Barack Obama gave his speech on Tuesday to thousands of people.

Extrage relatiile dintre argumente:

(Barack Obama, is the president of, the U.S.)
(Barack Obama, gave, his speech)
(Barack Obama, gave his speech, on Tuesday)
(Barack Obama, gave his speech, to thousands of people)

Aceasta tehnologie incearca sa construiasca un World Wide Brain care sa faca mai mult decat search text asa cum face un search engine:


(Adavidoaiei Dumitru-Cornel) #4

O aplicare a knowledge graph in search engine-ul de la Google: