NLP - Expand contractions in Text Processing - GeeksforGeeks

21 Feb, 2022
Text preprocessing is a crucial step in NLP. Cleaning our text data in order to convert it into a presentable form that is analyzable and predictable for our task is known as text preprocessing. In this article, we are going to discuss contractions and how to handle contractions in text.
What are contractions?
Contractions are words or combinations of words that are shortened by dropping letters and replacing them by an apostrophe.
Nowadays, where everything is shifting online, we communicate with others more through text messages or posts on different social media like Facebook, Instagram, Whatsapp, Twitter, LinkedIn, etc. in the form of texts. With so many people to talk, we rely on abbreviations and shortened form of words for texting people.
For example I’ll be there within 5 min. Are u not gng there? Am I mssng out on smthng? I’d like to see u near d park.
In English contractions, we often drop the vowels from a word to form the contractions. Removing contractions contributes to text standardization and is useful when we are working on Twitter data, on reviews of a product as the words play an important role in sentiment analysis.
How to expand contractions?
1. Using contractions library
First, install the library. You can try this library on Google colab as installing the library becomes super smooth.
Using pip:
!pip install contractions
In Jupyter notebook:
import sys  
!{sys.executable} -m pip install contractions
Python3
# import libraryimport contractions# contracted texttext = '''I'll be there within 5 min. Shouldn't you be there too?          I'd love to see u there my dear. It's awesome to meet new friends.          We've been waiting for this day for so long.''' # creating an empty listexpanded_words = []   for word in text.split():  # using contractions.fix to expand the shortened words  expanded_words.append(contractions.fix(word))     expanded_text = ' '.join(expanded_words)print('Original text: ' + text)print('Expanded_text: ' + expanded_text)
Output:
Original text: I'll be there within 5 min. Shouldn't you be there too? 
          I'd love to see u there my dear. It's awesome to meet new friends.
          We've been waiting for this day for so long.
Expanded_text: I will be there within 5 min. should not you be there too? 
          I would love to see you there my dear. it is awesome to meet new friends. 
          we have been waiting for this day for so long.
Removing contractions before forming word vectors helps in dimensionality reduction.
Code 2: Simply using contractions.fix to expand the text.
Python3
text = '''She'd like to know how I'd done that!          She's going to the park and I don't think I'll be home for dinner.          Theyre going to the zoo and she'll be home for dinner.''' contractions.fix(text)
Output:
'she would like to know how I would done that! 
 she is going to the park and I do not think I will be home for dinner.
 they are going to the zoo and she will be home for dinner.'
Contractions can also be handled using other techniques like dictionary mapping, and also using pycontractions library. You can refer to the documentation of pycontractions library for learning more about this: https://pypi.org/project/pycontractions/
rkbhola5
Natural-language-processing
Machine Learning
Python
Machine Learning
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
ML | Linear Regression
Python | Decision tree implementation
Difference between Informed and Uninformed Search in AI
Elbow Method for optimal value of k in KMeans
Deploy Machine Learning Model using Flask
Read JSON file using Python
Adding new column to existing DataFrame in Pandas
Python map() function
How to get column names in Pandas dataframe