Как использовать обработку естественного языка для разделения неструктурированного текстового содержания на отличные абзацы?

Следующий неструктурированный текст имеет три отличных темы - Stallone, Филадельфию и американский Оборот. Но какой алгоритм или технику Вы использовали бы для разделения этого содержания на отличные абзацы?

Классификаторы не будут работать в этой ситуации. Я также пытался использовать Подобие Jaccard анализатор для нахождения расстояния между последовательными предложениями и пытался сгруппировать последовательные предложения в один абзац, если расстояние между ними было меньше, чем данное значение. Существует ли лучший метод?

Это - мой текстовый образец:

Sylvester Gardenzio Stallone, которого называют Хитрым Stallone, является американским агентом, режиссером и сценаристом. Stallone известен своей мужественностью и голливудскими ролями действия. Фильм Stallone Rocky был введен в должность в Национальный реестр фильмов, а также размещение его пленочных опор в Смитсоновском Музее. Использование Stallone главного входа в Филадельфийский Художественный музей в ряду Rocky привело область быть названной Шагами Rocky. Коммерческий, образовательный, и культурный центр, Филадельфия была однажды второй по величине город в Британской империи (после Лондона), и социальный и географический центр исходных 13 американских колоний. Это был центральный элемент ранней американской истории, хоста многих идей и действий, которые родили американский Оборот и независимость. Американский Оборот был политическим переворотом в течение последней половины 18-го века, в котором тринадцать колоний в Северной Америке объединились для вырываний на свободу из Британской империи, объединившись для становления Соединенными Штатами Америки. Они сначала отклонили полномочия Парламента Великобритании для управления ими из-за границы без представления и затем выслали всех королевских чиновников. К 1774 каждая колония создала Провинциальный Конгресс или эквивалентное правительственное учреждение, для формирования отдельных самоуправляющихся состояний.

12
задан hippietrail 8 September 2014 в 04:08
поделиться

3 ответа

Я мало что знаю об этом, поэтому этот ответ - заглушка для лучшего. Тем не менее, два пункта

  1. Одно из названий этой проблемы - определение темы и http://research.microsoft.com/en-us/um/people/cyl/download/papers/thesis97.pdf - часто цитируемая статья в этой области.
  2. Это, наверное, очень сложно. Я бы не отделил Филадельфию от Американской революции, если бы вы мне не сказали.
1
ответ дан 2 December 2019 в 20:15
поделиться

Итак, я работал в НЛП долгое время, и это действительно сложная проблема, которую вы пытаетесь решить. Вы никогда не сможете реализовать решение со 100% точностью, поэтому вам следует заранее решить, лучше ли принимать ложноотрицательные решения (не удается найти точку сегментации абзаца) или ложноположительные решения (вставка ложной сегментации. точки). Как только вы это сделаете, соберите корпус документов и аннотируйте истинные точки сегментации, которые вы ожидаете найти.

Как только вы это сделаете, вам понадобится механизм для поиска точек EOS (конец предложения). Затем между каждой парой предложений вам нужно будет принять двоичное решение: следует ли вставлять здесь границу абзаца?

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

ABCDE   ABCD|E   ABC|DE   ABC|D|E   AB|CDE   AB|CD|E   AB|C|DE   AB|C|D|E
A|BCDE  A|BCD|E  A|BC|DE  A|BC|D|E  A|B|CDE  A|B|CD|E  A|B|C|DE  A|B|C|D|E

Чтобы измерить сплоченность, вы можете использовать метрику сходства предложений (основанную на некотором наборе характеристик, извлеченных для каждого из них). приговор).Для простоты, если два соседних предложения имеют показатель сходства 0,95, то за их объединение в один абзац взимается 0,05 «стоимость». Общая стоимость плана сегментации документа - это совокупность всех затрат на объединение предложений. Чтобы прийти к окончательной сегментации, вы выбираете план с наименьшими совокупными затратами.

Конечно, для документа, состоящего более чем из нескольких предложений, существует слишком много различных возможных перестановок сегментации, чтобы перебором оценить все их затраты. Так что вам понадобится эвристика, чтобы направить процесс. Здесь может быть полезно динамическое программирование.

Что касается фактического извлечения признаков предложения ... ну, здесь это действительно усложняется.

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

Наивная реализация могла бы просто подсчитать количество экземпляров каждого слова и сравнить количество слов в одном предложении с количеством слов в соседнем предложении. Если важное слово (например, «Филадельфия») встречается в двух соседних предложениях, они могут получить высокий балл сходства.

Но проблема в том, что два смежных предложения могут иметь очень похожие темы, даже если в этих предложениях есть полностью неперекрывающиеся наборы слов.

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

Например, представить предложение со словом «зеленоватый». Во время процесса извлечения признаков я бы обязательно включил точное лексическое значение («зеленоватый»), но я бы также применил морфологическое преобразование, нормализуя слово к его корневой форме («зеленый»). Затем я поискал это слово в таксономии и обнаружил, что это цвет, который можно далее обобщить как визуальный дескриптор. Итак, основываясь на этом одном слове, я мог бы добавить четыре различных свойства к моему набору характеристик предложения («зеленоватый», «зеленый», «[цвет]», «[визуальный]»). Если бы в следующем предложении документа снова упоминался цвет «зеленый», то эти два предложения были бы очень похожими. Если бы в следующем предложении использовалось слово «красный», они все равно имели бы некоторую степень сходства, но в меньшей степени.

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

15
ответ дан 2 December 2019 в 20:15
поделиться

Для этого примера лучшим методом является поиск полных стоп, за которыми не следует пробел!

0
ответ дан 2 December 2019 в 20:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: