Генерация количества вхождений слов

Анализируя свои документы, вы можете задаться вопросом, есть ли способ подсчитать количество слов в документе. К сожалению, в Word нет такой функции, но есть несколько вещей, которые вы можете сделать.

Во-первых, если вы хотите узнать, сколько раз используется определенное слово или фраза, вы можете выполнить следующие действия:

  1. Нажмите Ctrl + H , чтобы отобразить вкладку “Заменить” диалогового окна “Найти и заменить”. (См. Рис. 1.)
  2. Рис. 1. Вкладка «Заменить» диалогового окна «Найти и заменить».

  3. В поле «Найти» введите слово или фразу, которую вы хотите посчитать.
  4. В поле “Заменить на” введите ^ & . Эта последовательность символов сообщает Word, что вы хотите заменить то, что вы нашли, тем, что вы поместили в поле «Найти». (Другими словами, вы заменяете слово или фразу самим собой.)
  5. Если вы ищете отдельные слова, убедитесь, что вы установили флажок «Искать только слова целиком».
  6. Щелкните “Заменить все”. Word выполнит замену и покажет, сколько экземпляров он заменил. Это то число, которое вам нужно.

Этот подход отлично работает, если у вас есть только одно или два слова или фразы, о которых вы хотите знать. Вы можете немного автоматизировать процесс, используя макрос для поиска в документе и подсчета за вас. Следующий макрос запрашивает у пользователя слово, а затем подсчитывает, сколько раз это слово появляется в документе. Он будет продолжать запрашивать другое слово, пока пользователь не нажмет кнопку «Отмена».

 Sub FindWords () Dim sResponse As String Dim iCount As Integer 'Вводите разные слова, пока пользователь не нажмет кнопку «Отменить».  слово для подсчета sResponse = InputBox (_ Prompt: = "Какое слово вы хотите посчитать?", _ Title: = "Count Words", по умолчанию: = "") Если sResponse> "" Then 'Установите счетчик на ноль  для каждого цикла iCount = 0 Application.ScreenUpdating = False With Selection .HomeKey Unit: = wdStory With .Find .ClearFormatting .Text = sResponse 'Цикл до тех пор, пока Word не сможет' найти строку поиска и 'подсчитать каждый экземпляр Do While. Execute iCount  = iCount + 1 Selection.MoveRight Loop End With 'показывает количество вхождений MsgBox sResponse & «появляется» & iCount & «раз» End With Application.ScreenUpdating = True End If Loop While sResponse  "" End Sub 

Если вы хотите определить все уникальные слова в документе, а также то, сколько раз каждое из них встречается в документ, то нужен другой подход. Следующий макрос VBA сделает именно это.

 Sub WordFrequency () Const maxwords = 9000 'Максимально допустимое количество уникальных слов Dim SingleWord As String' Необработанное слово, извлеченное из документа Dim Words (maxwords) As String 'Массив для хранения уникальных слов Dim Freq (maxwords)  As Integer 'Счетчик частоты для уникальных слов Dim WordNum As Integer' Количество уникальных слов Dim ByFreq As Boolean 'Флаг для порядка сортировки Dim ttlwds As Long' Общее количество слов в документе Dim Excludes As String 'Слова для исключения Dim Found As Boolean'  Временный флаг Dim j, k, l, Temp As Integer 'Временные переменные Dim ans As String' Как пользователь хочет отсортировать результаты Dim tword As String '' Установить исключенные слова Excludes = "[the] [a] [of] [is  ] [в] [для] [по] [быть] [и] [являются] "'Узнайте, как сортировать ByFreq = True ans = InputBox (" Сортировать по СЛОВУ или по 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 'Контроль повтора  Для каждого awor  d В ActiveDocument.Words SingleWord = Trim (LCase (aword)) 'Вне диапазона?  If SingleWord  "z" Then SingleWord = "" End If 'В списке исключений?  If InStr (Excludes, "[" & SingleWord & "]") Then SingleWord = "" End 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  ("Too many words.", VbOKOnly) Exit For End If End If ttlwds = ttlwds - 1 StatusBar = "Remaining:" & ttlwds & ", Unique:" & WordNum Next aword 'Теперь отсортируйте его по порядку слов Для j = 1  To WordNum - 1 k = j For l = j + 1 To WordNum If (Not ByFreq And Words (l)  Freq (k)) Then k = l Next  l Если k  j Тогда tword = Слова (j) Слова (j) = Слова (k) Слова (k) = tword Temp = Freq (j) Freq (j) = Freq (k) Freq (k) = Temp End  Если StatusBar = "Sorting:" & WordNum - j Next j 'Теперь выпишите результаты 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 ("Были" & Trim (Str (WordNum)) & _ "разные слова", vbOKOnly, "Завершено") End Sub 

Когда вы открываете документ и запустите этот макрос, вас спросят, хотите ли вы создать список, отсортированный по словам или по частоте. Если вы выберете слово, то полученный список будет показан в алфавитном порядке.. Если вы выберете частоту, то результирующий список будет в порядке убывания в зависимости от того, сколько раз слово появлялось в документе.

Во время выполнения макроса в строке состояния отображается, что происходит. В зависимости от размера вашего документа и скорости вашего компьютера макрос может занять некоторое время. (Я запустил его с 719-страничным документом, содержащим более 349000 слов, и это заняло около пяти минут.)

Обратите внимание, что в макросе есть строка, которая устанавливает значение в строке Excludes. . Эта строка содержит слова, которые макрос игнорирует при составлении списка слов. Если вы хотите добавить слова в список исключений, просто добавьте их в строку между [квадратными скобками]. Кроме того, убедитесь, что слова исключения указаны в нижнем регистре.

Если вы по какой-то причине не хотите использовать макросы, вы можете использовать другие программы для подсчета слов. Например, текстовый редактор NoteTab («облегченную» версию можно бесплатно скачать с http://www.notetab.com) включает функцию подсчета слов. Все, что вам нужно сделать, это скопировать весь документ и вставить его в NoteTab. Затем в NoteTab выберите Инструменты | Текстовая статистика | Более. Он представляет собой анализ частоты встречаемости слов, в том числе в процентах.

Оцените статью
Frestage.ru
Добавить комментарий