Witam serdecznie. Jestem na 3 roku studiów (kierunek Informatyka), więc zbliża się moment napisania i oddania pracy dyplomowej. Pracuje od prawie 2 lat jako programista C# .NET w branży zajmującej się monitorowaniem i analizy ofert w E-Commerce. To tak kilka słów o mnie dlaczego to wybrałem.
Moim pomysłem na taką pracę dyplomową jest wykorzystanie sieci neuronowych w celu identyfikacji atrybutów wystawianych produktów w sklepach. Od razu wspomnę, że rozwiązaniem na ten problem są proste wyrażenia regularne, ale zaraz pokażę przykład.
Weżmy na tapetę na przykład jakąś oponę. Opony zapisuję się w następujący sposób: [Szerokość]/[Profil] R[Średnica] [Indeks nośności] [Indeks prędkości], np. 205/55 R16 91V
Można zauważyć pewien wzorzec i jak wspomniałem dobrym sposobem są wyrażenia regularne, ale zdarzają się przypadki gdzie rozmiary takiej opony są zapisane w całkiem inny sposób, np.:
- 265 / 40 / R19 / 102Y
- 265 / 40 / ZR19 / 102(Y)
- 225/45 R18 95Y
Wzorzec mniej więcej jest zachowany czyli kolejność wpisanych atrybutów jest zgodna więc wyrażenia regularne do tego momentu jeszcze działają. Jednak w momencie, gdy w modelu opony również są 3 cyfry to wszystko przesuwa się o 1 jednostkę w lewo i już są dane błędnie sklasyfikowane. Są tez przypadki że nie ma podanej jednej wartości, albo nie są podane pokolei (91V 205/55/16).
Do nauczenia takiej sieci mam ogrom danych wejściowych tak więc to nie jest problem. Problem pojawia się w momencie gdy myślę o tym czy jest to w ogóle do napisania. Jakie rodzaje sieci neuronowych są w stanie pracować z tekstem - jak to wygląda? Jak nauczyć sieć gdy w momencie podania jakiegoś tekstu do sieci wypluje mi kilka sklasyfikowanych atrybutów?
Człowiek po jednym przykładzie jest w stanie nauczyć się rozpoznawania konkretnych wartości z tekstu, wystarczyło, że podałem wzorzec zapisywania rozmiaru opon. Przykład:
265 / 40 / R19 / 102Y => 265(szerokość); 40(profil) ; 19(średnica) ; 102 (indeks nośności) ; V(indeks prędkości).
Oczywiście taka sieć nie była by tylko to klasyfikowania opon, ale do wszelkich produktów.
Czy jest możliwość napisania takiej sieci pod taki problem, czy jest sens pisania takiej pracy inżynierskiej (chciałbym to móc wykorzystać w aktualnej pracy przy aktualnych projektach).
Czytałem kiedyś o tym sporo i znalazłem kilka metod:
- Euclidean, Manhattan i Cosine Distance
- Jaccard similarity
- Bag of word
- TF-IDF
- SVM
- Naive Bayes Classifier
Jednak czy to są w ogóle sieci? Czy tylko elementy z których taka sieć powinna korzystać przy pracy z tekstem. Dlatego piszę ten wątek bo może ktoś miał podobny problem do mojego i jest w stanie cokolwiek powiedzieć.
Dziękuję za wszelkie informacje. Pozdrawiam