Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Determine how many times all words are used in a doc

605 views
Skip to first unread message

sp...@mockfrog.com.au

unread,
Dec 16, 2005, 10:33:48 PM12/16/05
to
As a writer, I want to see how many times all words are used in a doc,
so I can see if I am overusing some words (and thus phrases as well)

I know how to create a long list of all words, sorted alphabetically,
and I can manually count these, but I want a much quicker way, so I get
a report with, say:

beach = 4 times
bridge = 2 times
broken = 6 times

etc...

Thanks

Matt

JoAnn Paules [MVP]

unread,
Dec 16, 2005, 10:45:20 PM12/16/05
to
Are you talking about all words or just select words?

--

JoAnn Paules
MVP Microsoft [Publisher]

<sp...@mockfrog.com.au> wrote in message
news:1134790428.5...@o13g2000cwo.googlegroups.com...

sp...@mockfrog.com.au

unread,
Dec 16, 2005, 10:54:52 PM12/16/05
to
All words in the document, listed alphabetically. Some very common
words I am not concerned with, just some less used that I only want to
use once, maybe twice

JoAnn Paules [MVP]

unread,
Dec 16, 2005, 11:05:23 PM12/16/05
to
I didn't ask that last question quite right. Let me try it again.

Do you need to be able to create a list that will tell how many times each
word is being used or will you only list the ones that you may have overused
(I can't think of another word that fits here, sorry).

--

JoAnn Paules
MVP Microsoft [Publisher]

<sp...@mockfrog.com.au> wrote in message
news:1134791692.4...@g43g2000cwa.googlegroups.com...

sp...@mockfrog.com.au

unread,
Dec 16, 2005, 11:10:55 PM12/16/05
to
I didn't ask that last question quite right. Let me try it again.

Do you need to be able to create a list that will tell how many times
each
word is being used or will you only list the ones that you may have
overused
(I can't think of another word that fits here, sorry).

>>>All the words, I guess, whichever is easier to do. I know there is a Summary feature in Word that I recall fiddling with but I don't know if that can be used for this task.
So, yes, I need to be able to create a list that will tell how many
times *each* word is being used

Thanks, Matt

Graham Mayor

unread,
Dec 17, 2005, 1:35:59 AM12/17/05
to
If you save a copy of the document as plain text, the Simple Concordance
utility will instantly list all the words in that document with their
frequency. This tool is linked from the downloads page of my web site.

--
<>>< ><<> ><<> <>>< ><<> <>>< <>><<>
Graham Mayor - Word MVP

My web site www.gmayor.com
Word MVP web site http://word.mvps.org

sp...@mockfrog.com.au

unread,
Dec 17, 2005, 2:57:43 AM12/17/05
to
Thanks Graham, probably works a treat -- unfort I am using Mac G4
running OSX. Is there a Unix version? (Know I am asking a lot here)

Thanks

Matt

Doug Robbins - Word MVP

unread,
Dec 17, 2005, 5:07:07 AM12/17/05
to
Use the following macro (though I am not sure whether it will work on the
Mac)

Sub WordFrequency()

Dim SingleWord As String 'Raw word pulled from doc
Const maxwords = 9000 'Maximum unique words allowed
Dim Words(maxwords) As String 'Array to hold unique words
Dim Freq(maxwords) As Integer 'Frequency counter for Unique
Words
Dim WordNum As Integer 'Number of unique words
Dim ByFreq As Boolean 'Flag for sorting order
Dim ttlwds As Long 'Total words in the document
Dim Excludes As String 'Words to be excluded
Dim Found As Boolean 'Temporary flag
Dim j, k, l, Temp As Integer 'Temporary variables
Dim tword As String '

' Set up excluded words
' Excludes =
"[the][a][of][is][to][for][this][that][by][be][and][are]"
Excludes = ""
Excludes = InputBox$("Enter words that you wish to exclude,
surrounding each word with [ ].", "Excluded Words", "")
' Excludes = Excludes & InputBox$("The following words are excluded:
" & Excludes & ". Enter words that you wish to exclude, surrounding each
word with [ ].", "Excluded Words", "")
' Find out how to sort
ByFreq = True
Ans = InputBox$("Sort by WORD or by FREQ?", "Sort order", "FREQ")
If Ans = "" Then End
If UCase(Ans) = "WORD" Then
ByFreq = False
End If

Selection.HomeKey Unit:=wdStory
System.Cursor = wdCursorWait
WordNum = 0
ttlwds = ActiveDocument.Words.Count
Totalwords = ActiveDocument.Words.Count

' Control the repeat
For Each aword In ActiveDocument.Words
SingleWord = Trim(aword)
If SingleWord < "A" Or SingleWord > "z" Then SingleWord = ""
'Out of range?
If InStr(Excludes, "[" & SingleWord & "]") Then SingleWord = ""
'On exclude list?
If Len(SingleWord) > 0 Then
Found = False
For j = 1 To WordNum
If Words(j) = SingleWord Then
Freq(j) = Freq(j) + 1
Found = True
Exit For
End If
Next j
If Not Found Then
WordNum = WordNum + 1
Words(WordNum) = SingleWord
Freq(WordNum) = 1
End If
If WordNum > maxwords - 1 Then
j = MsgBox("The maximum array size has been exceeded.
Increase maxwords.", vbOKOnly)
Exit For
End If
End If
ttlwds = ttlwds - 1
StatusBar = "Remaining: " & ttlwds & " Unique: " & WordNum
Next aword

' Now sort it into word order
For j = 1 To WordNum - 1
k = j
For l = j + 1 To WordNum
If (Not ByFreq And Words(l) < Words(k)) Or (ByFreq And
Freq(l) > Freq(k)) Then k = l
Next l
If k <> j Then
tword = Words(j)
Words(j) = Words(k)
Words(k) = tword
Temp = Freq(j)
Freq(j) = Freq(k)
Freq(k) = Temp
End If
StatusBar = "Sorting: " & WordNum - j
Next j

' Now write out the results
tmpName = ActiveDocument.AttachedTemplate.FullName
Documents.Add Template:=tmpName, NewTemplate:=False
Selection.ParagraphFormat.TabStops.ClearAll
With Selection
For j = 1 To WordNum
.TypeText Text:=Words(j) & vbTab & Trim(Str(Freq(j))) &
vbCrLf
Next j
End With
ActiveDocument.Range.Select
Selection.ConvertToTable
Selection.Collapse wdCollapseStart
ActiveDocument.Tables(1).Rows.Add BeforeRow:=Selection.Rows(1)
ActiveDocument.Tables(1).Cell(1, 1).Range.InsertBefore "Word"
ActiveDocument.Tables(1).Cell(1, 2).Range.InsertBefore
"Occurrences"
ActiveDocument.Tables(1).Range.ParagraphFormat.Alignment =
wdAlignParagraphCenter
ActiveDocument.Tables(1).Rows.Add
ActiveDocument.Tables(1).Cell(ActiveDocument.Tables(1).Rows.Count,
1).Range.InsertBefore "Total words in Document"
ActiveDocument.Tables(1).Cell(ActiveDocument.Tables(1).Rows.Count,
2).Range.InsertBefore Totalwords
ActiveDocument.Tables(1).Rows.Add
ActiveDocument.Tables(1).Cell(ActiveDocument.Tables(1).Rows.Count,
1).Range.InsertBefore "Number of different words in Document"
ActiveDocument.Tables(1).Cell(ActiveDocument.Tables(1).Rows.Count,
2).Range.InsertBefore Trim(Str(WordNum))
System.Cursor = wdCursorNormal
' j = MsgBox("There were " & Trim(Str(WordNum)) & " different words
", vbOKOnly, "Finished")
Selection.HomeKey wdStory

End Sub


--
Hope this helps.

Please reply to the newsgroup unless you wish to avail yourself of my
services on a paid consulting basis.

Doug Robbins - Word MVP

<sp...@mockfrog.com.au> wrote in message
news:1134806263.4...@o13g2000cwo.googlegroups.com...

sp...@mockfrog.com.au

unread,
Dec 17, 2005, 8:04:09 AM12/17/05
to
Thanks -- I will check it out

--Matt

0 new messages