Technika uczenia maszynowego do nauki wzorców ciągów

11

Mam listę słów należących do różnych samookreślonych kategorii. Każda kategoria ma swój własny wzór (na przykład jedna ma stałą długość ze znakami specjalnymi, inna istnieje ze znaków, które występują tylko w tej kategorii „słowa”, ...).

Na przykład:

"ABC" -> type1
"ACC" -> type1
"a8 219" -> type2
"c 827" -> type2
"ASDF 123" -> type2
"123123" -> type3
...

Poszukuję techniki uczenia maszynowego, aby samodzielnie nauczyć się tych wzorców na podstawie danych szkoleniowych. Próbowałem już samodzielnie zdefiniować niektóre zmienne predykcyjne (na przykład długość słowa, liczbę znaków specjalnych, ...), a następnie użyłem sieci neuronowych do nauki i przewidywania kategorii. Ale tego nie chcę. Chcę, aby technika nauczyła się wzoru dla każdej kategorii samodzielnie - a nawet nauczyła się wzorców, o których nigdy nie myślałam.

Podaję więc dane uczenia algorytmu (składające się z przykładów kategorii słów) i chcę, aby nauczył się wzorców dla każdej kategorii, aby przewidzieć później kategorię na podstawie podobnych lub równych słów.

Czy istnieje najnowocześniejszy sposób na zrobienie tego?

Dzięki za pomoc

chresse
źródło
Z mojego punktu widzenia możesz robić coś takiego jak ten cistrome.org/cr/images/Figure4.png , ale zamiast ACGT możesz używać wzorów takich jak „liczba, wielkie litery, małe litery, spacja” itp.
Niemiecki Demidov
@GermanDemidov dzięki za komentarz. już myślałem o czymś takim. Ale tak naprawdę chcę, aby algorytm uczenia się zrobił to sam i wykrył wzorce. (Nie wiem, czy to możliwe dla ML).
chresse
w rzeczywistości te wzorce to uczenie maszynowe. Oczywiście można to zrobić za pomocą uczenia maszynowego, ale osoba musi najpierw wyodrębnić funkcję, zanim przekaże ją jako algorytm ML. Jakie funkcje wyciągnąłbyś z tych przykładów? Mogę myśleć o funkcjach skrótu, ale będzie to działać dość źle w przypadku ciągów o nierównej długości. Ponieważ znajdziesz sposób na wyodrębnienie funkcji, będziesz mógł używać metod ML. Możesz także wykonać coś takiego jak odległość Levenshteina między symbolami różnych klas, zgrupować je i użyć do klasyfikacji minimalnej odległości od centroidów.
Niemiecki Demidow
@chresse możesz dodać do pytania tag uczenia się bez nadzoru . Aby zrobić to z sieciami neuronowymi, ten artykuł LeCun może być interesujący. Ponieważ nie mam dużego doświadczenia z eksploracją tekstu ani sieciami neuronowymi, nie mogę powiedzieć, jak dobre może być to podejście.
GeoMatt22,
1
Przekształć więc swoje wektory za pomocą funkcji, których naturalnie używasz (u - wielkie litery, l - małe litery, n - liczba, s - spacja), więc twoje wektory będą miały „ABC” - „uuu”, „a8 219” - „lnsnnn” i tak dalej na. Następnie musisz wprowadzić miarę odległości, na przykład za pomocą tego algorytmu: en.wikipedia.org/wiki/Smith –Waterman_alnodal. Następnie będziesz mógł przeprowadzić klasyfikację / klastrowanie / wizualizację swoich danych.
Niemiecki Demidow

Odpowiedzi:

6

Czy problem może zostać ponownie sformułowany jako chęć odkrycia wyrażeń regularnych, które będą pasować do ciągów w każdej kategorii? Jest to problem „generowania wyrażeń regularnych”, podzbiór problemu indukcji gramatyki (patrz także strona internetowa Alexandra Clarka ).

Problem wyrażeń regularnych jest łatwiejszy. Mogę wskazać ci kod frak i RegexGenerator . RegexGenerator Internecie ++ ma odniesień do swoich prac naukowych dotyczących problemu.

czernieje
źródło
5

Możesz wypróbować powtarzające się sieci neuronowe, w których dane wejściowe to ciąg liter w słowie, a dane wyjściowe to kategoria. Spełnia to twoje wymagania, dlatego nie przekazujesz kodu żadnych funkcji.

Jednak aby ta metoda rzeczywiście działała, będziesz potrzebować dość dużego zestawu danych treningowych.

Więcej informacji można znaleźć w rozdziale Supervised Sequence Labeling with Recurrent Neural Networks autorstwa Alexa Gravesa, rozdział 2.

To jest link do przedruku

Arun Jose
źródło
1
Czy możesz dodać pełny cytat do swojego ostatecznego odniesienia, na wypadek, gdyby link „preprint.pdf” zepsuł się w przyszłości? (Wierzę, że to odpowiedni rozdział?)
GeoMatt22,