Xác định tần suất từ (Microsoft Word)
Khi bạn đang phân tích tài liệu của mình, bạn có thể tự hỏi liệu có cách nào để tạo danh sách tần suất từ không. Nói cách khác, bạn có thể muốn tạo danh sách mọi từ duy nhất trong tài liệu của mình, cùng với số lần nó xuất hiện.
Thật không may, Word không bao gồm một tính năng như vậy. Tuy nhiên, bạn có thể tạo của riêng bạn bằng cách sử dụng macro. Macro VBA sau đây là một ví dụ:
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
Khi bạn mở một tài liệu và chạy macro này, bạn sẽ được hỏi xem bạn muốn tạo một danh sách được sắp xếp theo từ hay theo tần suất. Nếu bạn chọn từ, thì danh sách kết quả được hiển thị theo thứ tự bảng chữ cái. Nếu bạn chọn tần suất, thì danh sách kết quả sẽ theo thứ tự giảm dần dựa trên số lần từ xuất hiện trong tài liệu.
Trong khi macro đang chạy, thanh trạng thái cho biết điều gì đang xảy ra.
Tùy thuộc vào kích thước của tài liệu và tốc độ máy tính của bạn, macro có thể mất một lúc để hoàn thành. (Tôi đã chạy nó với một tài liệu dài 719 trang với hơn 349.000 từ và mất khoảng năm phút để hoàn thành.)
Lưu ý rằng có một dòng trong macro đặt giá trị trong chuỗi Loại trừ. Chuỗi này chứa các từ mà macro sẽ bỏ qua khi ghép danh sách từ lại với nhau. Nếu bạn muốn thêm từ vào danh sách, chỉ cần thêm chúng vào chuỗi, giữa [dấu ngoặc vuông]. Ngoài ra, hãy đảm bảo rằng các từ loại trừ ở dạng chữ thường.
_Lưu ý: _
Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên các trang WordTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.
WordTips là nguồn của bạn để đào tạo Microsoft Word hiệu quả về chi phí.
(Microsoft Word là phần mềm xử lý văn bản phổ biến nhất trên thế giới.) Mẹo này (879) áp dụng cho Microsoft Word 97, 2000, 2002 và 2003.