Task 2: Working with Basic Data Analysis In this second task, we are going to perform some basic data analysis by using some of the external Python packages (such as NumPy, SciPy, Pandas, and Matplotlib). The main task is to produce a number of statistics for the two groups of children transcripts. The statistics might serve as good indicators for distinguishing between the children with SLI and the typically developed children. Amongst the statistics of each child that we are interested in are the following: Length of the transcript – indicated by the number of statements Size of the vocabulary – indicated by the number of unique words Number of repetition for certain words or phrases – indicated by the CHAT symbol [/]  Number of retracing for certain words or phrases – indicated by the CHAT symbol [//]  Number of grammatical errors made – indicated by the CHAT symbol [*] Number of pauses made – indicated by the CHAT symbols (.)(..)(...) (Note: Given that the length of each child transcript is indicated by the number of statements, the end of each statement can be determined based on the pronunciation marks of either a full stop ‘.’, a question mark ‘?’, or an exclamation mark ‘!’.) To begin with the implementation, you should first read in the cleaned dataset that you have prepared from Task 1. Implement a program that, for each of the cleaned child transcripts from both groups (SLI and TD), extract the count for each of the statistics mentioned above. You should carefully consider a suitable data type or data structure from either Pandas or Numpy for the representation of the statistics extracted for each child group in your program. (Note that the data type/data structure chosen should allow you to represent the statistics as a tabular format, where the columns denote the demonstrate the mean difference for each of the statistics considered. (You may want to consider the functions of Pandas for this part of the implementation.) You should name your program for this second task as task2.py. Also, you should save all the graphs produced in this task for the submission. Task 3: Experimenting with Recursion In this final task, you will be assessed on your understanding of the fundamental concepts of recursion. Recall that, in Assessment 2, you should have implemented two algorithms for searching – Linear Search in the String class (from Task 1 of Assessment 2); and Binary Search in the StringList class (from Task 2 of Assessment 2). You are required to re-implement these two searching algorithms for the two classes by producing a recursive solution. For the search method defined in each of the two classes, you should now turn it into a recursive method. You should test your methods (as well the classes) again to ensure that the overall functionality is maintained. Define and run a ‘unit test’ in Python for each of the recursive search methods.