Word count что это за программа
Как человек, пишущий на компьютерные темы в программе TextEdit, я часто задумывался о том, что мне не хватает эдакого помощника, который мог бы объективно оценить мой словарный запас и просто подсчитать количество написанных знаков и слов.
Не менее интересно было бы изучать тексты других авторов методом «контент-анализа», как его называют психологи, чтобы узнать об этих людях больше, а заодно избежать ненужных повторов и некоторых огрехов в собственных текстах.
После долгих расспросов знакомых и вдумчивого «Google’ния» я нашел бесплатную программу Word Counter от разработчика Supermagnus Software. Word Counter умеет быстро считать количество слов и символов в тексте, работать в связке с TextEdit, Microsoft Word, Pages и TextWrangler.
Одна из чудесных возможностей приложения — подсчет Frequency, частоты использования каждого слова, встречающегося в тексте. Кроме того, есть много и других полезных опций: вычисление слов определенной длины, подсчет символов с пробелами и без пробелов, учет регистров.
Программа работает с основными текстовыми форматами: .txt, .text, .rtf, .rtfd, .htm, .html, .doc, .wordml и .webarchive.
Для «сотрудничества» с TextEdit достаточно оставить открытым окно текстового редактора. Затем запустить Word Counter и кликнуть на появившуюся иконку TextEdit, а потом Count Words.
Но можно создать новое окно в самой программе Word Counter, New Widow/Новое окно, и, растянув его по вертикали, скинуть туда текст через буфер обмена.
При этом в настройках Word Counter, Preferences/Установки, можно выбрать разные режимы: Set default font Size/Размер текста по-умолчанию; Count all words (Count words with more than)/Подсчитывать слова, содержащие меньше трех знаков или нет; Automaticaly update counts every <> seconds/Как часто обновлять подсчет. И так далее.
Прямо на ходу, в процессе создания текста, Word Counter умеет создавать сводные таблицы всех слов в документе, показывая частоту, с которой используется каждое из них. Для этого нужно выбрать в главном меню пункт The Word Frequency window (окно частоты слов) и нажать кнопку Count (подсчитать). Процесс может занять некоторое время. Появятся две колонки Frequency (частота) и Length (длинна). Можно дополнительно рассортировать данные в колонках, кликая по именам столбцов. Так можно выяснить самые длинные (больше 10 знаков) слова и проверить их на повторяемость.
В эту программу встроена и специальная формула для подсчета статистики удобочитаемости — Flesch-Kincaid. Однако её критерии весьма условны. Скорее это информация к размышлению.
Автор приложения David Hanauer не тестировал Word Counter на русском языке. Однако мне, как человеку пишущему, благодаря этой замечательной программе удалось отучить себя от использования нескольких «слов-паразитов». А «контент-анализ» текстов одной моей знакомой, выкладывающей в интернет свои стихи и рассказы просто поверг её в шок. Оказалось, что самые часто употребляемые ей слова «я», «нож», «кровь», «война», и «уйди», а «прости» и «любовь» — на последнем месте.
WordCount - это обычный инструмент, который может подсчитывать количество слов, слов и строк в текстовых файлах. В этом проекте необходимо написать программу командной строки для имитации функций существующего WordCount.exe и расширить ее, чтобы подсчитать количество символов, слов и строк в исходном файле определенного языка программирования. На этой основе также реализуется статистика пустых строк, строк кода и строк комментариев исходного файла определенного языка программирования.
Режим, который программа обрабатывает, нужен пользователю:
Значение каждого параметра
Список основных функций
wc.exe -c file.c статистика по количеству символов
wc.exe -w file.c для подсчета количества слов
wc.exe -l file.c: Статистика по количеству строк
wc.exe -a Статистика пустых строк, строк кода и строк комментариев
Пустая строка:В этой строке все пробелы или символы управления форматом. Если код включен, отображается только один символ, например ">".
Строка кода:Эта строка включает в себя более одного кода символа.
Строка комментария:Эта строка не является строкой кода, и эта строка содержит комментарии.
Этот проект разделен на четыре модуля: модуль статистики символов, модуль статистики слов, модуль статистики номеров строк и модуль комплексной статистики.Модуль комплексной статистики включает статистику строк кода, пустых строк и строк комментариев. Дизайн такой:
Модуль статистики персонажей:
Этот модуль открывает текстовый файл file.c в каталоге программы в режиме только для чтения, обращается к каждому символу в текстовом файле по очереди и добавляет 1 к статистической переменной до конца текстового файла.
Модуль статистики Word:
Этот модуль подсчитывает все слова, состоящие из букв, цифр и знаков подчеркивания, и первая буква не является подчеркиванием. Статистический процесс такой же, как и в статистическом модуле символов, поэтому я не буду повторять его здесь.
Модуль подсчета строк:
Номер строки этого модуля инициализируется равным 1, и символы в текстовом файле доступны последовательно, а 1 добавляется последовательно, когда встречается символ новой строки, до конца текста.
Модуль комплексной статистики:
Этот модуль может реализовать статистику пустых строк, строк кода и строк комментариев. Поочередно обращайтесь к символам в текстовом файле. Если используется символ "", переменная пустой строки увеличивается на 1. Если это два последовательных символа «/», переменная строки комментария увеличивается на 1. В противном случае переменная кода увеличивается на 1. Повторять по очереди до конца текста.
Дизайн всего модуля:
Общий модуль оценивает массив строк в параметрах командной строки, первый массив строк - это имя программы, если вторая строка - это «-c», «-w», «-l», «-a», И третий массив строк - file.c, затем вызовите функции CharCount, WordCount, LineCount, Muiltiple по очереди, чтобы получить статистику количества символов, слов, строк и пустых строк, строк кода и строк комментариев.
Текстовые файлы, требующие статистики:
Найдите каталог, в котором находится программа. Примечание. В этом каталоге находится текстовый файл file.c, требующий статистики.
Статистический тест количества символов:
Статистический тест количества слов:
Статистический тест количества строк:
Статистический тест на количество пустых строк, строк кода и строк комментариев:
Есть какие-либо функции, которые не могут быть реализованы в этом проекте. Wc.exe -s рекурсивно обрабатывает соответствующие файлы в каталоге, а wc.exe -x отображает графический интерфейс. Пользователь может выбрать один файл через интерфейс, и программа отобразит количество символов в файле. , Номер строки и др. Статистика. Что касается функции рекурсивной обработки файлов в каталоге, пока нет идеи, которую можно было бы хорошо решить, поэтому я жду, пока следующая работа будет идеальной. Что касается функции отображения графического интерфейса, из-за отсутствия опыта работы с графическим интерфейсом и спешки времени для этого проекта он не был завершен идеально.
Программа WordCount - это программа HelloWord от MapReduce. Анализируя программу WordCount, мы можем понять основную структуру и процесс выполнения программы MapReduce.
6.2.1 Идеи дизайна WordCount
Программа WordCount иллюстрирует идеи программирования MapReduce.
Вообще говоря, в качестве входных данных MapReduce MapReduce будет разбивать текст и использовать номер строки в качестве ключа пары значений ключа ввода, а текстовое содержимое в качестве значения пары значений ключа. Форма. MapReduce по умолчанию передаст значение ключа методу Reduce после подсчета и выдаст окончательный результат.
6.2.2 Режим работы MapReduce
Режим работы MapReduce подразделяется на локальный и серверный.
Локальная работа относится к локальной среде Windows, которая удобна для разработки и отладки.
Работа сервера в основном используется в реальной производственной среде.
6.2.3 Написание кода
(1) Создать проект Java
(2) Изменить исходный код Hadoop
Обратите внимание Когда вы запускаете программу MapReduce локально в Windows, вам нужно изменить исходный код Hadoop. При работе на сервере Linux нет необходимости изменять исходный код Hadoop.
Изменение исходного кода Hadoop на самом деле просто изменение исходного кода класса NativeIO Hadoop.
Загрузите соответствующий исходный код hadoop, распакуйте hadoop-2.7.3-src.tar.gz, hadoop-2.7.3-src \ hadoop-common-project \ hadoop-common \ src \ main \ java \ org \ apache \ hadoop \ io \ nativeioNativeIO.java копируется в соответствующий проект Eclipse.
Изменить код
Если вы не измените исходный код класса NativeIO, при запуске программы MapReduce локально в Windows будет сгенерировано исключение:
(3) Определить класс Mapper
- Класс Mapper используется для чтения ввода данных и выполнения метода map.Написание класса Mapper должно наследовать класс org.apache.hadoop.mapreduce.Mapper и реализовывать метод map в соответствии с соответствующей проблемой.
- Четыре общих параметра класса Mapper: первые два представляют карту запись Тип ключа и значение пары ключ-значение, последние два указывают экспорт Типы ключа и значения пары ключ-значение
- Вычислительная среда MapReduce передает пары ключ-значение в качестве параметров методу map. Этот метод имеет 3 параметра, первый из которых является параметром типа объекта (обычно используется тип LongWritable), представляющим номер строки, второй - параметром типа объекта (обычно использующим тип текста), представляющим содержимое строки, третий параметр контекста, Представляет контекст.
- Полное имя класса Context - org.apache.hadoop.mapreduce.Mapper.Context, что означает, что класс Context является классом статического содержимого класса Mapper, а класс Context может использоваться непосредственно в классе Mapper.
- Используйте метод split StringUtils в методе map, разделите содержимое строки ввода на слова по пробелам, а затем выведите его как промежуточный результат с помощью метода write класса Context.
(4) Определить класс редуктора
- Класс Reducer используется для получения промежуточного результата, выводимого Mapper, в качестве входных данных класса Reducer, и выполнения метода Reduce.
- 4 общих параметра класса Reducer: первые 2 представляют метод Reduce запись Тип пары ключ-значение (соответствующий типу вывода карты), последние два представляют метод сокращения экспорт Типы пар ключ-значение
- Сократить параметры метода: ключ - это одно слово, значения - это список значений счетчиков соответствующих слов, а тип контекста - org.apache.hadoop.mapreduce.Reducer.Context, который является контекстом редуктора.
(6) Определить основной метод (основной класс)
(6) Местное управление
Результаты:
6.2.4 Работа сервера
(1) Изменить исходный код
Запишите класс Mapper и класс Reducer как статический внутренний класс основного класса.
(2) Экспорт упаковки
(3) Загрузить для запуска на сервере
Как и прежде, загрузите пакет wordcount.jar, который был только что экспортирован на рабочий стол, на узел node1 через xftp.
Это потому, что выходной каталог уже существует, просто удалите его
дополнение
Решение:
(1) Загрузите hadoop-2.7.3.tar.gz и распакуйте его. Например, если вы разархивируете его на диск D, корневой каталог hadoop будет D: \ hadoop-2.7.3
(2) Скопируйте инструмент отладки (winutils.exe) в HADOOP_HOME / bin
(3) Установите переменные среды
Детальный анализ исходного кода MapReduce WordCount
Основной поток выполнения MapReduce
В отличие от использования программы «hello world» в качестве вводного примера программы при изучении языка программирования, программа «wordcount» часто используется в качестве вводной программы в области обработки больших данных. Программа WordCount используется для подсчета частоты появления одинаковых слов в части входных данных. Базовый процесс выполнения показан на рисунке ниже:
Программа WordCount, основанная на MapReduce, в основном состоит из следующих частей:
1、Split
2、Map
3、Shuffle/Combine/sort
Эти процессы не требуют нашего внимания в некоторых простых программах MapReduce, потому что некоторые исходные процессоры Shuffle / Combine / sort были заданы в исходном коде. Функции этих процессов:
Combine: Результаты, сгенерированные Задачей Карты, объединяются и подсчитываются на локальном узле, чтобы уменьшить объем данных, которые должны быть переданы в последующем процессе перемешивания между всем кластером.
Shuffle / Sort: Результаты обработки каждой задачи карты в кластере передаются и сортируются между кластерами. После этого этапа данные используются в качестве входных данных конца сокращения.
4、Reduce
На самом деле входные данные Reduce Task - это не просто пара , а серия пар с одинаковым значением ключа после сортировки. Задача сокращения выполняет статистику и другую обработку для получения окончательного результата.
Анализ исходного кода WordCount
Основываясь на исходном коде Hadoop 2.7.6, эта статья интерпретирует исходный код программы WordCount.
Исходный код WordCount для Hadoop 2.7.6 выглядит следующим образом:
Интерпретация исходного кода
Стадия -Map (): от строки 36 до строки 47
Программа MapReduce должна наследовать класс org.apache.hadoop.mapreduce.Mapper и, по крайней мере, настраивать реализацию метода Map () в унаследованных классах этого класса. Среди них есть четыре параметра, необходимые для org.apache.hadoop.mapreduce.Mapper ( keyIn, valueIn, keyOut, valueOut), то есть вход и выход задачи Map () представлены в виде пар .
Значение каждого параметра здесь в исходном коде:
1. Объект: введите значение ключа для пары , здесь смещение начальной позиции текстовых данных. В большинстве программ этот параметр может напрямую использовать тип Long, а исходный код здесь использует Object для обобщения.
2. Текст: введите значение пары , здесь приведен конкретный фрагмент текстовых данных.
3. Текст: Выведите значение ключа из пары , здесь есть слово.
4. IntWritable: выведите значение пары , которое здесь равно 1. IntWritable - это дальнейшая инкапсуляция Integer в Hadoop, делающая его сериализуемым.
Здесь определены две переменные:
one: тип - это тип IntWritable, определенный Hadoop, его сущность - сериализованное целое число, а значение одной переменной всегда равно 1.
word: поскольку в программе WordCount задача на стороне карты состоит в сегментировании входных данных в соответствии со словами, и каждое слово имеет текстовый тип.
Этот код является ядром стороны карты и определяет конкретную логическую реализацию задач, которые должна выполнить задача карты.
Параметры метода map (): ключ объекта, текстовое значение, контекстный контекст, где:
клавиша: смещение входных данных в исходных данных.
Значение : конкретные данные, здесь строка.
Контекст : используется для временного хранения результата обработки map ().
Сначала метод преобразует входное значение в строковый тип и создает экземпляр StringTokenizer, который поставляется с Hadoop для хранения входных данных. После этого входные данные сегментируются с начала, и каждое слово в строке сегментируется на пары , такие как: , .
Фаза -Reduce (): от строки 52 до строки 64
Значение каждого параметра здесь в исходном коде:
1. Текст: введите значение ключа для пары , здесь есть слово
2. IntWritable: введите значение пары .
3. Текст: Выведите значение ключа из пары , вот слово
4. IntWritable: выведите пару , здесь это значение после накопления той же частоты слова. Это на самом деле число.
Три параметра Reduce ():
1. Текст: введите значение ключа пары , которая является словом
2. Значение: это место стоит отметить. Как уже упоминалось ранее, в задаче MapReduce, в дополнение к нашей пользовательской map () и lower (), помимо ножа карты В ходе этого процесса система автоматически обрабатывает выходные данные задачи карты через процессы объединения, перемешивания, сортировки и т. Д. Поэтому входные данные на стороне сокращения представляют собой не просто простую форму , ноСерия сериализованных структур с одинаковым значением ключаТакие как: . Следовательно, значение value здесь - это сериализованная структура, которая появляется после слова: (1,1,1,2,2,3 . )
3. контекст: временно сохраните результаты, генерируемые стороной сокращения
Поэтому в коде на стороне сокращения накапливают значение в значении, и в результате получается частота слова, соответствующая значению ключа в тексте.
Подсчет количества слов в любом языке является простым делом, как в C, C ++, Python, Java и т. Д. MapReduce также использует Java, но это очень легко, если вы знаете синтаксис того, как его написать. Это основной MapReduce. Сначала вы узнаете, как выполнить этот код аналогично программе «Hello World» на других языках. Итак, вот шаги, которые показывают, как написать код MapReduce для Word Count.
Пример:
шаги:
-
Сначала откройте Eclipse ->, затем выберите Файл ->Создать ->Проект Java -> Назовите его WordCount -> затем Готово .
Щелкните правой кнопкой мыши на Project ->, затем выберите Build Path -> Click на Configue Build Path.
На приведенном выше рисунке вы можете увидеть опцию Add External JARs на правой стороне. Нажмите на него и добавьте ниже файлы упоминания. Вы можете найти эти файлы в / usr / lib /
1. /usr/lib/hadoop-0.20-mapreduce/hadoop-core-2.6.0-mr1-cdh5.13.0.jar
2. /usr/lib/hadoop/hadoop-common-2.6.0-cdh5.13.0.jar
Код Mapper: Вы должны скопировать и вставить эту программу в файл класса Java WCMapper.
public class WCMapper extends MapReduceBase implements Mapper
Text, Text, IntWritable>
public void map(LongWritable key, Text value, OutputCollector
IntWritable> output, Reporter rep) throws IOException
String line = value.toString();
// Разбиваем строку на пробелы
for (String word : line.split( " " ))
if (word.length() > 0 )
output.collect( new Text(word), new IntWritable( 1 ));
Код редуктора: Вы должны скопировать и вставить эту программу в файл WCReducer Java Class.
public class WCReducer extends MapReduceBase implements Reducer
IntWritable, Text, IntWritable>
public void reduce(Text key, Iterator value,
Reporter rep) throws IOException
// Подсчет частоты каждого слова
IntWritable i = value.next();
output.collect(key, new IntWritable(count));
Код драйвера: Вы должны скопировать и вставить эту программу в файл WCDriver Java Class.
public class WCDriver extends Configured implements Tool
public int run(String args[]) throws IOException
System.out.println( "Please give valid inputs" );
JobConf conf = new JobConf(WCDriver. class );
FileInputFormat.setInputPaths(conf, new Path(args[ 0 ]));
FileOutputFormat.setOutputPath(conf, new Path(args[ 1 ]));
public static void main(String args[]) throws Exception
-
Теперь вы должны сделать файл JAR. Щелкните правой кнопкой мыши на Project ->Нажмите на Export ->Выберите место экспорта в качестве файла Jar ->Назовите файл Jar (WordCount.jar) ->НажмитеNext -> Наконец нажмите Finish . Теперь скопируйте этот файл в каталог Workspace Cloudera
Читайте также: