No, Word has no built-in function for this. It would be feasible to write a
macro to track it, but the result would surely be very skewed on any one
computer? Claude Shannon did work on this, in relation to writers' styles
and word pair frequency.
Try:
http://www.comp.lancs.ac.uk/ucrel/bncfreq/ -- this is a website devoted
to English language word frequencies.
"Anthea" wrote in message
...
Thanks guys, you've both taught me something I didn't know
However, I'm trying to find the word frequency for the English language,
not
just my document...you know, how often we use it in conversation/written
word
etc. It's just so much more difficult than I initially thought! I was
informed that Word had a function to help with this and that's what I'm
trying to clarify.
Thanks again!
"Jezebel" wrote:
If you'd rather not use a macro, copy your word list to Excel (simple
copy
and paste will do) then use Excel's statistics functions or create a
pivot
table.
"Anthea" wrote in message
...
Thanks for the quick reply, Greg, but I'm not sure how to use what
you've
posted!? Is it within Word, or is it a separate program?
Sorry, I'm a little slow when it comes to some of the more technical
stuff...
Anthea
"Greg Maxey" wrote:
The following macro does a decent job.
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 IngWordCount As Long 'Total non-excluded words in
document
Dim NonWordObjects As Long
Dim AllWordOjects As Long
Dim TotalWords As Long
Dim tword As String '
'Set up excluded words
'Excludes = "[pickleloaf][gruntbutter]"
'Excludes = Excludes & InputBox$("The following words are excluded
by
default: " & Excludes & ". Enter additional words that you wish to
exclude,
surrounding each word with [ ].", "Excluded Words", "")
Excludes = InputBox$("Enter words that you wish to exclude. Place
each
word
within square brackets [ ]. Example: [is][a].", "Excluded Words",
"")
'Find out how to sort
ByFreq = True
Ans = InputBox$("Default sort order is word freqeuncy. To sort
alphabetically by word, type Word in the field below.", "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
'AllWordObjects = ActiveDocument.Words.Count
'TotalWords = NonWordObjects
'Control the repeat
For Each aword In ActiveDocument.Words
SingleWord = Trim(LCase(aword))
If SingleWord "a" Or SingleWord "z" Then SingleWord = "" 'Out of
range?
If SingleWord "a" Or SingleWord "z" Then NonWordObjects =
NonWordObjects
+ 1
'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
IngWordCount = IngWordCount + 1
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
AllWordObjects = ActiveDocument.Words.Count
NonWordObjects = NonWordObjects
TotalWords = AllWordObjects - NonWordObjects
'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 "Unique
Words"
ActiveDocument.Tables(1).Cell(1, 2).Range.InsertBefore "Number of
Occurrences"
ActiveDocument.Tables(1).Columns(2).Select
Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
Selection.Collapse wdCollapseStart
ActiveDocument.Tables(1).Rows(1).Shading.Backgroun dPatternColor =
wdColorGray20
ActiveDocument.Tables(1).Columns(1).PreferredWidth =
InchesToPoints(4.75)
ActiveDocument.Tables(1).Columns(2).PreferredWidth =
InchesToPoints(1.9)
ActiveDocument.Tables(1).Rows.Add
ActiveDocument.Tables(1).Cell(ActiveDocument.Table s(1).Rows.Count,
1).Range.InsertBefore "Summary"
ActiveDocument.Tables(1).Cell(ActiveDocument.Table s(1).Rows.Count,
2).Range.InsertBefore "Total"
ActiveDocument.Tables(1).Rows(ActiveDocument.Table s(1).Rows.Count).Shading.B
ackgroundPatternColor
= wdColorGray20
ActiveDocument.Tables(1).Rows.Add
ActiveDocument.Tables(1).Cell(ActiveDocument.Table s(1).Rows.Count,
1).Range.InsertBefore "Number of Unique Words in Document"
ActiveDocument.Tables(1).Cell(ActiveDocument.Table s(1).Rows.Count,
2).Range.InsertBefore Trim(Str(WordNum))
ActiveDocument.Tables(1).Rows(ActiveDocument.Table s(1).Rows.Count).Shading.B
ackgroundPatternColor
= wdColorAutomatic
ActiveDocument.Tables(1).Rows.Add
ActiveDocument.Tables(1).Cell(ActiveDocument.Table s(1).Rows.Count,
1).Range.InsertBefore "Number of Non-Excluded Words in Document"
ActiveDocument.Tables(1).Cell(ActiveDocument.Table s(1).Rows.Count,
2).Range.InsertBefore (IngWordCount)
ActiveDocument.Tables(1).Rows.Add
ActiveDocument.Tables(1).Cell(ActiveDocument.Table s(1).Rows.Count,
1).Range.InsertBefore "Number of Words (Excluded and Non-Excluded)
in
Document"
ActiveDocument.Tables(1).Cell(ActiveDocument.Table s(1).Rows.Count,
2).Range.InsertBefore (TotalWords)
System.Cursor = wdCursorNormal
MsgBox "This document contains " & Trim(Str(WordNum)) & " unique
words.
"
MsgBox "This document contains " & IngWordCount & " non-excluded
words.
"
MsgBox "This document contains a total of " & TotalWords & "
(excluded
and
non-excluded) words. "
MsgBox "For more statistics on this document, use ToolsWord Count
in
the
original document. "
Selection.HomeKey wdStory
End Sub
--
Greg Maxey/Word MVP
A Peer in Peer to Peer Support
Anthea wrote:
Hello,
I have been told that somewhere in Word there is a way to check
how
frequently a word occurs in the English language. I'm trying to
determine word frequencies for a large list of words and if I have
the option of doing it within the Word program, that would be
heaps
quicker.
Hope someone can help me....Thanks!