1

我很好奇是否有一个用于 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.
4

3 回答 3

4

您正在寻找一个自然语言库。

对于 Python,有自然语言工具包(NLTK)。例如,您可以查看PunktSentenceTokenizer.

PunktSentenceTokenizer 通过使用无监督算法为缩写词、搭配和开始句子的词建立模型,将文本划分为句子列表。在使用之前,它必须在大量 taret 语言的明文集合上进行训练。Kiss & Strunk (2006) 中描述了这个标记器的算法:

Kiss、Tibor 和 Strunk,1 月(2006 年):无监督多语言句子边界检测。计算语言学 32:485-525。

NLTK 数据包包括一个预训练的英语 Punkt 分词器。

于 2011-10-25T20:18:02.643 回答
0

在 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 模块感兴趣。

于 2011-10-25T20:24:59.577 回答
0

如果您只是在寻找可以做到这一点的 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.00etc...没有结束行。它在行之间的空白数量上也很灵活。

于 2011-10-25T20:30:54.333 回答