import os			#provides a way of using operating system dependent functionality.
import sys 			#provides access to some variables used or maintained by the interpreter .
import io 			#allows to convert unstructured web data into a structured format by extracting, preparing and integrating web data f
import argparse 	# to parse command line arguments	
import glob			# finds all the pathnames matching a specified pattern according to the rules
import pickle 		#dumps an object to a file object or load, which loads an object from a file object.
import random 		#To get access to the random module, we add from random import * 
import math 		
import numpy as np 	#provides fast and efficient operations on arrays of homogeneous data
from collections import defaultdict 		#similar to the usual dictionary (dict) container, 
											#but the only difference is that a defaultdict will have a default value if that key has not been set yet.
import string
import re 			#regex
import nltk 		#(Natural Language Toolkit) is used for such tasks as tokenization, lemmatization, stemming, parsing, POS tagging, etc.
import itertools 	#iterator functions for efficient looping
import tempfile 	# create a temporary file and write some data to it
import pycrfsuite 	#overriding method for  more easily Trainer logging 
					#create a trainer, submit the training data and corresponding labels to the trainer then call train().