Javascript或Python:每个句子后的换行符

时间:2011-10-25 20:15:52

标签: javascript python lexical sentence

我很好奇是否有用于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 个答案:

答案 0 :(得分:4)

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

对于Python,有Natural Language Toolkit(NLTK)。例如,您可以查看PunktSentenceTokenizer

  

PunktSentenceTokenizer通过使用无监督算法为缩写词,搭配和开始句子的单词构建模型,将文本划分为句子列表。必须先使用taret语言中的大量明文进行训练才能使用它。这种标记化器的算法在Kiss& Sons中描述。 Strunk(2006):

     

Kiss,Tibor和Strunk,Jan(2006):无监督的多语种句    边界检测。计算语言学32:485-525。

     

NLTK数据包包括一个预先训练的英语Punkt标记器。

答案 1 :(得分: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 module感兴趣。

答案 2 :(得分: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...之类的内容实际上不会结束,这是安全的。它对行之间的空白量也很灵活。