Word2Vec do rozpoznawania nazwanych jednostek

25

Chcę użyć implementacji word2vec Google do zbudowania systemu rozpoznawania nazwanych jednostek. Słyszałem, że rekurencyjne sieci neuronowe z wsteczną propagacją przez strukturę dobrze nadają się do zadań rozpoznawania nazwanych bytów, ale nie byłem w stanie znaleźć porządnej implementacji lub przyzwoitego samouczka dla tego typu modelu. Ponieważ pracuję z nietypowym korpusem, standardowe narzędzia NER w NLTK i podobnych działały bardzo słabo i wygląda na to, że będę musiał wyszkolić własny system.

Krótko mówiąc, jakie zasoby są dostępne dla tego rodzaju problemu? Czy dostępna jest standardowa rekurencyjna implementacja sieci neuronowej?

Madison May
źródło
Czy próbowałeś trenować Stanford NER na swoim ciele? Jest tutorial tutaj .
Emre
Nie mam - powinienem spróbować, jak idzie.
Madison,
Chciałbym jednak korzystać z funkcji word2vec lub podobnych, ponieważ mam dostęp do stosunkowo niewielkiego zestawu danych z etykietami i muszę jak najlepiej wykorzystać nieoznaczone dane, które mam pod ręką.
Madison May

Odpowiedzi:

7

Dwa ostatnie artykuły wykorzystują architekturę Deep learning o nazwie CharWNN, aby rozwiązać ten problem. CharWNN został po raz pierwszy użyty, aby uzyskać najnowocześniejsze wyniki (bez ręcznie wykonanych funkcji) w tagowaniu części mowy (POS) na angielskim korpusie.

Drugi papier tego samego autora wykorzystuje ten sam (lub podobny) architektura przewidywania tego, czy słowo należy do 10 nazwanych klas podmiotu, z pozorną stanu rezultatów artystycznych.

shark8me
źródło
Ciekawy. Dzięki za udostępnienie tego. Zastanawiam się, dlaczego nie przetestowali tego podejścia na angielskich korpusach.
MaticDiba,
3

Spróbuj http://deeplearning4j.org/word2vec.html . Ma implementację Word2Vec używaną zamiast Bag of Words dla NER i innych zadań NLP.

theclaymethod
źródło
1
Nie miałem problemu ze znalezieniem implementacji word2vec, ale nie byłem w stanie znaleźć działającej sieci rekurencyjnej do użycia.
Madison
Link nie jest już aktywny, jeśli to możliwe, udostępnij nowy działający link
Amandeep
1

Oto kilka pomysłów na to, jak używać wektorów słów dla NER, która przyjmuje przeważnie nienadzorowane podejście skoncentrowane na word2vec.

  1. Biorąc pod uwagę zestaw wektorów słów (albo coś, co trenowałeś, albo coś z półki, jak GoogleNews-vectors-negative300.bin), odkryj klastry w przestrzeni wektorowej. Te klastry są w zasadzie twoimi definicjami różnych nienazwanych pojęć.
  2. Przy minimalnym nadzorze możesz mapować / konwertować nienazwane klastry, aby dopasować je do ludzkiej wiedzy, tworząc w ten sposób nazwane pojęcia oparte na znanych wektorach słów i pojęciach nienazwanych. Na przykład metoda findCluster(['joy', 'surprise', 'disgust', 'trust', 'fear', 'sadness', 'anger', 'anticipation'])może zwrócić listę zawierającą setki słów związanych głównie z emocjami. Jeśli nazwiesz tę listę „emocjami”, wówczas masz nazwane pojęcie „emocja” zdefiniowane na podstawie przestrzeni wektorowej.
  3. Możesz także wykonać matematykę wektorową, aby znaleźć pośrednią koncepcję między dwoma podanymi. Na przykład matematyka wektorowa może powiedzieć, że po podaniu dwóch słów „zdziwienie” i „obrzydzenie” między nimi są następujące: przerażenie, zdziwienie, rozczarowanie, zdumienie, oszołomienie, rozdrażnienie, niewiara, szok itp. To pozwala budować relacje między pojęciami.
  4. Możesz powtórzyć powyższe, aby zbudować różne typy nazwanych pomysłów, takich jak: dni powszednie, wszystkie emocje, szczęśliwe emocje, pojazdy itp.
  5. Po zbudowaniu warstw nazwanych pojęć możesz trenować RNN na korpusie tekstowym, który został wzbogacony o wspomniane pojęcia, więc „brązowy lis skacze” to także „{kolor} {zwierzę} {akcja} 'itd. W ten sposób RNN powinien być w stanie nauczyć się podstawowej gramatyki w sposób nienadzorowany.
  6. Jeśli zbudowałeś wystarczająco mocną gramatykę z powyższego, to powinieneś być w stanie zastosować ją do niektórych zadań NER.
Kaihu Chen
źródło