Write a program that shall show the most frequently used words in a text file.
The program must have the comment at the top of the program file: "I certify this submission as my own original work completed in accordance with the Suffolk University Academic Integrity Policy. ZZZ", where ZZZ is the full name of the student.
The program shall have a GUI consisting of a menu bar with a single menu button "File," opening a pull-down menu with two items, "Open" and "Exit"; a Text box widget in the "readonly" state; and a Spinbox with the integer values of 1, 10, 50, and 100. The initial value of the Spinbox shall be 1. The current value of the Spinbox is referred to in this document as N. The main window of the program and the Textbox shall be resizeable.
The "Open" item shall display an appropriate file selection dialog. If the user selects a file that does not exist or is not readable, the program shall display a warning dialog and ignore the operation, but shall not terminate.
If the selected file is readable, the program shall read and process its content one line at a time. For each line, the program shall split it into words using split(). The program shall normalize each word, that is, convert it to the upper case and strip() all of the following characters: !@#$%^&*()_+~`-="';:<>,.?/\|[]{}
The program shall count each normalized word using a Python dictionary. The words shall be the dictionary keys, and their respective counts shall be the values. Thus, if a word is not in the dictionary, it shall be inserted with the value of 0; otherwise, its count shall be incremented. The program shall not use a Counter object.
The dictionary shall be converted into a list of two-element tuples. The second value of each tuple is a word, and the first value is its count. The list shall be sorted in situ in the decreasing order. The words from the first N tuples shall be displayed in the Text box, separated by commas.ÂÂ
If the user changes the value of the Springbox, the content of the Text box shall be updated accordingly.
If the user successfully opens another file, the content of the Text box shall be overwritten.
The "Exit" item shall quit() the program. Remember that calling quit() in Spyder terminates the Python kernel!
Suggested Implementation Sequence
Implement the GUI without functionality (the "wireframe").
Implement "Exit".
Implement "Open", including the warning diaplog (test for non-existent files!)
Read the file and print the normalized words using print(). Do not forget to remove the print() from the final version.
Count the normalized words using a dictionary.
Convert the dictionary into a sorted list of tuples and print() the first ten tuples.
Insert the comma-separated words into the Text box.
Activate the Springbox.
Implement the Text box overwriting.
Hello Sir,
First of all kudos for such a detailed job description. This helps in better estimation of the work required.
After carefully reviewing the description I believe I am apt for this job. With under 4+ years of experience in working in Python primarily textual predictive analysis (for AI and Machine Learning) I will be able to deliver the best possible quality in a timely manner.
My Pro's : With expertise of 4 years under the field of textual predictive analysis in python specifically this will a simple and deliverable for me.
Challenges: As I have worked primarily In web based or completely backend (No GUI, Only Terminal Based) jobs the GUI part may entail a few hiccups. However being a quick learner and attention to detail I will be able to deliver In a timely and efficient manner.
Suggestion: Regex for normalizing words is not recommended when dealing with real words("English words" that have a meaning in dictionary) . A better solution is NLP to achieve end results which otherwise wasn't possible by using simple regex.
For example: movement and motion mean the same but using regex only inferring that is difficult. If tried "movie", "movement" and "motion" would mean same. NLP makes it possible.
My Estimate: 40-45 Hrs(38 Hrs for Dev, 5-7 Hrs for testing )
**As I am new to freelancing I am keeping a hourly rate that is competitive however on working with me I promise you the deliverable will speak for itself about the top notch quality I am capable of **
I have experience in GUI framework such as tkinter, simplegui.
Very good experince in file and text processing familiar with xml ,excel and docx file parsing.
Created a simple text editor using Tkinter module.
Hi, I can deploy this program in 2 days. Have an experience in developing on Python with Qt . Interface of an application will written using PyQt or PySide, and main logic will use Python for get data you want. Think need less than 7-8 hours to finish. It is possible to checkout milestones such as "ready interface", "ready data handlers", "test" etc.
The project is pretty simple, are there any other constraints such as using a specific GUI took kit such as Qt, Wx, Tkinter etc? Do you require styling of the gui elements or only functionality? I think you should be able to get an A if you allot the project to me. Kindly talk to me further for any clarifications you require I would be more than happy to help you.