Uczenie się funkcji bez nadzoru dla NER

11

Wdrożyłem system NER z wykorzystaniem algorytmu CRF z moimi ręcznie wykonanymi funkcjami, które dawały całkiem dobre wyniki. Chodzi o to, że użyłem wielu różnych funkcji, w tym tagów POS i lematów.

Teraz chcę zrobić ten sam NER dla innego języka. Problem polega na tym, że nie mogę używać tagów POS i lematów. Zacząłem czytać artykuły o głębokim uczeniu się i uczeniu się funkcji bez nadzoru.

Moje pytanie brzmi:

Czy można stosować metody uczenia funkcji bez nadzoru z algorytmem CRF? Czy ktoś próbował tego i uzyskał dobry wynik? Czy jest jakiś artykuł lub samouczek na ten temat?

Nadal nie rozumiem w pełni tego sposobu tworzenia funkcji, więc nie chcę spędzać zbyt wiele czasu na czymś, co nie zadziała. Tak więc każda informacja byłaby naprawdę pomocna. Stworzenie całego systemu NER opartego na głębokim uczeniu się to na razie trochę za dużo.

MaticDiba
źródło

Odpowiedzi:

5

Tak, można całkowicie połączyć uczenie się bez nadzoru z modelem CRF. W szczególności polecam zbadanie możliwości wykorzystania funkcji word2vec jako danych wejściowych do CRF.

Word2vec ćwiczy rozróżnianie między słowami, które są odpowiednie dla danego kontekstu, a słowami, które są losowo wybrane. Wybrane wagi modelu można następnie interpretować jako gęstą reprezentację wektorową danego słowa.

Te gęste wektory mają atrakcyjną właściwość, że słowa, które są semantycznie lub składniowo podobne, mają podobne reprezentacje wektorowe. Podstawowa arytmetyka wektorów ujawnia nawet kilka interesujących wyuczonych związków między słowami.
Na przykład wektor („Paryż”) - wektor („Francja”) + wektor („Włochy”) daje wektor bardzo podobny do wektora („Rzym”).

Na wysokim poziomie można uznać reprezentacje word2vec za podobne do reprezentacji LDA lub LSA, w tym sensie, że można przekształcić rzadki wektor wejściowy w gęsty wektor wyjściowy, który zawiera informacje o podobieństwie słów.

W tym przypadku LDA i LSA są również ważnymi opcjami dla uczenia się funkcji bez nadzoru - zarówno próbują reprezentować słowa jako kombinacje „tematów”, jak i gęstą reprezentację słów.

W przypadku tekstu w języku angielskim Google dystrybuuje modele word2vec wstępnie wyszkolone na ogromnym 100-miliardowym zestawie danych Google News, ale w przypadku innych języków musisz wyszkolić swój własny model.

Madison May
źródło
Hej, pięści chcę podziękować za twoją odpowiedź. Mam jeszcze jedno pytanie. Wektor słowa, który jest zwracany z algorytmu word2vec, ma wartości zmiennoprzecinkowe, więc słowa takie jak duże i większe będą miały wektory zbliżone do przestrzeni wektorowej, ale wartości wektorów mogą być zupełnie inne. Na przykład duży = [0,1, 0,2, 0,3] i większy = [0,11, 0,21, 0,31]. Czy to nie jest problem z algorytmem CRF, ponieważ algorytm ten traktowałby je jako niepodobne? Czy jest jakieś dodatkowe przetwarzanie, które należałoby wykonać przed użyciem tego słowa wektorowego w CRF? Mam nadzieję, że moje pytanie jest wystarczająco jasne.
MaticDiba,
4

W artykule z 2014 r. ( GitHub ) autorzy porównali wiele strategii włączania osadzania słów w systemie NER opartym na CRF, w tym gęstego osadzania, osadzania binerizowanego, osadzania klastrowego i nowatorskiej metody prototypowej . Bezpośrednie użycie gęstych wektorów, jak sugeruje vlad, jest najprostszym sposobem, ale także najmniej efektywnym w wielu ocenach.

Zaimplementowałem pomysł prototypu w moim projekcie NER dotyczącym konkretnej domeny i działa on całkiem dobrze dla mnie.

użytkownik2404894
źródło
3

Jestem tylko 5 miesięcy spóźniony, ale dzięki CRFSuite możesz używać tych funkcji liczbowych jako liczb, a nie ciągów znaków. W tym celu wystarczy wymyślić unikalną etykietę dla każdego wymiaru, a następnie dodać znak „:” i wartość.

Na przykład słowo „dżungla” jest reprezentowane w 5 wymiarach: 0,1 0,4 0,8 0,2 0,9

Następnie CRFSuite przyjąłby to słowo + funkcję jako:

ETYKIETA f1: 0,1 f2: 0,4 f3: 0,8 f4: 0,2 f5: 0,9

gdzie oczywiście zamieniasz `` LABEL '' na rzeczywisty ciąg znaków i oddzielasz wszystkie spacje tabulatorami (taki jest format CRFSuite).

Nie jestem jednak pewien w przypadku innych pakietów.

Vlad
źródło