Як коментувати текстові документи за допомогою метаданих?


18

Маючи багато текстових документів (на природній мові, неструктурованих), які можливі способи їх анотування за допомогою деяких смислових метаданих? Наприклад, розглянемо короткий документ:

I saw the company's manager last day.

Щоб мати змогу витягувати з неї інформацію, її потрібно зазначати додатковими даними, щоб бути менш неоднозначною. Процес пошуку таких метаданих не викликає сумнівів, тому припустимо, що це робиться вручну. Питання полягає в тому, як зберігати ці дані таким чином, щоб подальший аналіз на них можна було зробити зручніше / ефективніше?

Можливим підходом є використання тегів XML (див. Нижче), але це здається занадто багатослівним, і, можливо, є кращі підходи / рекомендації щодо зберігання таких метаданих у текстових документах.

<Person name="John">I</Person> saw the <Organization name="ACME">company</Organization>'s
manager <Time value="2014-5-29">last day</Time>.

Однією з головних цілей SGML (те саме стосується і її нащадків, XML) було надання засобів для тегів текстових документів (POS та семантичні теги).
Мисливець на олень

Може бути більш конкретним / обмежуючим стосовно того, який тип метаданих ви хочете додати? З ваших двох прикладів я сумніваюся, що існує менш багатослівний спосіб, який має таку загальну виразність, як теги XML.
ojdo

@ojdo Більшість метаданих є або для розрізнення (як відносні часи), або для визначення спеціальних сутностей (наприклад, FK).
Амір Алі Акбарі

2
Я використовував brat.nlplab.org в минулому. Є приємний інтерфейс для багатьох різних видів анотацій. Анотації зберігаються в окремому файлі .annot, що представляє собою список слів, що позначаються, та їх положення в документі.
користувач1893354

@ user1893354 Дуже корисно! Особливо " формат протистояння ", який використовується, здається, дуже підходить для моїх потреб. Я пропоную розмістити відповідь, якщо вам подобається.
Амір Алі Акбарі

Відповіді:


15

Особисто я б закликав використовувати щось, що не є специфічним для поля NLP, а також те, що є достатньо загальним, що воно все ще може бути використане як інструмент, навіть коли ви почали виходити за межі цього рівня метаданих. Я б особливо вибрав формат, який можна використовувати незалежно від середовища розробки та такий, який може зберігати якусь основну структуру, якщо це стане актуальним (наприклад, токенізація)

Це може здатися дивним, але я б чесно запропонував JSON. Він надзвичайно добре підтримується, підтримує багато структури і є досить гнучким, що вам не доведеться рухатися від нього, щоб бути недостатньо потужним. Для вашого прикладу щось подібне:

{'text': 'I saw the company's manager last day.", {'Person': [{'name': 'John'}, {'indices': [0:1]}, etc...]}

Єдиною великою перевагою, яку ви маєте перед будь-якими форматами, що стосуються NLP, є те, що JSONїх можна проаналізувати в будь-якому середовищі, і оскільки ви, мабуть, вам доведеться будь-коли редагувати свій формат, JSON піддається дуже простим редагуванням, які дають вам коротку відстань до інших форматів.

Ви також можете неявно зберігати інформацію про токенізацію, якщо хочете:

{"text": ["I", "saw", "the", "company's", "manager", "last", "day."]}

EDIT: Для уточнення відображення метаданих досить відкрито, але ось приклад:

{'body': '<some_text>',
 'metadata': 
  {'<entity>':
    {'<attribute>': '<value>',
     'location': [<start_index>, <end_index>]
    }
  }
}

Сподіваюся, що це допоможе, повідомте мені, якщо у вас є якісь питання.


Будучи веб-розробником, JSON мені здається цілком розумним, але чи можете ви детальніше розглянути точний формат відображення слів до сутностей?
Амір Алі Акбарі

@AmirAliAkbari Оновлена ​​відповідь, щоб включити більше інформації.
indico

7

Загалом, ви не хочете використовувати теги XML для тегування документами таким чином, оскільки теги можуть перетинатися.

UIMA , GATE та подібні рамки NLP позначають теги окремо від тексту. Кожен тег, такий як Person, ACME, і Johnт.д. зберігаються в положенні , яке починається тег і позиції , що вона закінчується. Отже, для мітки ACMEвона зберігатиметься як початкова позиція 11 та закінчення у позиції 17.


7

Інструмент для анотації батрака може бути корисним для вас згідно мого коментаря. Я спробував багато з них, і це найкраще, що я знайшов. Він має приємний користувальницький інтерфейс і може підтримувати ряд різних анотацій. Анотації зберігаються в окремому файлі .annot, який містить кожну примітку, а також її розташування в оригінальному документі. Слово попередження, проте, якщо ви в кінцевому підсумку хочете подати примітки до такого класифікатора, як інструмент Stanford NER, тоді вам доведеться провести маніпуляції, щоб отримати дані у форматі, який він прийме.


1

Описати всі існуючі дані - це настільки складна задача, але ми можемо використовувати модель даних: http://schema.org/ , де розташовані структурні типи інформації. Попереднє виконання було спрямоване на впровадження технології MarkUp, тому, здається, це може бути корисним для вашої задачі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.