Program uczący się wzorców

0

Szanowne Panie, Panowie

Mam piękną ort!. Otóż marzy mi się program, który magazynuje duże ilości danych, potrafi przeszukać je pod kątem pewnych wzorców i dać odpowiedź, którą będzie trzeba przeanalizować i dokonać wpisu do następnej bazy. Z każdym kolejnym uruchomieniem programu musi operowań na danych z poprzednich "doświadczeń", czyli jakaś baza danych. Pytam, ponieważ dotychczas pisałem programy, których zadaniem była analiza danych, bez magazynowania. Jakie metody, schematy, wzorce, języki mógłbym zastosować, aby posiadać najszybszy czas dostępu do danych?

Prosiłbym o pomoc.

0

A co, wymyśliłeś wreszcie ten idealny translator co chciałeś sprzedać Google swego czasu?

0

Mój wykładowca przekonał mnie, żeby nikomu nie sprzedawać pomysłu (poza tym wg prawa ciężko jest sprzedać pomysł, bez konkretnego projektu), tylko samemu rozwinąć. Tak też się stało i dzięki współpracy z lingwistką języka angielskiego powstał program tłumaczący polski<->angielski, ale tylko zdania proste określające sytuacje statyczne. Na zdania bardziej skomplikowane przyjdzie jeszcze pora. Od października wracam na uczelnie. Temat ten pociągnął za sobą moją chęć nauki neuroinżynierii, neuropsychologi, psychologi ewolucyjnej, biologii, fizyki i informatyki kwantowej (fascynujące zagadnienia). Poczyniłem nauki w programowaniu CUDA, do czasu opanowania memrystorów jest to najlepsza możliwa technologia. Nim więcej wiem, tym ciekawsze projekty się pojawiają.

Dalej czekam na pomoc z posta wyżej.

0

Jakie metody, schematy, wzorce, języki mógłbym zastosować, aby posiadać najszybszy czas dostępu do danych?

Co to jest: "metoda", "schemat", "wzorzec", "dostęp do danych" i jak mają wyglądać dane?

0

Dane mają wyglądać różnie od wartości liczbowych, przez słowa, po tablice 8x8.
Jedne języki dzięki wbudowanym opcją lepiej nadają się do jakichś zadań, a inne dzięki innym są lepsze do innych, tak? To dlatego programów do obsługi muzyki nie pisze się w HTML-u. Jeśli nie mam racji to mi się świat na głowę wali.
via wikipedia: Wzorzec projektowy (ang. design pattern) – w inżynierii oprogramowania, uniwersalne, sprawdzone w praktyce rozwiązanie często pojawiających się, powtarzalnych problemów projektowych.
Napisałem program w C, który operuje na plikach, ale znajomy polecił mi zapytać o bazy danych, bo są lepsze, szybsze przy dziesiątkach tysięcy wpisów.
Jest mi ktoś w stanie pomóc, czy tracę czas?

0
zie1ony napisał(a)

Jedne języki dzięki wbudowanym opcją lepiej nadają się do jakichś zadań, a inne dzięki innym są lepsze do innych, tak? To dlatego programów do obsługi muzyki nie pisze się w HTML-u.
[...]
Jest mi ktoś w stanie pomóc, czy tracę czas?

HTML nie jest nawet językiem programowania. Tak, tracisz czas, na urojenia.

Język programowania to tylko narzędzie, nie jest czynnikiem kluczowym. Niewielkie różnice wydajności również są pomijalne...

0

Z chęcią zobaczyłbym ten translator...

0

@zie1ony nie żebym studził zapał, ale idealny translator nie może zostać napisany. Dowód?

  • żeby poprawnie przetłumaczyć dany tekst trzeba go zrozumieć (bo na przykład słowo "prawo" po polsku moze oznaczać angielskie "law", "right" [i masę innych, ale to nie takie istotne teraz])
  • żeby zrozumieć tekst trzeba usunąć wieloznaczności
  • żeby usnąć wieloznaczności trzeba zrozumieć tekst (bo np. słowo "pika" może oznaczać: rodzaj broni, kolor w kartach, pikanie)
    Wynika z tego ze przetwarzanie języka naturalnego jest zwyczajnie bardzo trudne, a poprawne tłumaczenie go na inny język to już sprawa ekstremalna.

A co do pytania postawionego w pierwszy poście, poczytaj o tym: http://en.wikipedia.org/wiki/Expert_system

0

Wbrew pozorom nie jest tak jak mówisz. Taki translator działa jak mózg człowieka. Jeśli znasz dwa języki to potrafisz coś przetłumaczyć nie dlatego, że znasz odpowiadające zasady gramatyczne, ale dzięki temu, że potrafisz oddać różnymi językami to co masz na myśli. Trzeba pamiętać, że sam sens myśli nie jest ujęty w żadnym języku. Wystarczy zamienić sens na coś co jest uniwersalne w każdym języku. W moim przypadku jest to obraz. 99,99% wszystkich zdań prostych można przedstawić jako jakiś obrazek, ciąg obrazków, albo sekwencja audio-wizualna. Korzystając z odpowiedniej biblioteki piktogramów jesteś w stanie zamienić zdanie na obrazek, a później obrazek na zdanie w innym języku. A dalej to już tylko algorytm przeszukujący wzory i olbrzymia ilość danych.

Dalej możesz mi zarzucić, że program nie "rozumie" o co chodzi, ale tak samo jest z nami. Nikt nie zrozumiał jeszcze czemu prawo grawitacji istnieje i co je powoduje, a pomimo tego żyjemy wg tego prawa i śmiemy twierdzić, że "wiemy" co się dziej dookoła nas. Przekonany?

Bardzo dziękuję za System ekspertowy. Czemu od razu ktoś nie mógł tego napisać? Wszystkim tylko krytyka w głowie, a ja po prostu nie chciałem tego drugi raz wymyślać, bo już się kiedyś komuś nudziło.

0

Zupełnie mnie nie przekonujesz. To co mówisz to totalna abstrakcja i stek bzdur. Ciekawe jak chcesz zamieniać zdania na obrazki ;] Żeby to zrobił musiałbyś rozumieć sens zdania, wiedzieć co chcesz przekazać. A że nie da się tego zrobić udowodniłem wyżej. Człowiek nie ma takiego problemu bo potrafi określić co ma sens a co go nie ma. Komputer takich rzeczy nie potrafi.
Zresztą czy ty juz cokolwiek z tego wykonałeś w praktyce, czy zwyczajnie opowiadasz nam tutaj o swoim genialnym pomyśle (bo na myśl przychodzi mi tutaj rewolucyjna technologia IEP ;])? Jeśli już coś działa to udostępnij nam możliwość przetestowania tego cuda.
Poza tym cały czas mówisz o zdaniach prostych, jakie to wg ciebie są? Bo zaraz się okaże że to jest tak jak z tymi geniuszami co problem komiwojażera rozwiązywali, ale na razie dla 10 miast bo potem im ta rekurencja zamulała kompa, albo co napisali mega szybki program do szukania liczb pierwszych a jak sie okazało był to zwykły brute force ;]

0

Czyli po prostu tłumaczysz frazy do formy 'kodu pośredniego', który potem jest kompilowany do innego języka. Wszystko cacy gdyby nie chodziło o języki naturalne i ich brak jednoznaczności, kontekst itd.

Człowieku, weź pierwszą lepszą książkę o lingwistyce albo kryptoanalizie - po przeczytaniu wstępu Twoje marzenia runą.

0

Ciekawe jak chcesz zamieniać zdania na obrazki?

Nie chcę nic zamieniać. Tak samo jak słowa "pudełko" nie jesteś w stanie zamienić na obraz we własnej głowie, tak nie potrafi tego PC. Poczytaj o niezmiennych reprezentacjach. Dopiero jeśli ktoś powie Ci "różowe kwadratowe pudełko, puste w środku z otwartą górą" to zaczyna Ci coś świtać. Ale pamiętaj cały czas korzystasz ze wcześniejszych doświadczeń. Pewnie wydaje Ci się, że potrafisz dowolnie formować pudełko (i tak jest), ale jest to wynik oglądania kiedyś skalowania obiektu w jakimś programie 3D. Ludzie ze średniowiecza nie byli w stanie wyobrazić sobie takiego płynnego ruchu.

Deus, a co ty robisz jak ktoś Cię poprosi o przetłumaczenie niejednoznaczengo zdania, wyrwanego z kontekstu? Po pierwsze jesteś w stanie zapytać o kontekst. Po drugie prawdopodobnie dasz więcej niż jedną odpowiedź.

Nie będę więcej się spierał. Polecam "Istotę Inteligencji" Jeffa Hawkinsa.

Dzięki jeszcze raz za link i do usłyszenia.</quote>

0

Problem w tym, że podany przykład ma się nijak do lingwistyki...

Przejdźmy w takim razie do konkretów - jak ruszysz tym swoim 'algorytmem' wyrażenie "walić konia"? W końcu translator ma być idealny...

0

Dokładnie to samo co Ty. Zły przykład dałeś bo "walić konia" funkcjonuje jako cały nierozerwalny zwrot, który można przetłumaczyć iście słownikowo. Ale jeśli byłoby "walić konia po nogach" to byłby to coś na styl reprezentacji konia + nogi konia + czynność walenia (prawdopodbnie tożsama ze słowem "bicie", ale z dodatkowym nasyceniem emocjonalnym tego słowa) Możesz zadać 10000 przykładów, a wszystkie będą się tłumaczyć dokładnie tak jak ty sam byś je przetłumaczył.

0
zie1ony napisał(a)

Tak samo jak słowa "pudełko" nie jesteś w stanie zamienić na obraz we własnej głowie

Obstawiam, że każdy przeciętny człowiek jest.
Jeśli Ty nie jesteś, to polecam klocki Lego. Rozwijają wyobraźnię, ale pod warunkiem, że nie skończyłeś jeszcze 9 r. ż.

0

OK, to przetłumacz słownikowo trzy zdania:

  • Keraj poszedł walić konia;
  • Polaczek poszedł walić konia;
  • deus poszedł walić konia.
0

@zie1ony bardzo ciekawa teoria, bo z tego co ja wiem to slysząc np. pudełko człowiek mimowolnie wyobraża sobie pudełko. Jak ktoś mi powie "różowe kwadratowe pudełko, puste w środku z otwartą górą" to pewnie zacznę sobie takie wyobrażać, ale to nie znaczy ze wczesniej nie wyobrażałem sobie pudełka...
Nie przypominam sobie żebym kiedykolwiek takie pudełko widział a mimo to umiem je sobie wyobrazić. Gdzież są te wcześniejsze doświadczenia? Nigdy nie skalowalem niczego w programie 3d, a tym bardziej różowego pudełka, a umiem w wyobraźni je skalować, obracać i cudować z nim. Magia?
A mnie ciekawi jak twój program przetłumaczy "rzucić pika". Chodzi o sposób wnioskowania o poprawnym tlumaczeniu. Będziesz parsował to wyrażenie sprawdzając czy dane słowo jest poprawnie odmienione? Bo powyższe wyrażenie, biorąc pod uwagę wyrazy sprowadzone do podstawowej postaci ("rzucać pika" / "rzucać pik"), ma dwa równie prawdopodobne tłumaczenia (bo moze chodzi o "rzucanie piką" lub o "rzucenie pika"). Jak wnioskować która jest poprawna?
Chyba ze chcesz podać użytkownikowi po prostu wszystkie pasujące tłumaczenia i niech on sobie sam wybiera. Ale w takim razie to żadna rewolucja...

0

@shalom ciągle nie łąpiesz. "prom kosmiczny" to mimowolnie wyobrazisz sobie coś takiego <url> http://www.partnerstwodlaprzyszlosci.edu.pl/astronautyka/obrazki/Aktualno%C5%9Bci/_w/discovery_jpg.jpg</url> A "prom kosmiczny w kształcie banana"? Tu już zaczynają się schody bo można sobie to wybrazić na wiele sposobów. Znalazłem lepszy przykład (moje osobiste doświadczenie) Czytasz książkę. Wyrażasz sobie głownego bohatera na podstawie jego opisu. Następnie oglądasz adaptację filmową i patrzysz na aktora grającego tę rolę. Okazuje się ona być całkiem inna niż Ty sobie ją wyobrażałeś. Następnie zaczynasz czytać książkę od nowa. Czytając o akcję w której bierze udział nasz bohater nie wyobrażasz sobie go takiego jak wcześniej tylko widzisz gościa z filmu. Proces prawie nieodwracalny. Ciekawej się robi, jeśli jedną rolę zagra 100000 różnych aktorów (każda adaptacja inny aktor) Nie jesteś w stanie spamiętać wszystkich i tworzysz sobie uniwersalny obraz. Później gdy każą Ci przypomnieć sobie wygląd myślisz o uniwersalnym gościu i dopiero do niego dopasowujesz cechy (jak w przypadku naszego pudełka).

Zaufaj mi. Możesz zadać mi jeszcze tysiąc pytań a i tak możesz tego do końca nie zrozumieć. Zacznij się o tym uczyć. Gwarantuje nie będzie to stracony czas. Neuroscience w informatyce w ciągu następnych 50 lat będzie dominującym nurtem (już się zaczyna od sieci neuronowych). No jeszcze komputery kwantowe....

0

Zupełnie nie ogarniam co ten twój przykład z d**y ma wspólnego z tym o czym rozmawiamy.
Swoja drogą niezły z ciebie prorok. Informatyka ma zaledwie 60 lat a ty juz wnioskujesz cóż będzie dominujacym nurtem w ciągu najblizszych 50? A sztuczne sieci neuronowe są prawie tak samo stare i jakoś nie stały sie dominujące. Może dlatego że w praktyce wcale nie są takie ekstra? ;)
@zie1ony czego nie zrozumiem? Idei sieci neuronowych? A skąd wniosek że jej nie rozumiem? Ciekawe stwierdzenie jak na kogoś kto idealny translator wyceniał na 100k euro, napisał program do faktoryzacji liczb (swoją drogą jak ci z tym idzie? masz już jakieś NSA na karku? :D) a 1,5 roku temu nie wiedział jeszcze jak pobierać dane z internetu w swoim programie.

Musisz zrozumieć nasz sceptycyzm. Tutaj raz na kilka miesięcy pojawia się taki geniusz jak ty, ze swoimi rewolucyjnymi pomysłami które odmienią oblicze informatyki. Rzuć okiem na Perełki
http://4programmers.net/Forum/viewtopic.php?id=53884
http://4programmers.net/Forum/viewtopic.php?id=134131
http://4programmers.net/Forum/viewtopic.php?id=154290
;)

0

Nie chodziło mi o sieci neuronowe, tylko o działanie mózgu. Sam nie wiem wszystkiego i ciągle się uczę, eksperymentuje. Całkowicie rozumiem sceptycyzm. Może nie jestem w stanie słowami w kilkudziesięciu zdaniach oddać tego co wiem; na pewno nie jestem. To o czym pisze wynika z ewolucji nauki, stopniowego uczenia się na błędach. Dlatego trzeba poznawać, pytać, błądzić (przy okazji być słusznie krytykowanym) a może wtedy coś się NOWEGO wymyśli. Nikt mnie takiej ścieżki nie pozbawi tym bardziej, że dookoła w każdej dziedzinie nauki nastąpił, następuje ogromny postęp. Trzeba się go trzymać i na niego wpływać.
Algorytm do faktoryzacji opierał się o ciekawy pomysł, ale ciągle złożoność była wykładnicza a to jest nie do przyjęcia. Zrezygnowałem z tego w oczekiwaniu na komputery kwantowe. Po co się męczyć na zwykłych PCtach. Swoją drogą w informatyce kwantowej jest jeszcze mnóstwo do odkrycia i zbadania.

Dobre perełki :) możesz mnie dorzucić :P

I prawdopodobnie za jakiś czas wrócę z pytaniem i pomysłem z którego znowu będą kpiny. Ale to nie ważne. Liczy się wiedza. May the force be with You!

0
zie1ony napisał(a)

Algorytm do faktoryzacji opierał się o ciekawy pomysł, ale ciągle złożoność była wykładnicza a to jest nie do przyjęcia. Zrezygnowałem z tego w oczekiwaniu na komputery kwantowe.

:d
Akurat zastępuję szefa projektu. Jak przyjdzie PM ze specyfikacją nowej funkcjonalności, to mu powiem - ok, ale zaczekamy na komputery kwantowe. ;-P

Ja, mały robaczek, chcę na magisterkę napisać "prosty" symulator układu pokarmowego i się zastanawiam czy w czerwcu nie będę zbierał zębów z podłogi po zderzeniu z brutalną rzeczywistością, a tutaj gość zalgorytmizował ludzki mózg, a nie umie przejść najbanalniejszego w tym przypadku problemu pt. "jak zrobić bazę danych" i nie słyszał o systemach eksperckich.
Ludzie, litości!

0

user image

a Wy jak sobie wyobraziliście kosmicznego banana ? :>

1 użytkowników online, w tym zalogowanych: 0, gości: 1