Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Bot w php
Forum PHP.pl > Forum > PHP > Pro > Archiwum Pro
poison.Pluto
Witam.

Planuję napisać bota w php, z którym możnaby ewentualnie "pogadać" biggrin.gif Mój główny problem to SI - Sztuczna Inteligencja. Chciałbym się Was poradzić jak to ugryźć :roll2:

Bot miałby uczyć się nowych wyrażeń od swoich rozmówców, w miarę inteligentnie rozpoznawać pytania i udzielać na nie odpowiedzi w ramach swojej "wiedzy" cool.gif

Wydaje mi się, że udzielanie odpowiedzi jest najprostszym zagadnieniem smile.gif Całość można oprzeć o słowa kluczowe i według nich wywalać odpowiedź. Rozpoznawanie pytania też można spróbować o to oprzeć. Nie wiem jednak jak się zabrać za edukację bota, jego samodzielne indeksowanie wypowiedzi według słów kluczowych. Czy możecie mi udzielić jakiś wskazówek nt. SI? Może ktoś z Was pisał już coś podobnego? winksmiley.jpg

Jeżeli się mylę, to nakierujcie mnie na dobrą ścieżkę tongue.gif


PS. Sorry, jeżeli temat nie podchodzi pod PRO...
cadavre
www.snikers.pl to system oparty na takiej technologii chyba.
Może skontaktuj się z twórcą. Poczytaj na stronie jakieś techniczne bla bla bla.
Może jakąś wskazówkę znajdziesz.
dtb
bot moglby analizowac rozmowe normalnych ludzi (np. z chata) i na podstawie ich pytan i odzpowiedzi uczyc sie. jezeli chcesz si z prawdziwego zdarzenie to wygógluj sobie cos o "sieciach neuronowych"
Seth
W jednym z ostatnich znumerow Software Sevelopers Journal jest o tym caly temat - "problem" wbrew porozom nie jest prosty i wymaga zaawansowanych technik fleksyjnych oraz budowania wzorcow rozmow i odpowiedzi.

Z projektow OpenSource dostepnych pod php polecam zapoznac sie z implementacja bota ALICE (oparta o jezyk AIML) o nazwie ProgramE.
Niestety po angielsku sad.gif

Swoja droga ciekawe jest to, ze nie wykorzystywana jest siec neuronowa, a jedynie jezyk wzorcow.
Ociu
Myślę, że najlepszym sposobem będzie analiza pytań i odpowiedzi przez użytkowników, a potem filtracja danych.
hwao
Zeby on cokolwiek sie nauczyl to musi byc całkiem sporo pytan biggrin.gif

Mozesz to robic tak ze ktos botowi zadaje pytanie, on udziela odpowiedzie "oco Ci dokladnie chodzi" dostaje drugie pytanie. w przyszlych rozmowach zada je komus (jakiemus czlowiekowi) i przeanalizuje odpowiedz.
poison.Pluto
cadavre, snikers to chyba komercyjna produkcja, wiec watpie, ze autor udzieli mi jakiś wskazówek tongue.gif ale raczej tam napiszę.

dtb, Ociu, dzieki, chyba tak zrobie biggrin.gif

hwao, to bot przy drugim pytaniu nie udzieli odpowiedzi biggrin.gif ale pomysł dobry biggrin.gif

Seth, twój link sprawdze jak będę w domku cool.gif

Dzięki za propozycje smile.gif

Jak myślicie, czy dobre będzie rozbicie całej odpowiedzi na wyrazy, a następnie zamiana pewnych wyrazów np. i, oraz, także itp. na np. ŁĄCZNIK. Chodzi mi o stworzenie takiego języka dla bota - dużo prostszego, zawierającego o wiele mniej słów. Jeżeli bot nie znałby jakiegoś słowa to by prosił o podanie synonimów, jeżeli by jakiś znalazł w bazie to wyraz którego by nie znał by dopisał do tej bazy. A jeżeli nie.. cóż.. cool.gif
Speedy
Zrobiłem kiedyś bota, lecz jest on bardzo prosty tongue.gif. Możesz zastosować podobny sposób jak w moim skrypcie. Tzn. rozbić wypowiedź na wyrazy, a następnie sprawdzać, czy któryś z tych wyrazów znajduje się w bazie i losować jeden ze znalezionych rekordów (mój wytwór korzysta z pliku *.ini, ale wkorzystując mysql, można to zrobić lepiej i wygodniej). Ponadto możesz sobie stworzyć jakąś tablicę z popularnymi wyrazami, o których wspomniałeś i nie uwzględniać ich podczas przeszukiwania bazy (to apropos Twojego pomysłu w powyższym poście winksmiley.jpg).
g00fy
imho najgorszym rozwiązaniem jest użycie patternów.
kiedyś myślałem nad rozwiązaniem z zastosowaniem polimorfizmu

zdanie "ala ma kota" rozpoznawane jest jako
ala = new word;
ma = new word;
kota = new word;
ala=ala->setType('person');
ma=ma->setType('Verb');
kota=>setType('animal');
ala->owns(kota);
print_r(ala);

ala{
first name = ala;
...
owns= array(
1 => kota {

}
);
}


cos w tym stylu , ze w pamieci tworzy sie mapa znaczenia zdania , a pozniej interpretuje sie to i daje odpowiedz...
em1X
jak system rozrozni czy zdzisio to person czy verb ?

poza tym: wyobrazcie sobie co odpisze taki ekhm "inteligentny" program, gdy ktos napisze cos bez sensownego, np:

ala kot poszedł spać jutro pójdzie tongue.gif komiczne rzeczy zaczna wychodzic biggrin.gif
Speedy
Cytat(em1X @ 2006-04-28 19:50:29)
jak system rozrozni czy zdzisio to person czy verb ?

Nie rozróżni tongue.gif . Można conajwyżej stworzyć bota, która automatycznie uzupełnia bazę odpowiedzi, żeby rozmowa z nim była barwniejsza w przyszłości.
masel
Bardzo ciekawy temat jednak rozwiązanie może sprawić spory kłopot.
Sam ostatnio myślałem nad napisaniem czegoś podobnego, jednak pojawiły siędrobne problemy.
1. Co wykorzystać do gromadzenia informacji?
Tak jak pisali inni użytkownicy wg mnie najkorzystniejsza byłaby baza danych.

2.Jak gromadzić informacje
Ciekawe mogłyby być komunikatory.
Należałoby podłączyć np. gg do bazy i szczytywać Twoje rozmowy
W ten sposób najszybciej zgromadził być informacje tworząc drzewo odpowiedzi np.
Pogoda->Ładna->Słońce->Upał i do upadłego, oczywiście uwzględniając kontekst wypowiedzi.

3.Nauka
To najciekawsze
Największym problemem jest san człowiek
W jednym z artykułów medycznych wydzielono 124 składowe osobowości
Takie jak Humor, Inteligencja, Usposobienie itd
Oczywiście mieszające i działające na siebie w różnym kontekście.

Zadanie jest ciekawe chętnie pomogę na tyle ile dam radę
keedy
a co myślicie o SI w roznego rodzaju skryptach? smile.gif CMS etc. ? np taka inteligencja decydowala by czy zaakceptować treść ?
dr_bonzo
keedy: jak takie cos napiszesz to daj znac smile.gif
misiek172
w serwisie www.webpacket.pl jest tez bot zrobiony, może pogadaj z adminem i on ci powie co nie co smile.gif
bigZbig
Ja juz sie spotkalem z takimi botami na gg. Byly malo "inteligentne" wystarczylo powtorzyc zdanie i dostawalo sie taka sama odpowiedz. To taka uwaga na marginesie. Wy tu wszyscy piszecie, ze trzeba gromadzic material a potem go analizowac. Z gromadzeniem nie ma problemu, ale jak analizowac? Ktos tam napisal - bot dostaje slowo szuka jego synonimow a jak nie znajduje to dopisuje. Jesli nie powiesz automatowi wprost ze dwa slowa to synonimy to sam sie nie domysli dlatego moze sie zdarzyc ze dwa pojecia bedace synonimami beda zapisane w bazie a bot nawet nie bedzie wiedzial ze oznaczaja to samo. Ale na poczatek zawsze mozna zaczac od slownikow.
SongoQ
Cytat
Ja juz sie spotkalem z takimi botami na gg. Byly malo "inteligentne" wystarczylo powtorzyc zdanie i dostawalo sie taka sama odpowiedz.

Bo to nie jest sztuczna intelegencja. To zwykle analizowanie danych i wyszukiwanie zdan do slowa/slow ktore ma w bazie
Speedy
To w takim razie jak powinna działać sztuczna inteligencja z prawdziwego zdarzenia? snitch.gif

Odnośnie powtarzającej się odpowiedzi dawanej przez automat, to pewnie twórca bota w ogóle się nie wysilił i nie dodał nawet opcji losowania alternatywnych odpowiedzi dla danego tekstu.
Jarod
@Speedy: poczytaj o sieciach neuronowych
Kocurro
Coś co robiłem dwa lata temu na zamówienie dla kogoś (praca mgr) - robione w c ...

Rozbudowana sieć neuronowa połączona z bazą danych oraz program uczący, który to program podglądał na razie kilkadziesiąt najróżniejszych chatów ... i starał się filtrować trochę przed wrzucaniem do nauki.

Po miesiącu uczenia efekty były nawet przyjemne - tylko zbyt slangowe odpowiedzi były...
Dandelion
Gdzies tam pisali czy mowili ze sieci neuronowe nie sprawdza sie przy prawdziwej sztucznej inteligencji
Kocurro
Sieć neuronowa sama w sobie nie - trzeba dołożyć wiele innych rzeczy związanych z zagadnieniami statystycznymi, logiki rozmytej itp ...

Ale na potrzeby proste bota może ona wystarczyć.

Poza tym porządną SI robią zespoły osób - psychologów, fizjologów, programistów, informatyków, matematyków, statystyków itp...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.