Déterminer la fréquence des mots (Microsoft Word)
Pendant que vous analysez vos documents, vous vous demandez peut-être s’il existe un moyen de créer une liste de fréquences de mots. En d’autres termes, vous souhaiterez peut-être générer une liste de chaque mot unique de votre document, ainsi que le nombre de fois où il apparaît.
Malheureusement, Word n’inclut pas une telle fonctionnalité. Vous pouvez cependant créer le vôtre à l’aide d’une macro. La macro VBA suivante est un exemple:
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 As Integer 'Temporary variables Dim k As Integer ' Dim l As Integer ' Dim Temp As Integer ' Dim tword As String ' ' Set up excluded words Excludes = "[the][a][of][is][to][for][this][that][by][be][and][are]" ' Find out how to sort ByFreq = True ans = InputBox$("Sort by WORD or by FREQ?", "Sort order", "WORD") 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 ' 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 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:=Trim(Str(Freq(j))) & vbTab & Words(j) & vbCrLf Next j End With System.Cursor = wdCursorNormal j = MsgBox("There were " & Trim(Str(WordNum)) & _ " different words ", vbOKOnly, "Finished") End Sub
Lorsque vous ouvrez un document et exécutez cette macro, il vous est demandé si vous souhaitez créer une liste triée par mot ou par fréquence. Si vous choisissez mot, la liste résultante est affichée par ordre alphabétique. Si vous choisissez la fréquence, la liste résultante est dans l’ordre décroissant en fonction du nombre de fois où le mot est apparu dans le document.
Pendant l’exécution de la macro, la barre d’état indique ce qui se passe.
Selon la taille de votre document et la vitesse de votre ordinateur, l’exécution de la macro peut prendre un certain temps. (Je l’ai couru avec un document de 719 pages avec plus de 349 000 mots et il a fallu environ cinq minutes pour terminer.)
Notez qu’il existe une ligne dans la macro qui définit une valeur dans la chaîne Excludes. Cette chaîne contient des mots que la macro ignorera lors de la création de la liste de mots. Si vous souhaitez ajouter des mots à la liste, ajoutez-les simplement à la chaîne, entre [crochets]. Assurez-vous également que les mots d’exclusion sont en minuscules.
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites WordTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / wordribbon-WordTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
WordTips est votre source pour une formation Microsoft Word rentable.
(Microsoft Word est le logiciel de traitement de texte le plus populaire au monde.) Cette astuce (879) s’applique à Microsoft Word 97, 2000, 2002 et 2003.