Перевод текста на Python в предложения при появлении прописных слов

#python #split

Вопрос:

Я использую API преобразования речи в текст Google, и после того, как я расшифрую аудиофайл, я получаю текст, представляющий собой разговор между двумя людьми, и он не содержит знаков препинания (функции автоматической пунктуации Google или набора номера говорящего не поддерживаются для этого неанглоязычного языка). Например:

 Hi you are speaking with customer support how can i help you Hi my name is whatever and this is my problem Can you give me your address please Yes of course
 

Это выглядит как одно большое предложение, но я хочу разбивать разные предложения всякий раз, когда появляется слово в верхнем регистре, и, таким образом, иметь:

 Hi you are speaking with customer support how can i help you

Hi my name is whatever and this is my problem

Can you give me your address please

Yes of course
 

Я использую Python и не хочу использовать регулярные выражения, вместо этого я хочу использовать более простой метод. Что я должен добавить в этот код, чтобы разделить каждый результат на несколько предложений, как только я увижу заглавную букву?

 # Each result is for a consecutive portion of the audio. Iterate through
# them to get the transcripts for the entire audio file.
for i, result in enumerate(response.results):
    transcribed_text = []
    # The first alternative is the most likely one for this portion.
    alternative = result.alternatives[0]
    print("-" * 20)
    print("First alternative of result {}".format(i))
    print("Transcript: {}".format(alternative.transcript))
 

Ответ №1:

Простым решением было бы разделение регулярных выражений:

 inp = "Hi you are speaking with customer support how can i help you Hi my name is whatever and this is my problem Can you give me your address please Yes of course"
sentences = re.split(r's (?=[A-Z])', inp)
print(sentences)
 

Это печатает:

 ['Hi you are speaking with customer support how can i help you',
 'Hi my name is whatever and this is my problem',
 'Can you give me your address please',
 'Yes of course']
 

Обратите внимание, что этот простой подход может легко потерпеть неудачу, если в середине предложений будут такие вещи, как имена собственные, или, возможно, аббревиатуры, оба из которых также имеют заглавные буквы, но не являются маркерами для фактического конца предложения. Лучшим долгосрочным подходом было бы использовать подобную библиотеку nltk , которая способна находить предложения с гораздо большей точностью.