Устранение неоднозначности границ независимых предложений и сегментация независимых предложений - какие инструменты для этого?

Я помню, как давно просмотрел раздел сегментации предложений на сайте NLTK.

Я использую грубую текстовую замену «точки» «пробел» на «точку» «перенос строки вручную», чтобы добиться сегментации предложения, например, с заменой Microsoft Word (. -> .^p) или расширения Chrome:

https://github.com/AhmadHassanAwan/Sentence-Segmentation

https://chrome.google.com/webstore/detail/sentence-segmenter/jfbhkblbhhigbgdnijncccdndhbflcha

Это вместо метода NLP, такого как токенизатор Punkt в NLTK.

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

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

Ниже приведен пример текста. Если в предложении можно выделить независимое предложение, это означает разделение. Начиная с конца предложения, он перемещается влево и жадно разделяется:

E.g.

Разрешение границ предложения (SBD), также известное как разрыв предложения, является проблемой при обработке естественного языка при определении того, где

предложения начинаются и заканчиваются.

Часто инструменты обработки естественного языка

требуют, чтобы их вклад был разделен на предложения по ряду причин.

Однако определить границы предложения сложно, потому что знаки препинания

оценки часто бывают неоднозначными.

Например, точка может

обозначают сокращение, десятичную точку, многоточие или адрес электронной почты, а не конец предложения.

Примерно 47% периодов в корпусе Wall Street Journal

обозначают сокращения. [1]

Также вопросительные и восклицательные знаки могут

появляются во встроенных цитатах, смайликах, компьютерном коде и сленге.

Другой подход - автоматическое

узнать набор правил из набора документов, где предложение

перерывы предварительно отмечены.

Языки, например японский и китайский.

иметь однозначные маркеры окончания предложения.

Стандартный "ванильный" подход к

найдите конец предложения:

(а) Если

это период,

он заканчивает предложение.

(б) Если предыдущее

токен находится в моем списке сокращений, составленном вручную, тогда

это не конец предложения.

(c) Если следующее

токен пишется с заглавной буквы, тогда

он заканчивает предложение.

Это

стратегия дает около 95% правильных предложений. [2]

Решения основаны на модели максимальной энтропии. [3]

Архитектура SATZ использует нейронную сеть для

устраняет неоднозначность границ предложения и достигает точности 98,5%.

(Я не уверен, правильно ли я разделил.)

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

Спасибо.


person Jeff Kang    schedule 25.05.2014    source источник
comment
В примерах в вашем вопросе вы, кажется, разделяете на независимые предложения, а также на зависимые предложения. Некоторые расщепления вообще не являются предложениями. (например, однозначное предложение ... точность - это соединение двух предложений). Тем не менее, очень интересный вопрос для компьютерных лингвистов. Проголосуйте за это.   -  person Chthonic Project    schedule 26.05.2014
comment
Я смотрю на это так, как если бы в предложении было найдено независимое предложение (например, устранение неоднозначности границ предложения), просто разделите его слева от того места, где оно начинается. Нет никакого беспокойства о том, какие части будут после разделения. Если он стал «устранять неоднозначность границ предложения, и он достигает точности 98,5%». (2 внутренних независимых предложения). Я бы разделил его слева от «это» на «это достигается» и слева от «устранить неоднозначность» для «устранения неоднозначности». Но ты прав; «Устранение неоднозначности… точность» в целом не является независимым предложением, и само по себе оно не имеет смысла.   -  person Jeff Kang    schedule 26.05.2014


Ответы (5)


Насколько мне известно, нет готового инструмента для решения этой точной проблемы. Обычно системы НЛП не решают проблему идентификации различных типов предложений и предложений, как это определено грамматикой английского языка. В EMNLP опубликована одна статья, которая предоставляет алгоритм, который использует тег SBAR в деревьях синтаксического анализа для определения независимых и зависимых предложений в предложении.

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

Обратите внимание, что они использовали синтаксический анализатор Berkeley (демо доступно здесь), но очевидно, вы можете использовать любой другой инструмент синтаксического анализа группы клиентов (например, демонстрационную версию, доступную здесь) .

person Chthonic Project    schedule 25.05.2014

Chthonic Project дает здесь полезную информацию:

Извлечение предложения с использованием синтаксического анализатора Стэнфордского университета

Часть ответа:

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

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

Все, что вам нужно сделать, это следующее:

  1. Определите некорневые клаузальные узлы в дереве синтаксического анализа
  2. Удалите (но сохраните отдельно) поддеревья, основанные на этих узлах клауза, из основного дерева.
  3. В главном дереве (после удаления поддеревьев на шаге 2) удалите все висящие предлоги, подчинительные союзы и наречия.

Список всех клаузальных тегов (и, фактически, всех тегов Penn Treebank) см. В следующем списке: http://www.surdeanu.info/mihai/teaching/ista555-fall13/readings/PennTreebankConstituents.html

Для интерактивной визуализации дерева синтаксического анализа вы можете использовать интерактивную демонстрацию синтаксического анализатора Беркли .

Это очень помогает в формировании лучшей интуиции.

Вот изображение, созданное для вашего примера предложения: Berkeley Parser Tree

person Community    schedule 06.10.2015

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

Дополнительную информацию об этой концепции вы можете найти в разделе 2.0 этого руководства:

https://www.isi.edu/~marcu/discourse/tagging-ref-manual.pdf

В Интернете доступно несколько программ, которые могут сегментировать предложения на их элементарные единицы дискурса, например:

http://alt.qcri.org/tools/discourse-parser/

и

https://github.com/jiyfeng/DPLP

person Tamaki Sakura    schedule 26.08.2017

Через пользователя YourWelcomeOrMine из сабреддита / r / LanguageTechnology /:

«Я бы посмотрел на CoreNLP Стэнфорда. Я считаю, что вы можете настроить разбиение предложения ».

person Community    schedule 25.05.2014

Через пользователя Breakthrough от Superuser:

Я обнаружил, что различные классификаторы, использующие обучающий набор NPS Chat Corpus, очень эффективны для аналогичного приложения.

person Community    schedule 28.05.2014