Tražim izradu algoritma, procjena cijene

Pozdrav,
algoritam bi trebao čitati oglase (string) i prepoznavati određene elemente unutar tih oglasa.
Primjeri oglasa su sljedeća facebook grupa: https://www.facebook.com/groups/trazim.nudim.prijevoz/

…to su ljudi koji sheraju prijevoz.
Algoritam nakon što pročita oglas bi trebao iz istog zaključiti sljedeće stvari:

-jeli osoba vozač ili putnik
-od kuda do kuda osoba putuje
-datum kada putuje
-datum povratka (ukoliko povratak postoji u oglasu)
-cijena prijevoza (ukoliko je spomenuta)
-broj slobodnih mjesta (ukoliko su spomenuta)

Algoritam bi trebao više od 90% oglasa točno dekodirati. Što znači da ne propusti niti jednu gornju stavku ukoliko ista postoji u oglasu. U taj postotak se ne računaju spam oglasi, engleski oglasi…ali zato se računaju različiti hrv. dijalekti, te bosanski…srpski način govora. Tako da prava kontrolna skupina su sve facebook stranice istih namjena iz spomenutih država.

Kako vam se čini zadatak? :slight_smile: …ima li zainteresiranih i koja bi bila cijena za ovakav algoritam. Hvala.

Iskreno, to mozes odmah zaboraviti buduci da nema nikakve propisane forme niti se radi o standardiziranom obliku oglasa iz kojeg bi se dalo parsati elemente, informacije i sve drugo. Cak i sam FB koji je organizacija od nekoliko tisuca ljudi ima probleme u filtriranju SPAM oglasa, prepoznavanju nekakvih nezeljenih postova i sl.

Ako bi se radilo o nekakvom portalu ili dr. stranici sa standardiziranim oblikom oglasa … gdje su svi elementi i pozicije informacija iste. . onda nije problem … a ovako … na FB se moze svasta nadrobiti.

1 Like

Koliko si posto siguran u svoj odgovor?

Razumijem da je nemoguće napraviti 100%-tno dekodiranje oglasa, ali barem da se u nekom postotku riješi? I kolika bi bila cijena za neki x% dekodiranja?

Pa ako mi možemo razumjeti hrvatski jezik, zašto nebi i računalo moglo razumjeti neke određene fraze koji ljudi koriste??

Vrlo sam siguran u svoj odgovor, jer sam i sam radio nesto slicno … primjerice povlacenje podataka sa 20 webova koji nude privatni smjestaj. u recimo 15 webova je to bilo standardizirano, znala se pozicija elemenata, no u ostaih 5 je to bilo “s brada - s dola” … pa se cak nije mogla napraviti automatizacija … vec sam morao platit 3-4 studentice da kucaju rucno u aplikaciju.

Ovdje je glavni problem sto oglas nije tipiziran, nema jasnih pozicija ni lokacija informacija, a jos na sve to ljudi su nepismeni i/ili cesti su tipfeleri pa su imena gradova pogresna, spojena s interpunkcijom, svi oglasi nemaju sve informacije … i brdo jos drugih stvari. Ne usudim se uopce ni prognozirati kolika bi bila tocnost automatiziranog povlacanja.

Vjeruj mi kad ti kazem da ce te manje vremena, zivaca i para kostati da nekog zaposlis da svakih par sati poglda FB i to prekuca u bazu.

Ovo je naravno teže od parsiranja bilo kakve forma, pa makar bila ona s brda i s dola generirana.
Također, ljudi su nepismeni i rade razno razne tipfelere. Svejstan sam toga…isto tako sam svjestan da naš um nekako uspije pročitati te tipfelere.
Svjestan sam da nekad neki elementi oglasa nisu napisani rječima. Npr. na povratak može ukazivati poredak gradova, bez da korisnik spominje povratak uopće. Recimo: " Vozim sutra zg-ri , ri-zg."
To korisnik naravno može napisati na 1001 različitu kombinaciju, svjestan sam i toga :slight_smile:

Svjestan sam da datume ljudi vole pisati:
Vozim: 1.12 ili 2.12 ili 3.12
Ili: Vozim 1,2,3.12
Ili: vozim 1 2 ili 3.12 …kombinacije su takoreć beskonačne, ali ipak nisu beskonačne :slight_smile:

I nitko nije rekao da će se algoritam koristiti za prekucavanje oglasa :slight_smile: , ali međuostalim i tako će naravno dobro doći.

Cijena zaista nije problem, samo trebam ponude koje još nigdje nisam uspio pronaći.

Možemo osmisliti i da cijena ovisi o postotku dekodiranja.
Znači neka je ukupna cijena za algoritam X kuna. Ta ukupna cijena se ostvaruje samo za 100%-tno dekodiranje…i sad napravimo ovisnost o postotku dekodiranja izračun cijene algoritma.

S time da bi to bila eksponencijalna funkcija, jer 50% dekodiranja nije u ovom slučaju pola od 100% dekodiranja.
Prosto iz razloga što se to može gledati na sljedeći način:
100%-alogoritam radi
90%- algoritam radi vrlo dobro
80% - algoritam radi prilično jadno
50%- algoritam ne radi…on izgleda više kao da pogađa a fula svaku drugu.

Tako da vaše ponude slobodno možete poredati u ovisnosti postotka dekodiranja koji bi bio postignut.

Malo sam bacio oko na 5-6 zadnjih objava na toj grupi, i… ajme majko. Ako karakteriziras 80% kao “prilicno jadno”, onda ce ti svako rjesenje bit prilicno jadno.
Oglasi poput onog di zenska oce vidit Bukurest i dvorac grofa Drakule su definitivno miss u algoritmu (em ti triba baza svih gradova na svitu sa svim svojim tipfelerima i hrvatskim/engleskim/izvornim imenima, em zbog naslova linka “nova godina” ne smi zavrsit ko odrediste).
Uglavnom, mislim da bi triba imat bazu “odredista”, i da bi definitivno triba bit ukljucen nekakav ljudski faktor tu - u smislu validacije “sumnjivih” hitova.
Ako je okej da algoritam kaze “neman pojma sta je ovo, daj rucno prekontroliraj”, onda mozda i mozes imat nesto poluautomatizirano. Ako ne, onda je bolje platit studenta da sam pretipkava.

Trebas JAKU bazu podataka, i opet neces imati sve mogucnosti… Vecinu stvari je moguce predvidjeti (tipfeleri i ostale mane) ili naknadno poboljšati. Algoritam koji ima za početak ogromnu bazu iz koje će zaključivati na temelju ‘iskustva’ ne može prvih N mjeseci/godina raditi preko 60% tocnosti. Što je baza veća algoritam ući, to je umjetna inteligencija, dobar izazov ali sumnjam, volio bi da nam javis ako si uspio ili netko uspio ti to odraditi.

Pogledaj kako radi google translate, kako je google rješio taj problem, koristio je skoro cijeli web da nauci pojedine dijalekte i sl. i opet probaj otici i napisati neku rečenicu sa 4+ riječi i već je gramatički netočno…

Sretno :smiley:

Kao što sam napomenuo, to bi spadalo pod spam oglas…koji se ne trebaju računati da su dio kontrolne skupine.

Bitno je da se dekodiraju oglasi koji su predani u smislu da netko pronađe vozača ili putnika. Sve ostalo se može smatrati kao spam.

Također, nije bitno da algoritam poznaje gradove cijelog svijeta, jer se takvi oglasi ne pojavljuju u kontrolnoj skupini.
Bitno je da pokrije samo gradove iz kontrolne skupine. Tamo će naravno uletiti koji grad izvan opsega koji algoritam prepoznaje, ali ti gradovi neće bitno uništiti postotak prepoznavanja jer nisu česti u oglasima.

Na tragu rješenja smo :smile:

No pitanje je međuostalim i kolika je vaša procjena za cijenu izrade takvog algoritma. Možete se usuditi to procjeniti valjda iako niste ready to go raditi to.

Hvala, sreća neće škoditi naravno. :slight_smile:

Iskreno … nebih se usudio ni procjeniti ni zapoceti navedeno … buduci da ne vidim starting point a ni ending point projekta. Baze gradova, drzava, rijeci … to nije problem: Problemi su tu puno dublji … necu se ponavljat :slight_smile: A isto tako glupo je racunat cijenu za izradu algoritma po postotku uspjesnosti buduci da se taj postotak nemoze definirati, on se moze odrediti po svakome slucaju a nikako globalno buduci da postoji N varijacija oglasa koji se mogu napisati ovako i onako. Inace sam web i windows developer (php, ASP.net . vb.net) vise od 6 godina … i ne usudim se ni procjeniti cijenu kolko bi kostalo a niti zapoceti navedeno :smiley: Ocekujem misljenja i procjene drugih developera :smiley:

Baza ti je jednako velik problem koliko i “algoritam”. A algoritam ne uci sam. Mora postojat ljudsko oko koje ce mu pomoc pri odlucivanju. Ni google ne uci sam, nego se pouzdaje na user input.
Treci “problem” je sve ostalo sto cini aplikaciju. Od dohvata podataka (mora postojat nekakav crawler ili koristit facebook api), do prezentacijskog sloja (sto kad algoritam skonta tko ide i gdje? sto napravit s tim podacima). Samo ovo moze potrajat i vise nego izrada algoritma za parsiranje stringova.

Teoretski se posao moze procjenit po utrosen satu za razvoj, testiranje i debugiranje … al kakav je problem … i kolko ce tu biti testinga, korekcija i dr. … tu ce bit para i para :smiley:

Ma cak dohvacanje podataka sa FB i nije takav problem … glavni je problem odluciti sto naprabviti dalje i kako rjesiti algoritam za obradu podataka. Ovo gdje podaci idu … to je manji problem … valjda ce narucitel imati nekakvu sprancu tipa strukturu baze gdje ce se pucati i spremati podaci.

Niti sam ja napisao da treba znati što dalje i što prije. Netreba čak niti ta osoba dohvaćati stringove…dovoljno je da algoritam kreće od stringa kojeg treba parsirati.
A naravno da sam svjestan da sučelje i sve ostalo gdje će se taj algoritam ugraditi je poseban dio kolača…al ko što reče in4hr, to je zanemariv problem ovdje :slight_smile:

Btw. in4hr, računica ti ne valja…jer nisu samo sati rada u igri. (Iako naravno igraju bitnu ulogu)
No pazi ovo, recimo utrošiš godinu dana posla i daš mi algoritam koji dekodira posao sa 20% točnošću…ili da bude drastičnije, sa 3% točnošću xd. Ja naravno onda plaćam “ništa” kad bi gledali samo sate. Zato se mora uzeti u obziri i uspješnost izvedbe.

Sad je na developeru da procjenjuje rizik posla…jer riskira da algoritam nebu dobro radio, a da on tu niš nemre. Tak da cijenu u startu mora aproksimirat pomoću shvaćanja rizika u koji ulazi. Što po meni samo dodatno podebljava cijenu izrade…ali time i povećava ukupnu dobit u slučaju uspješnog algoritma. Dok recimo u slučaju loše izvedbe, developer po meni mora snositi dio odgovornosti, što će se odbiti na njegovoj satnici. Tak da nisu samo sati :slight_smile:

Baš me živo zanima tko će se prvi usuditi baciti ikakvu procjenu, hehe.

Baza nije problem? Baza je veliki problem. I kako je popunit, i kako je strukturirat. Pa tocnost ovisi o bazi koliko i o algoritmu. Ako baza zna da je vz, Vz-a, VŽ, i vraždina = Varaždin, i strukturirana je tako da joj ne treba 15 minuta da to skonta, onda sami algoritam nije neki problem. Trcis kroz string i nađes kljucne rijeci koje su ti poznate (jer jel, neko ti je vec pripremio bazu). Kad nađes poznate stvari, iz konteksta nije tesko odlucit je li oglasivac vozi ili trazi, ni sta je pocetna a sta odredisna tocka.
Dohvacanje ce napravit netko drugi i sto dalje s podacima ce odlucivat neko drugi?
Iskreno, da trenutno nisam zaokupljen, uz gornje pretpostavke, ja bi uzeo posao.

Misliš da je lako skužiti početnu i odredišnu točku?
Problem je malo dublji. Korisnici ne pišu samo:
"Vozim zg vž."
Vole se izraziti na 1001 način. Tipa:
Vozim za vž iz zg.” (Primjeti obrtanje pozicija polazišta i odredišta. Varaždin je u ovom primjeru destinacija, a nalazi se ispred zagreba!)
ili
"Vozim kroz vž iz zg za osijek."
Onda sa istim gradovima vrlo često spominju i opcije povratka, tipa:
Vozim sutra kroz vž iz zg za osijek os-zg se vraćamo isti dan. U varaždinu se zadržavamo pola sata.

(Za točke naravno ne mare previše xd)

Tako da imaš na kraju hrpetinu pronađenih gradova, ali algoritam mora puno više riječi razumjeti da bi znao što koji grad predstavlja.
Ista problematika se pojavljuje i sa datumima i datumom povratka. Osim da detektiraš datum unutar stringa koji može biti napisan na razno razne varijante…od brojeva do spominjanja tipa: "iduće nedjelje vozim…"
I kad pronađeš datum još moraš znati što on predstavlja. Jer imaš točan datum vožnje, interval vremena u kojem se vožnja može desiti, tipa:
“idućeg tjedna bilo kad mi odgovara…”
"vozim u petak ili subotu ujutro, povratak u nedjelju"
Znači, isto tako za povratak imaš razne varijante datuma.

A dali je osoba vozač ili putnik, to se također da reći na hrpu različitih načina. U mnogo slučajeva iste riječi predstavljaju i putnika i vozača, samo redosljed riječi odaje vozača ili putnika, …ili neki sitni član koji sam za sebe nema bitnog značenja, kao recimo u sljedećem primjeru:

Ide li netko iz zg za vž a da ima tri slobodna mjesta?” <- ovo je recimo putnik koji traži prijevoz
"Ide li netko iz zg za vž , ima tri slobodna mjesta?" <- ovo je recimo vozač koji nudi prijevoz.

Hoćem ukazati da problem postoji na razini strukture rečenice kojih ima nebrojeno puno kombinacija.

Tako je, algoritam treba samo parsirati string…sve ostalo nije u opisu posla. I mislim da je to više nego dovoljno posla :slight_smile:

Ma nista od tog nije toliki problem koliko “razumit” sta je koja ric u stringu, a cemu sluzi baza. Sve ostalo je poprilicno jednostavno naucit program tokom vrimena. Izuzece su izrazito glupo slozene recenice u kojoj se spominje vise gradova, ali kako ljudskoj gluposti nema kraja, tako nema kraja ni mogucim varijacijama, i to su situacije u kojima algoritam jednostavno javlja da ne moze resolveat sta vec triba, i takvi slucajevi prolaze kroz ljudsku provjeru.

Ovo je recimo primjer ljudske gluposti:
“Ide li netko iz zg za vž , ima tri slobodna mjesta?”

Ovu recenicu ni ja ne razumin, tako da nece ni program.

A ovo je primjer potpuno normalne objave koja se bez problema “shvati”:
“Vozim sutra kroz vž iz zg za osijek os-zg se vraćamo isti dan. U varaždinu se zadržavamo pola sata.”

Kontrolnu skupinu ispunjavaju ljudi, tako da su pune ljudskih gluposti. :slight_smile:
Ovo gore je još odlična rečenica kakvih ima.
Kad bi se algoritam orijentirao samo na lijepo napisane rečenice…bio bi ohoho ukupan score ispod 90% točnosti.

Inače sam ja s tom rečenicom samo htio ukazati na problematiku, evo realnog primjera za istu stvar:

suprug ide 15.12.2014 M.Središće ČK ZG Maksimir oko 8 sati ,vozi neke stvari ali ima 3 mjesta slobodna, info isključivo inbox.

Sad bi isti oglas mogao ići i ovako:

idemo 15.12.2014 M.Središće ČK ZG Maksimir oko 8 sati ,troje nas je pa bi bilo dobro da ima 3 mjesta slobodna info isključivo inbox.

To su sve smislene rečenice. Hoću ukazati da konstrukciju rečnice oblikuju sitni članovi. Vrlo često korišteni i nepraktično i ne gramatički…bez točki, bez zareza. Od svega tog kupusa riječi je najmanji problem pronaći i detektirati gradove…teže je znati što oni znače u ukupnom smislu oglasa.

No ako ti možeš rješiti problem, nama se ne žuri. :slight_smile: Čekat ćemo i dobro ćemo platiti za “uspješan” algoritam. Samo reci ponudu.

Vidis, jedini pravi problem koji ja vidim u gornjim primjerima je M.Sredisce i Maksimir. Recimo da popisat vece gradove i njihove kratice i izvedenice nije veliki problem. Sve ostalo je skroz izvedivo.
Aplikacija ce razlicite varijante recenica naucit s vremenom, to stvarno nije toliki problem koliko ti se cini. Mala rjecica ili interpunkcija - nebitno. Međutim, da bi aplikacija ucila, potreban joj je feedback. A feedback u tvom slucaju moze bit samo ziva osoba koja provjerava i unosi nove stvari u bazu kako aplikacija nailazi na rijeci/fraze koje ne razumi. Al to zaista ne ovisi o algoritmu; odnosno na uspjesnost ce zaista utjecat koliko toga imas zapisano u bazi. Barem u rjesenju kakvog ja imam u glavi.
Iskreno, zanimljiv mi je projektic, i rado bi ga proba doma isprogramirat cisto za svoju mozdanu gimnastiku. Al vremena bas i nemam.

1 Like