Need help? We are here


Write an Erlang program that counts the word frequencies in the file assign3-part2.txt. Erlang uses a list of tuples as a hash table. Write four Erlang functions.

  1. This function has a string file name parameter and returns a list of words in the file. Open the file with file:open. The file lab3-part2.txt was written in a text editor as one line, so io:get_line will read the whole file. string:tokens will separate it into words. Its second argument specifies all the delimiters.
    • file:open(lab3-part2.txt”,read).
    • L1= io:get_line(S, '').
  2. This function has two parameters, a string word and a list of tuples, and returns a list of tuples with the word added appropriately. Each tuple is a word key and a frequency value. The lists:keyfind method will find a tuple if it exists and return false if it does not. If the word is not found use lists:append to add a tuple with the word as key and 1 as the frequency. If the word is found use lists:replace to replace the tuple with a new tuple with frequency increased by one.
  3. This function has a list of words as parameter and returns a hash table of tuples of words and their frequencies. The string:to_lower method will make a word lower case to provided the desired case insensitivity. Use the lists:foldl method to build the answer using the function 2.
  4. This function outputs the final hash table sorted by frequency from high to low using the lists:sort function. Its one parameter is the file name. It uses functions 3 and 1.