Во-первых, вам, вероятно, нужно прийти к собственному определению того, что такое «предложение», а затем реализовать это определение. Например, как насчет:
He said: "It's OK!"
Это одно предложение или два? Общий ответ не имеет значения. Решите, вы хотите, чтобы он интерпретировал его как одно или два предложения, и действуйте соответствующим образом.
Во-вторых, я не думаю, что буду использовать для этого регулярные выражения. Вместо этого я просматривал каждый символ и пытался обнаружить последовательности. Точки самой по себе может быть недостаточно для разграничения предложения, но точки, за которой следует пробел или возврат каретки (или конец строки), вероятно, достаточно. Это сразу позволяет вам отсеять США (точки, за которыми не следуют пробелы).
Для общеупотребительных сокращений, таких как профессор и доктор, может быть хорошей идеей создать словарь — возможно, редактируемый вашими пользователями, поскольку каждый язык будет иметь свой собственный набор общих сокращений.
Каждый язык также будет иметь свой собственный набор правил пунктуации, которые могут повлиять на то, как вы интерпретируете знаки препинания. Например, в английском языке точка ставится внутри скобок (вот так), а в польском наоборот (вот так). Та же разница будет применяться к двойным кавычкам, одинарным кавычкам (в некоторых языках они вообще не используются, иногда они неотличимы от апострофов и т. д.). Ваши правила вполне могут быть специфичными для языка, по крайней мере, частично.
В конце концов, вы можете приблизиться к человеческому способу разграничения предложений, но всегда будут случаи, которые могут сбить анализ. Например, предположим, что у вас есть словарь, который распознает «проф.» как аббревиатура, что вы собираетесь делать с
Most people called him Professor Jones, but to me he was simply The Prof.
Даже если у вас есть еще одно предложение, которое следует за ним и начинается с заглавной буквы, это все равно не поможет вам узнать, где заканчивается предложение, потому что это может быть
Most people called him Professor Jones, but to me he was simply Prof. Bill.
person
Marek Jedliński
schedule
20.04.2011