Przetwarzanie języka naturalnego

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

Przetwarzanie języka naturalnego (ang. natural language processing, NLP) – interdyscyplinarna dziedzina, łącząca zagadnienia sztucznej inteligencji i językoznawstwa, zajmująca się automatyzacją analizy, rozumienia, tłumaczenia i generowania języka naturalnego przez komputer. System generujący język naturalny przekształca informacje zapisane w bazie danych komputera na język łatwy do odczytania i zrozumienia przez człowieka. Zaś system rozumiejący język naturalny przekształca próbki języka naturalnego na bardziej formalne symbole, łatwiejsze do przetworzenia dla programów komputerowych. Wiele problemów NLP wiąże się zarówno z generacją, jak i rozumieniem języka np. model morfologiczny zdania (struktura słów), który komputer powinien zbudować, jest potrzebny zarazem do tego by zdanie było zrozumiałe, jak i gramatycznie poprawne.

NLP pokrywa się również w znacznej mierze z działem lingwistyki komputerowej i często uważany jest za poddział sztucznej inteligencji. Natomiast termin język naturalny używany jest, by odróżnić języki ludzkie (takie jak hiszpański czy szwedzki) od języka formalnego czy komputerowego (jak C++, Java lub Lisp). Choć analiza języka naturalnego może zajmować się i tekstem, i mową, prace nad syntezą mowy rozwinęły się jako oddzielny dział.

Zadania i bariery[edytuj | edytuj kod]

Analiza języka naturalnego jest, teoretycznie, bardzo atrakcyjną metodą porozumiewania się z komputerem. Jeden z pierwszych tego typu systemów SHRDLU, wzbudził ogromny entuzjazm naukowców, pracując zaskakująco dobrze na ograniczonych blokach słów i w obrębie ograniczonego języka. Entuzjazm szybko jednak wygasł, gdy system zderzył się z bardziej realnymi sytuacjami i prawdziwą złożonością oraz dwuznacznością słów.

Sama definicja rozumienia jest dużym problemem analizy języka naturalnego. Wydaje się, że rozpoznanie języka naturalnego wymaga szerokiej wiedzy o świecie zewnętrznym i zdolności do przekształcania go. Z tego powodu rozumienie języka naturalnego nazywane jest często problemem AI-complete (problemem sztucznej inteligencji), który polega na tym, żeby dobrze rozumieć nasz świat i język, sztuczna inteligencja musiałaby postrzegać go tak samo jak my.

Inne problemy[edytuj | edytuj kod]

Segmentacja sygnału mowy

W większości języków mówionych, dźwięki przedstawiane są jako następujące po sobie i przemieszane ze sobą litery. Dlatego przekształcenie sygnału analogowego w niestałe symbole może być bardzo trudnym procesem. W mowie naturalnej pomiędzy kolejnymi wyrazami występuje również mało pauz. To, gdzie dana pauza się znajduje zależy zazwyczaj od semantyki i gramatyki, jak również od kontekstu zdania.

Segmentacja tekstu

Niektóre języki, takie jak chiński, japoński czy tajski, nie posiadają określonych granic wyrazów w języku pisanym. Zazwyczaj każda poważna analiza składniowa wymaga oznaczenia takich granic, co często bywa niełatwym zadaniem.

Oznaczanie części mowy

Jednoznaczność słów

Wiele wyrazów ma więcej niż jedno znaczenie, trzeba wiec wybrać słowo najlepiej pasujące do kontekstu.

Syntaktyczna niejednoznaczność

Gramatyka języka naturalnego jest dwuznaczna i zazwyczaj istnieje wiele możliwości analizy składniowej jednego zdania. Wybór najlepszej z nich wymaga najczęściej informacji o kontekście i semantyce. Ważnym czynnikiem problemu syntaktycznej niejednoznaczności są niejasne granice zdań.

Nieprawidłowe, bądź nieregularne dane

Z jednej strony przeszkodą może być również zagraniczny bądź regionalny akcent, jak również wada wymowy, a z drugiej błędy w tekście takie jak literówki i zła gramatyka bądź OCR.

Akt mowy i plan

Rozmówca może często uważać zdanie za pewnego rodzaju akcję. Struktura zdania, sama w sobie, może nie zawierać wystarczających informacji do zidentyfikowania tej akcji. Pytanie na przykład jest prośbą mówiącego o odpowiedź słuchacza. Odpowiedź ta może być wyrażona werbalnie, przez aktywność fizyczną lub pewnego rodzaju mieszankę obydwu. Przykładowe pytanie: „Czy możesz podać mi swoje imię?”, wymaga prostej odpowiedzi (zakładając oczywiście, że je pamiętamy). Kiedy pytanie: „Czy możesz podać mi sól?” jest właśnie prośbą o aktywność fizyczną. Odpowiedź „Tak, mogę”, bez towarzyszącej jej czynności nie jest właściwą (choć „Nie” czy „Nie mogę jej dosięgnąć” wytłumaczy brak jakiejkolwiek czynności).

Statystyczne NLP[edytuj | edytuj kod]

Kiedy zaczniemy rozpatrywać dłuższe zdania w ramach realnej gramatyki większość z nich będzie niejednoznaczna i będzie mogła być analizowana na dziesiątki różnych sposobów. By rozwiązać takie trudności, jak i inne zapisane powyżej, statystyczna analiza języka naturalnego używa metody stochastycznej, prawdopodobieństwa i statystycznej. W metody zwalczania niejednoznaczności często zaangażowane są także korpusy języka i Łańcuch Markowa. Statystyczne NLP posiada wszystkie możliwe sposoby do zautomatyzowania analizy językowej włączając modele prawdopodobieństwa (np. model n-gramowy), teorie informacji i algebry liniowej. Technologia ta wywodzi się przede wszystkim z uczenia maszynowego i szybkiej analizy danych, z których obydwie są działami sztucznej inteligencji.

Główne zadania NLP[edytuj | edytuj kod]

  • Automatyczna sumaryzacja – program komputerowy, który automatycznie streszcza tekst, zawierające w streszczeniu najważniejsze informacje.
  • Foreign language reading aid – program pomagający w czytaniu języka obcego.
  • Foreign language writing aid – program pomagający w pisaniu w języku obcym.
  • Information Extraction (IE) – program analizujący niestrukturyzowany tekst w celu wydobycia z niego informacji; wydobywa z dokumentów fakty, a użytkownik je analizuje.
  • Information Retrieval (IR) – program zajmujący się gromadzeniem, wyszukiwaniem i odzyskiwaniem informacji. Jest to oddzielny dział w informatyce (bardziej zbliżony bazom danych) zależny jednak od metod NLP (np. redukcji). Niektóre ze współczesnych badań starają się wypełnić przepaść pomiędzy IR a NLP. IR znajduje zbiór dokumentów, a użytkownik je analizuje.
  • Tłumaczenie automatyczne – automatyczne tłumaczenie tekstu z jednego języka na drugi.
  • Named Entity Recognition (NER) – jest jednym z zadań IE. Wskazuje, które ze słów w tekście są nazwami własnymi. W niektórych językach nazwy własne nie są pisane wielkimi literami.
  • Natural language generation (NLG) – zadanie polegające na tłumaczeniu danych z języka komputerowego na język naturalny.
  • Natural language understanding – poddział NLP zajmujący się rozumieniem języka naturalnego przez komputer.
  • OCR – oprogramowanie służące do rozpoznawania znaków graficznych np. z zeskanowanego tekstu.
  • Anaphora Resolution – program, który wyszukuje do czego odnosi się dana anafora w tekście.
  • Question answering – program, który odpowiada używając języka naturalnego na pytania zadawane w tym języku. Mogą to być pytania z jedną odpowiedzią (jak na przykład „Jakie miasto jest stolicą Kanady?”), lub z wieloma (np. „Jaki jest sens życia?”).
  • Rozpoznawanie mowy – potrafi zapisać tekst rozmowy z pliku dźwiękowego. (Odwrotność przetwarzania tekstu na mowę, syntezy mowy).
  • Spoken dialogue system – system, który rozpoznaje mowę i posiada moduł syntezy mowy.
  • Text simplification – operacja upraszczająca gramatykę i strukturę tekstu.
  • Synteza mowy – operacja polegająca na przetwarzaniu tekstu na mowę.
  • Korekta tekstu – zadanie polegające na zaznaczaniu błędów w tekście pisanym.

Problemy[edytuj | edytuj kod]

Niektóre problemy systemu rozumienia języka naturalnego:

  • Zdania: „Daliśmy małpom banany, bo były głodne” i „Daliśmy małpom banany, bo były przejrzałe” mają tę samą strukturę gramatyczną. Jednak czasownik „były” odnosi się w jednym zdaniu do małp, a w drugim do bananów. Bez wiedzy o charakterystyce małp i bananów nie sposób odgadnąć, w którym przypadku czasownik ten odnosi się do jakiego rzeczownika.
  • Ciąg słów może zostać różnie zinterpretowany. Na przykład angielskie stwierdzenie „Time flies like an arrow”, co w dosłownym tłumaczeniu na język polski oznacza „Czas leci jak strzała”, może zostać zrozumiane na wiele sposobów:
    • Po pierwsze może być to typowe porównanie: Czas leci tak szybko, jak strzała.
    • Poza tym, ponieważ wyraz „flies” w języku angielskim oznacza także muchy, a rzeczownik „time” może być również czasownikiem, znaczenie powyższego wyrażenia może być odczytane jako: „(You should) time flies as you would (time) an arrow.”, co w języku polskim oznacza „Mierz prędkość much tak, jak mierzyłbyś prędkość strzały” (wyrażenie odczytywane jest w tym przypadku w trybie rozkazującym).
    • Przy powyższym założeniu odnośnie znaczenia wyrazów „time” oraz „flies” analizowane stwierdzenie może także być zrozumiane jako „Time flies in the same way that an arrow would (time them)”, co znaczy „Mierz prędkość much tak, jak robiłaby to strzała”.
    • Następne znaczenie odnosi się do porównania much oraz strzały: „Time those flies that are like arrows”, co znaczy „Mierz prędkość tych much, które są jak strzała”.
    • „time-flies” może być również odczytane jako rodzaje latających owadów, co w powyższym zdaniu znaczyłoby, że wszystkie owady tego rodzaju lubią pojedyncza strzałę. (można to porównać z wyrażeniem „Fruit flies like a banana”, które może oznaczać, że owoc lata jak banan lub, że muszki owocówki lubią banana).
    • „time-flies” w powyższym rozumieniu może również znaczyć, że każdy rodzaj latającego owada oddzielnie lubi inną strzałę.(w tym przypadku można również zastosować porównanie podobne do powyższego).
    • Kolejne znaczenie może być takie, że konkretny przedmiot taki jak np. magazyn „Time” leci w powietrzu w sposób podobny do strzały.

Szczególnie wymagające w tej materii są języki analityczne, np. współczesny język angielski, który praktycznie nie posiada pomagającej odróżnić od siebie części mowy morfologii fleksyjnej.

  • W języku angielskim oraz w kilku innych językach nie znajdziemy wskazówki odnośnie tego, którego słowa dotyczy dany przymiotnik. Przykładem może być tu wyrażenie „pretty little girls’ school”.
    • Czy „little” (mała) odnosi się do „school”(szkoły)?
    • Czy „little”(małe) odnosi się do „girls”(dziewczynek)?
    • Czy „pretty”(ładne) odnosi się do „girls”(dziewczynek)?
    • Czy „pretty”(ładna) odnosi się do „school”(szkoły)?
  • W języku mówionym często sugerujemy dodatkowe informacje poprzez akcentowanie poszczególnych wyrazów. Zdanie „I never said she stole my money”, co po polsku znaczy dosłownie „Ja nigdy nie powiedziałem, że ona ukradła moje pieniądze.”, ukazuje jak ważną rolę odgrywa akcent w zdaniu i z jak znaczącym i nieodłącznym problemem musi poradzić sobie analizator języka naturalnego przy przeprowadzaniu analizy składniowej. W zależności od tego jakie słowo jest akcentowane przez mówiącego, zarówno w języku angielskim, jak i polskim zdanie to może mieć kilka odrębnych znaczeń:
    • Ja nigdy nie powiedziałem, że ona ukradła moje pieniądze.” – ktoś inny to powiedział, ale nie ja.
    • „Ja nigdy nie powiedziałem, że ona ukradła moje pieniądze.” – ja po prostu nie powiedziałem tego.
    • „Ja nigdy nie powiedziałem, że ona ukradła moje pieniądze.” – mogłem zasugerować to w inny sposób, ale nigdy nie powiedziałem tego wprost.
    • „Ja nigdy nie powiedziałem, że ona ukradła moje pieniądze.” – powiedziałem, że ktoś wziął te pieniądze, ale nie powiedziałem, że to była ona.
    • „Ja nigdy nie powiedziałem, że ona ukradła moje pieniądze.” – powiedziałem tylko, że prawdopodobnie ona tylko pożyczyła te pieniądze.
    • „Ja nigdy nie powiedziałem, że ona ukradła moje pieniądze.” – powiedziałem, że ona ukradła czyjeś pieniądze.
    • „Ja nigdy nie powiedziałem, że ona ukradła moje pieniądze.” – powiedziałem, że ona coś ukradła, ale nie moje pieniądze.

Ocena NLP[edytuj | edytuj kod]

Cele[edytuj | edytuj kod]

Celem oceny NLP jest zmierzenie jednej lub większej ilości cech algorytmu lub systemu tak, aby ustalić, czy (lub w jakim stopniu) system spełnia założenia twórców oraz czy zaspokaja potrzeby jego użytkowników. Badania dotyczące oceny NLP cieszą się znaczącym zainteresowaniem, ponieważ określenie właściwego kryterium oceny jest jedyną drogą by precyzyjnie zdefiniować problem NLP wychodzący poza ogólnikowość zadań zdefiniowanych jako zrozumienie oraz wygenerowanie języka. Dokładny zbiór kryteriów oceny, który zawiera głównie jej dane oraz metryki, umożliwia kilku drużynom porównanie ich rozwiązań dla danego problemu analizy NLP.

Krótka historia oceny w NLP[edytuj | edytuj kod]

Pierwszą kampanią ocen tekstów pisanych wydaje się być kampania z 1987 roku dedykowana zrozumieniu komunikatu (Pallet 1998). Następnie, projekt Parseval/GEIG porównywał gramatyki o strukturze frazowej (Black 1991). W projekcie Tipster realizowane były serie kampanii koncentrujących się na zadaniach takich jak sumaryzacja, tłumaczenie i wyszukiwanie (Hirshman 1998). W roku 1994, w Niemczech, w „Morpholympics” porównane zostały niemieckie znaczniki. Następnie, przeprowadzono kampanie Sensevala i Romansevala mające na celu semantyczne wyjaśnienie. W 1996 roku, kampania Sparkle porównała analizatory składniowe w czterech różnych językach (angielskim, francuskim, niemieckim i włoskim). W 1997 roku, we Francji, projekt Grace porównał zbiory 21 znaczników dla języka francuskiego (Adda 1999). W 2004 roku, podczas projektu Technolangue/Easy porównano 13 analizatorów składniowych dla języka francuskiego. Ocena zależnych analizatorów składniowych na dużą skalę miała miejsce w latach 2006 oraz 2007 przy okazji wspólnych zadań na konferencji na temat Komputerowej Nauki Języka Naturalnego (CoNLL). W roku 2007, przeprowadzono we Włoszech kampanię evalita by porównać różne narzędzia dla włoskiej strony internetowej o tej samej nazwie (http://evalita.itc.it). We Francji natomiast, podczas projektu ANR-Passage (koniec roku 2007), porównanych zostało na stronie internetowej (http://atoll.inria.fr/passage/) 10 analizatorów składniowych dla języka francuskiego.

  • Adda G., Mariani J., Paroubek P., Rajman M. 1999 L’action GRACE d'évaluation de l’assignation des parties du discours pour le français. Langues vol-2.
  • Black E., Abney S., Flickinger D., Gdaniec C., Grishman R., Harrison P., Hindle D., Ingria R., Jelinek F., Klavans J., Liberman M., Marcus M., Reukos S., Santoni B., Strzalkowski T. 1991 A procedure for quantitatively comparing the syntactic coverage of English grammars. DARPA Speech and Natural Language Workshop.
  • Hirshman L. 1998 Language understanding evaluation: lessons learned from MUC and ATIS. LREC Granada.
  • Pallet D.S. 1998 The NIST role in automatic speech recognition benchmark tests. LREC Granada.

Różne rodzaje ocen[edytuj | edytuj kod]

W zależności od procedur oceny, wykonuje się kilka rodzajów rozróżnień odnośnie oceny NLP.

  • Ocena wewnętrzna, a ocena zewnętrzna

Ocena wewnętrzna sprawdza pojedynczy system NLP i określa jego pracę głównie w oparciu o wynik złotego standardu, który to jest uprzednio zdefiniowany przez oceniających. Ocena zewnętrzna, znana również jako ocena w czasie użycia, sprawdza system NLP przy bardziej złożonych ustawieniach, jako system wbudowany lub służący do wykonania określonych funkcji dla użytkownika. Zewnętrzne działanie systemu jest następnie określone w oparciu o użyteczność z uwzględnieniem całości zadania zleconego przez złożony system lub użytkownika. Weźmy pod uwagę na przykład analizator składniowy, który oparty jest na wynikach znaczników nowej części mowy. Przy ocenie wewnętrznej zostałby uruchomiony znacznik części mowy odnośnie jakiś określonych danych i porównałby dane systemu uzyskane przez znacznik do (poprawnych) danych złotego standardu. Przy ocenie zewnętrznej zostałby uruchomiony analizator z innym znacznikiem części mowy, następnie z nowym znacznikiem, po czym nastąpiłoby porównanie dokładności analizy.

  • Czarne pudełko, a szklane pudełko

Ocena oparta na czarnym pudełku polega na uruchomieniu systemu NLP na określonej bazie danych i zmierzeniu parametrów związanych z jakością procesu (prędkość, niezawodność, użycie zasobów) oraz, co najważniejsze, z jakością wyniku (np. trafność określania danych oraz wierność tłumaczenia). Ocena oparta na szklanym pudełku polega na sprawdzeniu projektu systemu, wprowadzonych algorytmów, używanych zasobów językowych (np. wielkość zasobu słów) itp. Biorąc pod uwagę złożoność problemów związanych z NLP, często trudno jest przewidzieć działanie systemu bazując jedynie na ocenie opartej na szklanym pudełku. Jednak ten rodzaj oceny dostarcza więcej informacji odnośnie analizy błędów lub przyszłego rozwoju systemu.

  • Automatyczna, a manualna

W wielu przypadkach określone mogą zostać automatyczne procedury oceniające system NLP poprzez porównanie wyników ze złotym (pożądanym) standardem. Mimo że koszty związane ze stworzeniem złotego standardu mogą być dosyć wysokie, to automatyczna ocena może być powtarzana tak często, jak tylko potrzeba, bez znaczących dodatkowych kosztów (przy takich samych wprowadzonych danych). Jednakże dla wielu problemów związanych z NLP utworzenie złotego środka stanowi trudne zadanie i może okazać się niewykonalne, gdy uzgodnienie wewnętrznego znacznika jest niewystarczające. Ocena manualna wykonywana jest przez osoby oceniające, które mają za zadanie określić w oparciu o ustalone kryteria jakość systemu lub najczęściej jakość wyników generowanych przez system. Mimo że osoby oceniające mogą być dzięki kompetencji językowej uważane za źródło informacji odnośnie wielu zadań dotyczących analizy językowej, wśród ich ocen również zdarzają się rozbieżności. Dlatego właśnie ocena automatyczne często uznawana jest za ocenę obiektywną, podczas gdy ludzie wydają się być bardziej subiektywni.

Wspólne zadania (kampanie)[edytuj | edytuj kod]

  • BioCreative
  • Message Understanding Conference
  • Technolangue/Easy
  • Text Retrieval Conference

Standaryzacja w NLP[edytuj | edytuj kod]

Podkomisja Międzinarodowej Organizacji Normalizacyjnej (ISO) pracuje nad ułatwieniem wzajemnego współdziałania zasobów leksykalnych z programami NLP. Podkomisja jest częścią ISO/TC 37 i jest nazywana ISO/TC37/SC4. Niektóre standardy ISO zostały już opublikowane, jednak większość z nich jest jeszcze w fazie tworzenia; głownie te dotyczące przedstawienia słownictwa, oznaczania i rejestrowania kategorii danych.

Czasopisma[edytuj | edytuj kod]

  • Computational Linguistics
  • Language Resources and Evaluation
  • Linguistic Issues in Language Technology

Organizacje i konferencje[edytuj | edytuj kod]

Stowarzyszenia[edytuj | edytuj kod]

  • Stowarzyszenie Lingwistyki Komputerowej
  • Association for Machine Translation in the Americas
  • AFNLP – Asian Federation of Natural Language Processing Associations
  • Australasian Language Technology Association (ALTA)

Konferencje[edytuj | edytuj kod]

  • Language Resources and Evaluation

Narzędzia programowe[edytuj | edytuj kod]

Bibliografia[edytuj | edytuj kod]

  • Charniak, Eugene:Introduction to artificial intelligence, s. 2. Addison-Wesley, 1984.
  • Christopher D. Manning, Hinrich Schutze Foundations of Statistical Natural Language Processing, MIT Press (1999), ISBN 978-0-262-13360-9, str. xxxi

Artykuły[edytuj | edytuj kod]

Bates, M. (1995). Models of natural language understanding. Proceedings of the National Academy of Sciences of the United States of America, Vol. 92, Nr. 22 (24.10.1995), s. 9977-9982.

Linki zewnętrzne[edytuj | edytuj kod]

Organizacje[edytuj | edytuj kod]

  • The Stanford Natural Language Processing Group
  • The Cognitive Computation Group
  • NLP group of CIC-IPN
  • CLaC – Computational Linguistics at Concordia