На самом деле задача не такая уж и простая. Не так давно тоже пытался решить ее. Копался в интернете. Есть даже специальный проект на Python, посвященный этому - NLTK (Natural Language Tool Kit). Там делают токенайзеры, чтобы на любом естественном языке можно было парсить предложения. Правда, я не совсем разобрался с этим.
Но можно и чуть проще сделать - при помощи регулярных выражений. Например, так:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
# Входной текстовый файл
filename = "sentences.txt"
# Получение текста
fin = open(filename)
text = fin.read()
fin.close()
text = text.replace('\n', ' ')
# Составляем регулярное выражение
pattern = re.compile(r"""
['"(]* # начало предложения - открывающие кавычки (скобки и т.д.)
[\S*] # или любой символ, кроме непечатного.
.*? # основное предложение
[.!?]+ # предложение должно обязательно заканчиваться на любой из этих знаков.
['")]* # затем могут идти необязательные знаки пунктуации.
""", re.VERBOSE)
res = pattern.findall(text) # разбиваем текст на список предложений
# Вывод результата
for sent in res:
print(sent)
Во вложении - файл с тестовым предложением. Там пока проблемы, если есть одинаковые знаки препинания на несколько предложений, например таких:
(Это одно предложение. А это другое.)
А также проблема с многоточием...
Но, думаю, можно подправить выражение где-то в районе # основное предложение (до или после него)