Trwałe przetwarzanie przetworzonego języka naturalnego

12

Niedawno zacząłem eksperymentować z przetwarzaniem języka naturalnego (NLP) przy użyciu CoreNLP Stanforda i zastanawiam się, jakie są standardowe sposoby przechowywania analizowanych danych NLP dla czegoś takiego jak aplikacja do eksploracji tekstu?

Jednym ze sposobów, który moim zdaniem może być interesujący, jest przechowywanie dzieci jako listy sąsiedztwa i dobre wykorzystanie zapytań rekurencyjnych (Postgres to obsługuje i przekonałem się, że działa naprawdę dobrze).

Ale przypuszczam, że istnieje prawdopodobnie wiele standardowych sposobów, aby to zrobić, w zależności od tego, jakie analizy są przeprowadzane przez osoby pracujące w tej dziedzinie na przestrzeni lat. Jakie są więc standardowe strategie utrwalania analizowanych danych NLP i jak są one wykorzystywane?

Arseni Mourzenko
źródło

Odpowiedzi:

3

Kiedyś pracowałem z zestawem narzędzi NLP i napotkałem opisany problem. Myślę, że istnieją (przynajmniej) dwa podejścia:

  • (podejście niejawne), użyj zapamiętywania

    W językach programowania, w których funkcje są pierwszorzędnymi obiektami (takimi jak Lua, Python lub Perl 1 ), automatyczne zapamiętywanie można wdrożyć, zastępując (w czasie wykonywania) funkcję jej obliczoną wartością po obliczeniu wartości dla danej zestaw parametrów.

    Takie podejście zastosowałem i można je szybko wdrożyć; Wadą było to, że pewne większe struktury danych byłyby utrwalane na dysku, a chociaż ładowanie było o rząd wielkości szybsze niż ponowne obliczenie, nadal trwało to długo.

  • (jednoznacznie), użyj bazy danych, zarówno relacyjnej, jak i zorientowanej na dokumenty, do przechowywania wszystkich wyników, które mogą Cię zainteresować w przyszłości. Wymaga to większej uwagi na początku, ale opłacałoby się w dłuższej perspektywie.

Może interesujące:


Edycja: Inną rzeczą, której ostatnio używałem do wieloetapowych obliczeń długo działających, jest struktura przepływu pracy, której jest wiele . Tak naprawdę nie chodzi o wytrwałość, ale wytrwałość jest krokiem w przepływie pracy. Próbuję do tego luigi i to pochodzi, np. Z klasami pomocniczymi Hadoop i Postgres, które mogą wyeliminować wiele kodu bojlera.

miku
źródło
2

Dobrą strategią jest użycie dobrej bazy danych z funkcją Reduce / Map, znanej również jako baza danych NOSQL, jak MongoDB lub CouchDB.
Baza danych tez pozwala na tworzenie prostych zakodowanych reguł, na podstawie których warunki i przylegania map , oraz prostych zakodowanych reguł w celu zmniejszenia (również „grup”) informacji.

Możesz zacząć tutaj:
http://www.mongodb.org/
http://wiki.apache.org/couchdb/

g.annunziata
źródło