954,525 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?

Word Frequency in a Text String (Python)

0
By vegaseat on Aug 26th, 2005 1:13 am

This program takes a text string and creates a list of words. Any attached punctuation marks are removed and the words are converted to lower case for sorting. Now you can generate a dictionary of the words and their frequencies. The result is displayed using a sorted list of dictionary keys. A fair amount of comments have been added to aid in the understanding of the program code.

# word frequency in a text
# tested with Python24    vegaseat    25aug2005

# Chinese wisdom ...
str1 = """Man who run in front of car, get tired.
Man who run behind car, get exhausted."""
print "Original string:"
print str1

print

# create a list of words separated at whitespaces
wordList1 = str1.split(None)

# strip any punctuation marks and build modified word list
# start with an empty list
wordList2 = []
for word1 in wordList1:
    # last character of each word
    lastchar = word1[-1:]
    # use a list of punctuation marks
    if lastchar in [",", ".", "!", "?", ";"]:
        word2 = word1.rstrip(lastchar)
    else:
        word2 = word1
    # build a wordList of lower case modified words
    wordList2.append(word2.lower())

print "Word list created from modified string:"
print wordList2

print

# create a wordfrequency dictionary
# start with an empty dictionary
freqD2 = {}
for word2 in wordList2:
    freqD2[word2] = freqD2.get(word2, 0) + 1
    
# create a list of keys and sort the list
# all words are lower case already
keyList = freqD2.keys()
keyList.sort()

print "Frequency of each word in the word list (sorted):"
for key2 in keyList:
  print "%-10s %d" % (key2, freqD2[key2])

The stripping of characters can be better handled this way:


chars = ",.!?;"
word2 = word.rstrip(chars);

This will strip more than one characters in the end if needed.

manpreets7
Newbie Poster
1 post since Jun 2009
Reputation Points: 10
Solved Threads: 0
 

For building the wordlist, you could just use this:

wordlist = str.split(None)
wordlist2 = []
for word in wordlist:
    wordlist2.append((word.strip(string.punctuation)).lower())
shiftlock
Newbie Poster
2 posts since Dec 2009
Reputation Points: 10
Solved Threads: 0
 

can u give the code script of unix for this program...??

ancs
Newbie Poster
1 post since Jan 2010
Reputation Points: 10
Solved Threads: 0
 

Do you mean a shell script?

shiftlock
Newbie Poster
2 posts since Dec 2009
Reputation Points: 10
Solved Threads: 0
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You