Программа предобработки текстовых данных для участия в проекте образовательного центра «Сириус»: «Большие данные и машинное обучение в когнитивных и социальных науках»
Следующие инструкции предоставят вам информации о возможностях проекта
Склонируйте проект с репозитория для дальнейшего использования или скачайте его .zip файлом
git clone https://github.com/GerasimovRM/SiriusTextAnalyzer.git
Проект содержит два основных класса:
- TextReader - класс для считывания данных в форматах txt, json, csv
- TextFilter - класс для фильтрации данных по критериям из задания
Класс находится в text_analyzer/text_reader.py
TextReader.init(file_name[, file_type='txt']) - Инициализатор TextReader
Class for reading text
Available file formats: txt (default), json, csv
Parameters:
file_name: File with text data
file_type: One of the available file formats
TextReader.read() - Считывание данных из источника
Read text data from source
'txt' -> str
'json' -> Dict
'csv' -> List[Dict]
Return:
File context
Класс находится в text_analyzer/text_filter.py
TextFilter.init([source_stop_words='stop_words.txt']) - Инициализатор TextFilter
Class for filtering text
Parameters:
source_stop_words: File with stop words
stop_words.txt (default) взят с этого репозитория без слов: даром дом деньги жизнь жить ребенок человек
TextFilter.add_stop_words(added_stop_words) - Добавление стоп слов из коллекции
Adds stop words in TextFilter from collection
Parameters:
added_stop_words: Collection with stop words
TextFilter.add_stop_words_from_file(file_name) - Добавление стоп слов из файла
Adds stop words from file
Parameters:
file_name: File with stop words
TextFilter.split_hash_tags(text) - Парсинг хэш тегов
Parsing text with hash tags
Parameters:
text: Text with illegible hash tags
Return:
Text with parsing hash tags
TextFilter.text_to_lower(text) - Конвертирование всех символов в нижний регистр
Convert all symbols to lower case
Parameters:
text: Source text
Return:
Converted lowercase text
TextFilter.remove_punctuation(text) - Удаление пункутуации
Replace all punctuation symbols to white space
Parameters:
text: Text with punctuation
Return:
Filtered text without punctuation
TextFilter.delete_irrelevant(text) - Удаление нерелевантных слов
Remove links, HTML-tags, etc.
Parameters:
text: Text to filter
Return:
Filtered list of words
TextFilter.remove_stop_words(words, stop_words) - Удаление стоп слов
Remove all stop words (added earlier) from words
Stop words can be add using methods TextFilter.add_stop_words and TextFilter.add_stop_words_from_file
Parameters:
words: Source list of words
stop_words: Unnecessary words
Return:
Filtered list of words
TextFilter.transform_words_to_normal_form(words) - Конвертирование слов в нормальную форму
Convert words to normal form
Parameters:
words: Source list of words
Return:
List of normal form words
TextFilter.parse_text(text) - Парсинг текста в целом (применение функций, перечисленных ранее)
Parsing text using functions:
TextFilter.split_hash_tags
TextFilter.text_to_lower
TextFilter.remove_punctuation
TextFilter.delete_irrelevant
TextFilter.remove_stop_words
TextFilter.transform_words_to_normal_form
Parameters:
text: Text to parse
Return:
Iterator with parsed words
Выполнение тестового задания реализовано в файле app.py:
# -*- coding: utf-8 -*-
from text_analyzer.text_reader import TextReader
from text_analyzer.text_filter import TextFilter
text_reader = TextReader('Данные для задания.csv', 'csv')
text_filter = TextFilter()
# считывание данных из 'Данные для задания.csv'
text = ' '.join(map(lambda x: x['body'], text_reader.read()))
# результат работы парсинга
iter_obj = text_filter.parse_text(text)
# построение алфавитно-частотного словаря
dict_res = {}
for elem in iter_obj:
if elem not in dict_res:
dict_res[elem] = 0
dict_res[elem] += 1
# вывод алфавитно-частотного словаря, отсортированного по количеству употребления слов, в 'answer.txt'
with open("answer.txt", 'w') as output_file:
for word, count in sorted(dict_res.items(), key=lambda x: x[1], reverse=True):
print(f"{count}: {word}", file=output_file)
1235: человек
844: благотворительный
721: ребёнок
682: помощь
657: жизнь
525: показать
511: полностью
487: деньга
438: добрый
399: фонд
385: дом
384: помочь
346: рубль
343: доброта
340: благотворительность
335: проект
333: организация
297: семья
261: праздник
255: участие
250: группа
239: февраль
236: помогать
233: сбор
217: средство
216: сумма
214: мероприятие
211: пара
206: карта
203: счёт
202: возможность
199: март
188: принять
187: поддержка
187: иоанн
183: являться
180: история
179: жить
173: центр
173: проявление
172: огромный
171: цель
171: право
170: необходимый
169: известный
168: область
168: проблема
166: любовь
165: добро
165: заниматься
163: пройти
163: тысяча
162: александр
161: метр
159: проходить
159: международный
157: родитель
156: мама
155: номер
152: отношение
151: волонтёр
151: образ
151: далее
150: любой
149: программа
148: вещий
148: новое
146: бог
145: месяц
144: просить
144: акция
143: провести
143: сердце
143: способ
142: спонтанный
142: находиться
140: число
139: святой
138: деятельность
135: поэтому
133: лечение
132: участник
132: рассказать
132: детский
131: смочь
131: здоровье
131: школа
130: разный
128: рф
128: результат
128: курс
127: общественный
127: принимать
127: состояние
126: неделя
125: перевод
125: компания
124: например
123: клуб
123: закон
...
- re - Модуль для работы с регулярными выражениями
- pymorhy2 - Модуль для морфологического анализа слов
- Герасимов Роман Михайлович
Этот проект лицензирован по лицензии MIT - подробности см. В файле LICENSE.md