Розрізнення меж речення

Матеріал з Вікіпедії — вільної енциклопедії.
(Перенаправлено з Сегментація речення)
Перейти до навігації Перейти до пошуку

Розрізнення меж речення, також відоме, як розбиття речення, виявлення меж речення і сегментація речення  – задача в галузі обробки природної мови, яка визначає місце початку й закінчення речення. Інструменти обробки тексту часто вимагають, щоб вхідні дані були розділені на самостійні фрагменти; однак ідентифікація їхніх меж може бути складною через потенційну неоднозначність розділових знаків. На письмі крапка може позначати як кінець твердження, так і абревіатуру, десятковий роздільник, трикрапку чи адресу електронної пошти. Близько 47 % крапок у корпусі The Wall Street Journal позначають акроніми.[1] Знаки питання та оклику так само можуть бути невизначеними через використання в смайликах, комп'ютерному коді й сленгу.

Деякі мови, зокрема японська та китайська, мають чіткі маркери кінців речень.

Стратегії[ред. | ред. код]

Стандартний 'vanilla'-підхід для знаходження кінця речення:[прояснити]

(a) Якщо це крапка, вона закінчує твердження.
(b) Якщо попередній токен зі складеного вручну списку скорочень, то це не завершує речення.
(c) Якщо наступний токен починається з великої літери  – це кінець тези.

Ця стратегія правильно знаходить близько 95 % речень.[2] Такі речі, як скорочені імена, напр. «Д. Г. Лоуренс»пробілами між окремими словами, які утворюють повне ім'я), ідіосинкратичний орфоепічний правопис, що використовується для стилістичних цілей (часто стосується однієї концепції, наприклад, заголовок розважального твору «.hack//SIGN[en]») і використання нестандартної пунктуації у тексті часто підпадають під решту 5 %.

Інший підхід полягає в тому, щоб автоматично вивчати правила з набору документів, де кінці речень попередньо розмічені. Такі рішення базуються на моделі максимальної ентропії[en].[3] Наприклад, архітектура SATZ використовує нейронну мережу для усунення неоднозначності меж речень і досягає 98,5 % точності.

Програмне забезпечення[ред. | ред. код]

Приклади застосування Perl-сумісних регулярних виразів («PCRE»)
  • ((?<=[a-z0-9][.?!])|(?<=[a-z0-9][.?!]\"))(\s|\r\n)(?=\"?[A-Z])
  • $sentences = preg_split("/(?<!\..)([\?\!\.]+)\s(?!.\.)/", $text, -1, PREG_SPLIT_DELIM_CAPTURE); (для PHP)
Онлайн-сервіси, бібліотеки та API
Набори інструментів, які включають виявлення речень

Див. також[ред. | ред. код]

Примітки[ред. | ред. код]

  1. E. Stamatatos; N. Fakotakis; G. Kokkinakis. 1 Automatic Extraction of Rules for Sentence Boundary Disambiguation. University of Patras. Архів оригіналу за 4 березня 2016. Процитовано 3 січня 2009.
  2. O'Neil, John. Doing Things with Words, Part Two: Sentence Boundary Detection. Процитовано 3 січня 2009.
  3. Reynar, JC; Ratnaparkhi, A. A Maximum Entropy Approach to Identifying Sentence Boundaries (PDF). Процитовано 3 січня 2009.

Посилання[ред. | ред. код]