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.
źródło
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.
źródło
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.
źródło