Regex, чтобы различать предложения и текст главы - PullRequest
0 голосов
/ 07 ноября 2011

У меня есть (бегущий) текст со многими предложениями. У меня есть регулярное выражение, которое может извлечь предложения, оканчивающиеся точкой, вопросом или восклицательным знаком. За концом предложения должно следовать начало следующего предложения (пробелы / табуляции / новые строки и заглавная буква или цифра). Я читаю строку, хранящуюся в данных, и вызываю регулярное выражение.

basic_pat = re.compile(r"[(']?\w.+[)']?[?.!](?=\s+[A-Z\d])")
result = basic_pat.findall(data)

Это регулярное выражение работает, если мы не принимаем во внимание случаи аббревиатур. В тексте у меня также могут быть некоторые тексты глав, которые не заканчиваются точкой. Например:

Это первая глава
Вот первое предложение. Вот второе предложение. Вот третье посланное. Вот четвертый послал ...

У меня вопрос: возможно ли иметь одно регулярное выражение, которое читает только тексты глав, а также регулярное выражение, которое читает предложения? Главы представляют собой свободный текст в строке без точки. Обычные предложения могут занимать несколько строк. То есть предложения также могут иметь текст в строке без точки. Можно ли отличить две ситуации (глава от предложений) с помощью регулярного выражения?

1 Ответ

3 голосов
/ 07 ноября 2011

Некоторые люди, сталкиваясь с проблемой, думают: «Я знаю, я буду использовать регулярные выражения. «Теперь у них есть две проблемы. - Джейми Завински

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

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

Как бы вы разбили следующее:

Посещение Лейпцига, глава первая: Thomaskirchhof St.

Музей Баха находится в Томаскирххоф напротив церкви Святого Томаса. ван Бетховен не имеет Музей где-нибудь в Лейпциге.

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

...