from string import punctuation def process_text_pipeline(text): full_text_processed = replace_all(text.strip()) while '\n\n' in full_text_processed: full_text_processed = full_text_processed.replace('\n\n', '\n') full_text_processed = process_sticking_sentences(full_text_processed) while ' ' in full_text_processed: full_text_processed = full_text_processed.replace(' ', ' ') return full_text_processed def replace_all(text): dict_map = { "òa": "oà", "Òa": "Oà", "ÒA": "OÀ", "óa": "oá", "Óa": "Oá", "ÓA": "OÁ", "ỏa": "oả", "Ỏa": "Oả", "ỎA": "OẢ", "õa": "oã", "Õa": "Oã", "ÕA": "OÃ", "ọa": "oạ", "Ọa": "Oạ", "ỌA": "OẠ", "òe": "oè", "Òe": "Oè", "ÒE": "OÈ", "óe": "oé", "Óe": "Oé", "ÓE": "OÉ", "ỏe": "oẻ", "Ỏe": "Oẻ", "ỎE": "OẺ", "õe": "oẽ", "Õe": "Oẽ", "ÕE": "OẼ", "ọe": "oẹ", "Ọe": "Oẹ", "ỌE": "OẸ", "ùy": "uỳ", "Ùy": "Uỳ", "ÙY": "UỲ", "úy": "uý", "Úy": "Uý", "ÚY": "UÝ", "ủy": "uỷ", "Ủy": "Uỷ", "ỦY": "UỶ", "ũy": "uỹ", "Ũy": "Uỹ", "ŨY": "UỸ", "ụy": "uỵ", "Ụy": "Uỵ", "ỤY": "UỴ", "\xa0": " ", "…": "...", "''": '"', """: '"', "'": "'", "H'Mông": "Hmông", "H'mông": "Hmông", "H’mông": "Hmông", "H’Mông": "Hmông", "H’MÔNG": "Hmông", "M'Nông": "Mnông", "M'nông": "Mnông", "M'NÔNG": "Mnông", "M’Nông": "Mnông", "M’NÔNG": "Mnông", '\u200b\u200b': "" } for i, j in dict_map.items(): text = text.replace(i, j) return text def process_sticking_sentences(full_text): for i in range(len(full_text) - 1): c1 = full_text[i] c2 = full_text[i + 1] # 'end of sentence.Start' if c1 in punctuation and c2.isalpha() and c2.isupper(): before = full_text[:i + 1] after = full_text[i + 1:] full_text = before + " " + after # 'end of sentenceStart' if c1.isalpha() and c1.islower() and c2.isalpha() and c2.isupper(): before = full_text[:i + 1] after = full_text[i + 1:] full_text = before + ". " + after return full_text