Arhn - архитектура программирования

Как я могу разделить предложения на абзацы на основе точки (.)? Использование Стэнфордского синтаксического анализатора

Как я могу разделить предложения на абзацы на основе точки (.)? Я хочу использовать Stanford Parser (Java).

Например, у меня есть абзацы.

Ваши навыки написания параграфов сделают вас идеальным мужчиной. Если вы посмотрите на любую печатную книгу прозы, вы увидите, что каждая глава разделена на разделы, первая строка каждого из которых имеет небольшой отступ вправо. Эти разделы называются «Абзац». Главы, очерки и другие прозаические сочинения разбиты на абзацы, чтобы облегчить их чтение.

После разделения,

Ваши навыки написания параграфов сделают вас идеальным мужчиной.

Если вы посмотрите на любую печатную книгу прозы, вы увидите, что каждая глава разделена на разделы, первая строка каждого из которых имеет небольшой отступ вправо.

Эти разделы называются «Абзац».

Главы, очерки и другие прозаические сочинения разбиты на абзацы, чтобы облегчить их чтение.

Я надеюсь получить этот результат. Как я могу получить этот результат, используя Stanford Parser?

08.09.2017

  • Вам не нужно НЛП, чтобы разделить период 09.09.2017
  • Я просто хочу использовать НЛП перед токенизацией. Тогда вы имеете в виду, что я должен использовать библиотеку Java. правильно? 09.09.2017
  • Вы можете использовать NLP, чтобы делать то, что хотите, я просто указываю, что вам не нужно это для обнаружения периодов и разделения текста. 09.09.2017

Ответы:


1

Для этого не нужно использовать специальный анализатор, если у вас уже есть метод String.split(). Вам просто нужно использовать правильное Регулярное выражение (RegEx) для выполнения задачи.

Предложения внутри абзаца могут содержать не только точку в конце. В конце предложения может быть вопросительный знак (?) или, возможно, восклицательный знак (!) Чтобы по-настоящему вытащить все предложения из абзаца, вам нужно будет это учитывать. Еще одна вещь, которую следует учитывать: что, если есть числовое значение, которое соответствует определенной десятичной точке в предложении, например:

«Эй, ребята, послушайте это. Стоимость предмета составляла 123,45 доллара, и угадайте, что она заплатила все это одним махом! Этот www.ebay.com — действительно отличное место, где можно купить вещи, не правда ли? Однако я останусь на сайте www.amazon.com. Я не подсел на него, но они хорошо относились ко мне в течение многих лет».

Теперь, взглянув на небольшой абзац выше, вы можете ясно увидеть в нем некоторые вещи, которые необходимо учитывать при разбиении его на отдельные предложения. Мы не можем просто основывать все на точке (.). Мы действительно не хотим разделять денежные значения и веб-домены, и мы не хотим, чтобы вопросительные или восклицательные предложения включались в другие предложения.

Чтобы разбить этот абзац примера на отдельные предложения, не повреждая содержимое с помощью метода String.split(), мы можем использовать это регулярное выражение:

String[] sentences = paragraph.trim().split("(?<=\\.\\s)|(?<=[?!]\\s)");

Вы заметили, что здесь мы также использовали метод String.trim()? Некоторые абзацы могут начинаться с табуляции или пробелов, поэтому мы просто избавляемся от них с самого начала, прежде чем будет выполнено разделение (на всякий случай). Используемое Регулярное выражение (которое использует Positive Look-Behind) в String Метод .split() на самом деле не так уж и сложен, и вы можете протестировать его здесь. Вот о чем речь:

введите здесь описание изображения

Если бы вы теперь перебирали переменную массива строк с именем sentences следующим образом:

for (String sentence : sentences) {
    System.out.println(sentence + " \n");
}

вывод вашей консоли должен выглядеть примерно так:

Hey folks, listen to this.  

The value of the item was $123.45 and guess what, she paid all in one shot!  

That www.ebay.com is a real great place to get stuff don't you think?  

I think I'll stick with www.amazon.com though.  

I'm not hooked on it but they've treated me great for years.
09.09.2017
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..