regextext-normalization

Expanding abbreviations using regex


I have a dictionary of abbreviations, I would like to expand. I would like to use these to go through a text and expand all abbreviations.

The defined dictionary is as follows:

contractions_dict = {
        "kl\.": "klokken",
        }

The text I which to expand is as follows:

text = 'Gl. Syd- og Sønderjyllands Politi er måske kl. 18 kløjes landets mest aktive politikreds på Twitter med over 27.000, som følger med.'

I use the following function:

def expand_contractions(s, contractions_dict, contractions_re):
  def replace(match):
    return contractions_dict[match.group(0)]
  return contractions_re.sub(replace, s)
    
contractions_re = re.compile("(%s)"%"|".join(contractions_dict.keys()))
text = expand_contractions(text, contractions_dict, contractions_re)
print(text)

I have tried a range of different keys in the dictionary to capture the abbreviations, but nothing have worked. Any suggestions?


Solution

  • Try:

    import re
    
    contractions_dict = {
        "kl.": "klokken",
    }
    
    pat = re.compile(r'\b' + r'|'.join(re.escape(k) for k in contractions_dict))
    
    text = "Gl. Syd- og Sønderjyllands Politi er måske kl. 18 kløjes landets mest aktive politikreds på Twitter med over 27.000, som følger med."
    
    text = pat.sub(lambda g: contractions_dict[g.group(0)], text)
    print(text)
    

    Prints:

    Gl. Syd- og Sønderjyllands Politi er måske klokken 18 kløjes landets mest aktive politikreds på Twitter med over 27.000, som følger med.