Javascript или Python: новая строка после каждого предложения - PullRequest
1 голос
/ 26 октября 2011

Мне любопытно, есть ли библиотека для python ИЛИ javascript, чтобы токенизировать предложения строки предложений и ставить новую строку в каждом предложении?

IE:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum aliquet leo in urna hendrerit placerat. Donec adipiscing dignissim adipiscing. Duis adipiscing mollis cursus. Etiam fringilla elit nec enim sagittis a auctor nisi gravida. Nunc sollicitudin, leo sit amet consequat pharetra, mi orci vestibulum mi, a suscipit odio tellus tincidunt erat. Suspendisse a consequat turpis. Morbi eget ante leo, a dignissim mi.

до

Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n
Vestibulum aliquet leo in urna hendrerit placerat.\n
Donec adipiscing dignissim adipiscing. \n
Duis adipiscing mollis cursus. Etiam fringilla elit nec enim sagittis a auctor nisi gravida. Nunc sollicitudin, leo sit amet consequat pharetra, mi orci vestibulum mi, a suscipit odio tellus tincidunt erat. \n
Suspendisse a consequat turpis. \n
Morbi eget ante leo, a dignissim mi.

Ответы [ 3 ]

4 голосов
/ 26 октября 2011

Вы ищете библиотеку естественного языка.

Для Python есть Natural Language Toolkit (NLTK). Например, вы можете взглянуть на PunktSentenceTokenizer.

PunktSentenceTokenizer делит текст на список предложений, используя неконтролируемый алгоритм для построения модели слов сокращения, словосочетаний и слов, начинающих предложения. Он должен быть обучен на большой коллекции открытого текста на языке таретов, прежде чем его можно будет использовать. Алгоритм этого токенизатора описан в Kiss & Strunk (2006):

Kiss, Tibor and Strunk, январь (2006 г.): многоязычное предложение без присмотра Обнаружение границ. Компьютерная лингвистика 32: 485-525.

Пакет данных NLTK включает в себя предварительно обученный токенайзер Punkt для английского языка.

0 голосов
/ 26 октября 2011

Если вы просто ищете javascript, который бы это делал, вы могли бы сделать это:

var str = "Lorem ipsum 4.00 dolor sit amet, consectetur adipiscing elit. Vestibulum aliquet leo in urna hendrerit placerat. Donec adipiscing dignissim adipiscing. Duis adipiscing mollis cursus. Etiam fringilla elit nec enim sagittis a auctor nisi gravida. Nunc etc.... sollicitudin, leo sit amet consequat pharetra, mi orci vestibulum mi, a suscipit odio tellus tincidunt erat. Suspendisse a consequat turpis. Morbi eget ante leo, a dignissim mi."

str = str.replace(/(\S\.)\s*([A-Z])/g, "$1\n$2");

Вы можете увидеть, как это работает здесь: http://jsfiddle.net/jfriend00/NR5Nc/.

Этот конкретный алгоритм добавляет новую строку только в том случае, если это непустой пробел, за которым следует точка, за которой следуют пробел и заглавная буква. Таким образом, это безопасно от таких вещей, как $4.00 и etc..., которые на самом деле не заканчивают строки. Он также гибок в отношении количества пробелов между строками.

0 голосов
/ 26 октября 2011

В Python используйте str.replace () :

>>> s = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum aliquet leo in urna hendrerit placerat. Donec adipiscing dignissim adipiscing. Duis adipiscing mollis cursus. Etiam fringilla elit nec enim sagittis a auctor nisi gravida. Nunc sollicitudin, leo sit amet consequat pharetra, mi orci vestibulum mi, a suscipit odio tellus tincidunt erat. Suspendisse a consequat turpis. Morbi eget ante leo, a dignissim mi."
>>> print s.replace('. ', '.\n')
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Vestibulum aliquet leo in urna hendrerit placerat.
Donec adipiscing dignissim adipiscing.
Duis adipiscing mollis cursus.
Etiam fringilla elit nec enim sagittis a auctor nisi gravida.
Nunc sollicitudin, leo sit amet consequat pharetra, mi orci vestibulum mi, a suscipit odio tellus tincidunt erat.
Suspendisse a consequat turpis.
Morbi eget ante leo, a dignissim mi.

Также вас заинтересовал модуль textwrap .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...