Mając wiele dokumentów tekstowych (w języku naturalnym, nieuporządkowanym), jakie są możliwe sposoby przypisywania im niektórych semantycznych metadanych? Rozważmy na przykład krótki dokument:
I saw the company's manager last day.
Aby móc z niej wyodrębnić informacje, muszą być opatrzone adnotacjami dodatkowymi danymi, aby były mniej niejednoznaczne. Proces wyszukiwania takich metadanych nie jest kwestionowany, więc załóżmy, że odbywa się to ręcznie. Pytanie brzmi: w jaki sposób przechowywać te dane w taki sposób, aby można było przeprowadzić ich dalszą analizę wygodniej / wydajniej?
Możliwym podejściem jest użycie znaczników XML (patrz poniżej), ale wydaje się to zbyt szczegółowe i być może istnieją lepsze podejścia / wytyczne dotyczące przechowywania takich metadanych w dokumentach tekstowych.
<Person name="John">I</Person> saw the <Organization name="ACME">company</Organization>'s
manager <Time value="2014-5-29">last day</Time>.
źródło
Odpowiedzi:
Osobiście zalecałbym użycie czegoś, co nie jest specyficzne dla dziedziny NLP, i czegoś, co jest na tyle ogólne, że można go nadal używać jako narzędzia, nawet jeśli zacząłeś przekraczać ten poziom metadanych. W szczególności wybrałbym format, który może być używany niezależnie od środowiska programistycznego, i taki, który może zachować podstawową strukturę, jeśli stanie się to odpowiednie (np. Tokenizacja)
To może wydawać się dziwne, ale szczerze sugerowałbym
JSON
. Jest niezwykle dobrze obsługiwany, obsługuje wiele struktur i jest wystarczająco elastyczny, abyś nie musiał się z niego ruszać, ponieważ nie był wystarczająco silny. Na przykład coś takiego:Jedną wielką zaletą, jaką masz tutaj w stosunku do formatów specyficznych dla NLP, jest to, że
JSON
można je analizować w dowolnym środowisku, a ponieważ prawdopodobnie i tak będziesz musiał edytować swój format, JSON nadaje się do bardzo prostych edycji, które dają ci krótki dystans do innych formatów.Możesz także niejawnie przechowywać informacje o tokenizacji, jeśli chcesz:
EDYCJA: Wyjaśnienie mapowania metadanych jest dość otwarte, ale oto przykład:
Mam nadzieję, że to pomoże, daj mi znać, jeśli masz więcej pytań.
źródło
Ogólnie rzecz biorąc, nie chcesz używać znaczników XML do oznaczania dokumentów w ten sposób, ponieważ znaczniki mogą się nakładać.
UIMA , GATE i podobne frameworki NLP oznaczają tagi oddzielnie od tekstu. Każdy znacznik, takie jak
Person
,ACME
,John
itd. Są przechowywane w położeniu, że znacznik zaczyna się i stanowiska, że kończy. Tak więc dla znacznikaACME
byłby zapisany jako początek pozycji 11 i zakończenie w pozycji 17.źródło
Narzędzie adnotacji bachor może być przydatne dla Ciebie, jak na mój komentarz. Próbowałem wielu z nich i to jest najlepsze, jakie znalazłem. Ma ładny interfejs użytkownika i może obsługiwać wiele różnych rodzajów adnotacji. Adnotacje są przechowywane w osobnym pliku .annot, który zawiera każdą adnotację, a także jej lokalizację w oryginalnym dokumencie. Słowo ostrzeżenia, jeśli ostatecznie chcesz wprowadzić adnotacje do klasyfikatora, takiego jak narzędzie Stanford NER, będziesz musiał wykonać pewne manipulacje, aby uzyskać dane w formacie, który zaakceptuje.
źródło
Opisanie wszystkich istniejących danych jest tak trudnym zadaniem, ale możemy użyć modelu danych: http://schema.org/ , gdzie znajdują się strukturalne typy informacji. Wcześniejsze wykonanie było ukierunkowane na wdrożenie technologii MarkUp, więc wydaje się, że może być przydatne w Twoim zadaniu.
źródło