Zbudowałem kilka sieci neuronowych (MLP (w pełni połączony), Elman (cykliczny)) do różnych zadań, takich jak gra w Pong, klasyfikowanie odręcznych cyfr i tym podobne ...
Dodatkowo próbowałem zbudować pierwsze sieci neuronowe splotowe, np. Do klasyfikowania wielocyfrowych notatek odręcznych, ale jestem całkowicie nowy w analizowaniu i grupowaniu tekstów, np. W zadaniach rozpoznawania obrazów / klastrowania można polegać na standardowym wprowadzaniu, takim jak obrazy o rozmiarze 25x25, RGB lub skala szarości i tak dalej ... istnieje wiele wstępnych założeń.
W przypadku eksploracji tekstu, na przykład artykułów prasowych, masz ciągle zmieniający się rozmiar danych wejściowych (różne słowa, różne zdania, inna długość tekstu, ...).
Jak wdrożyć nowoczesne narzędzie do eksploracji tekstu wykorzystujące sztuczną inteligencję, najlepiej sieci neuronowe / SOM?
Niestety nie udało mi się znaleźć prostych samouczków na początek. Skomplikowane prace naukowe są trudne do odczytania i nie są najlepszą opcją do nauki tematu (moim zdaniem). Przeczytałem już sporo artykułów na temat MLP, technik usuwania, splotowych sieci neuronowych i tak dalej, ale nie byłem w stanie znaleźć podstawowej na temat eksploracji tekstu - wszystko, co znalazłem, było zdecydowanie za wysokie dla moich bardzo ograniczonych umiejętności eksploracji tekstu.
Oprócz LDA możesz używać Latent Semantic Analysis z K-Means . To nie są sieci neuronowe, ale raczej „klasyczne” grupowanie, ale działa całkiem dobrze.
Przykład w sklearn (zaczerpnięty stąd ):
Teraz etykiety przydziału klastrów są dostępne w
km.labels_
Na przykład są to tematy wyodrębnione z 20 grup dyskusyjnych za pomocą LSA:
Możesz także zastosować nieujemną faktoryzację macierzy , którą można interpretować jako grupowanie. Wystarczy wziąć największy element każdego dokumentu w przekształconej przestrzeni - i użyć go jako przypisania do klastra.
W sklearn:
źródło
LSA + KMeans działa dobrze, ale musisz wprowadzić oczekiwaną liczbę klastrów. Ponadto współczynnik sylwetki znalezionych klastrów jest zwykle niski.
Inną metodą, dzięki której uzyskuję lepsze wyniki, jest tutaj użycie przykładu DBSCAN . Poszukuje centrów o dużej gęstości i rozszerza się, tworząc klastry. W tej metodzie automatycznie znajduje optymalną liczbę klastrów.
Uważam również, że bardzo ważne jest użycie stempla, takiego jak np. Snowball, który zmniejsza błędy wynikające z literówek. Dobra lista słów kluczowych jest również bardzo ważna, jeśli chcesz się pozbyć niektórych klastrów, które nie miałyby znaczenia ze względu na częste występowanie często używanych słów bez znaczącego znaczenia. Podczas budowania macierzy zliczeń ważna jest również normalizacja, która pozwala dodać ważenie do słowa o niskim poziomie występowania w zbiorze danych, ale o wysokiej częstotliwości występowania w poszczególnych próbkach. Te słowa są znaczące i nie chcesz ich przegapić. Obniża również wagę słów o wysokiej częstotliwości występowania we wszystkich konkretnych próbkach (słowo zbliżone do stopu, ale dla słów, które mogą mieć małe znaczenie). Ostatnią rzeczą, którą zauważyłem, że była ważna, nie było wydrukowanie 10 najważniejszych słów z twoich klastrów, ale szerszy wybór. Zwykle jakość i trafność słów kluczowych w stosunku do etykiety, którą nadasz klasterowi, zwykle dramatycznie spada po tych 10-20 najważniejszych słowach. Tak więc rozszerzony widok najpopularniejszych słów kluczowych pomoże ci przeanalizować, czy Twój klaster jest naprawdę odpowiedni lub bardzo zanieczyszczony hałasem.
źródło
Moja ulubiona metoda to LDA ; możesz poszukać tu samouczka z wykorzystaniem pakietów Pythona.
Możesz także spojrzeć na znacznie prostsze metody takie jak ta .
źródło