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.
- 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 was written in a text editor as one line, soio: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, '').
- 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 uselists:append
to add a tuple with the word as key and1
as the frequency. If the word is found uselists:replace
to replace the tuple with a new tuple with frequency increased by one. - 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 thelists:foldl
method to build the answer using the function2
. - 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 functions3
and1
.