Застосування попередньої обробки тексту на практиці
Документи
Перш ніж перейти до практичного прикладу попередньої обробки тексту, важливо зрозуміти основні складові текстового корпусу: документи.
Документ — це окремий фрагмент тексту в межах корпусу, наприклад, електронний лист у корпусі листів.
Фактично кожен текстовий корпус є набором документів, тому попередня обробка корпусу означає попередню обробку кожного з документів.
Завантаження корпусу текстів
Раніше ми використовували текстовий корпус у вигляді рядкових змінних. Однак у реальних сценаріях корпус текстів часто зберігається у файлах TXT для суто текстових даних або у файлах CSV з кількома стовпцями, якщо до тексту додаються додаткові дані.
У цьому курсі ми працюватимемо або з файлами CSV, або з файлами TXT, де кожен документ починається з нового рядка. Тому для завантаження корпусу текстів з файлу ми використаємо функцію read_csv() з бібліотеки pandas.
123456import pandas as pd corpus = pd.read_csv( 'https://content-media-cdn.codefinity.com/courses/c68c1f2e-2c90-4d5d-8db9-1e97ca89d15e/section_1/chapter_8/example_corpus.txt', sep='\r', header=None, names=['Document']) print(corpus)
Тут ми зчитуємо цей TXT-файл у DataFrame. Ми встановлюємо sep='\r', щоб використовувати символ повернення каретки як роздільник, що означає початок кожного документа з нового рядка. Використовуємо header=None, щоб перший рядок не вважався заголовком, і вказуємо names=['Document'], щоб назвати єдиний стовпець 'Document'. У результаті отримаємо DataFrame з одним стовпцем 'Document', який містить 6 документів (речень).
Передобробка корпусу
Щоб виконати передобробку корпусу, спочатку створимо функцію для передобробки кожного з документів:
123456789101112131415161718import re from nltk.tokenize import word_tokenize from nltk.corpus import stopwords import nltk nltk.download('punkt_tab') nltk.download('stopwords') stop_words = set(stopwords.words('english')) def preprocess_document(doc): doc = re.sub(r'[^a-zA-Z\s]', '', doc, re.I | re.A) doc = doc.lower() doc = doc.strip() tokens = word_tokenize(doc) filtered_tokens = [token for token in tokens if token not in stop_words] doc = ' '.join(filtered_tokens) return doc
Тепер застосуємо цю функцію до нашого DataFrame для кожного документа та створимо стовпець із очищеними документами:
123456789101112131415161718192021222324252627import re from nltk.tokenize import word_tokenize from nltk.corpus import stopwords import nltk import pandas as pd nltk.download('punkt_tab') nltk.download('stopwords') stop_words = set(stopwords.words('english')) def preprocess_document(doc): doc = re.sub(r'[^a-zA-Z\s]', '', doc, re.I | re.A) doc = doc.lower() doc = doc.strip() tokens = word_tokenize(doc) filtered_tokens = [token for token in tokens if token not in stop_words] doc = ' '.join(filtered_tokens) return doc corpus = pd.read_csv( 'https://content-media-cdn.codefinity.com/courses/c68c1f2e-2c90-4d5d-8db9-1e97ca89d15e/section_1/chapter_8/example_corpus.txt', sep='\r', header=None, names=['Document']) corpus['Cleaned_Document'] = corpus['Document'].apply(preprocess_document) print(corpus)
Як бачите, наш корпус успішно попередньо оброблений, тому надалі в курсі ми будемо використовувати саме цю попередньо оброблену версію корпусу.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 3.45
Застосування попередньої обробки тексту на практиці
Свайпніть щоб показати меню
Документи
Перш ніж перейти до практичного прикладу попередньої обробки тексту, важливо зрозуміти основні складові текстового корпусу: документи.
Документ — це окремий фрагмент тексту в межах корпусу, наприклад, електронний лист у корпусі листів.
Фактично кожен текстовий корпус є набором документів, тому попередня обробка корпусу означає попередню обробку кожного з документів.
Завантаження корпусу текстів
Раніше ми використовували текстовий корпус у вигляді рядкових змінних. Однак у реальних сценаріях корпус текстів часто зберігається у файлах TXT для суто текстових даних або у файлах CSV з кількома стовпцями, якщо до тексту додаються додаткові дані.
У цьому курсі ми працюватимемо або з файлами CSV, або з файлами TXT, де кожен документ починається з нового рядка. Тому для завантаження корпусу текстів з файлу ми використаємо функцію read_csv() з бібліотеки pandas.
123456import pandas as pd corpus = pd.read_csv( 'https://content-media-cdn.codefinity.com/courses/c68c1f2e-2c90-4d5d-8db9-1e97ca89d15e/section_1/chapter_8/example_corpus.txt', sep='\r', header=None, names=['Document']) print(corpus)
Тут ми зчитуємо цей TXT-файл у DataFrame. Ми встановлюємо sep='\r', щоб використовувати символ повернення каретки як роздільник, що означає початок кожного документа з нового рядка. Використовуємо header=None, щоб перший рядок не вважався заголовком, і вказуємо names=['Document'], щоб назвати єдиний стовпець 'Document'. У результаті отримаємо DataFrame з одним стовпцем 'Document', який містить 6 документів (речень).
Передобробка корпусу
Щоб виконати передобробку корпусу, спочатку створимо функцію для передобробки кожного з документів:
123456789101112131415161718import re from nltk.tokenize import word_tokenize from nltk.corpus import stopwords import nltk nltk.download('punkt_tab') nltk.download('stopwords') stop_words = set(stopwords.words('english')) def preprocess_document(doc): doc = re.sub(r'[^a-zA-Z\s]', '', doc, re.I | re.A) doc = doc.lower() doc = doc.strip() tokens = word_tokenize(doc) filtered_tokens = [token for token in tokens if token not in stop_words] doc = ' '.join(filtered_tokens) return doc
Тепер застосуємо цю функцію до нашого DataFrame для кожного документа та створимо стовпець із очищеними документами:
123456789101112131415161718192021222324252627import re from nltk.tokenize import word_tokenize from nltk.corpus import stopwords import nltk import pandas as pd nltk.download('punkt_tab') nltk.download('stopwords') stop_words = set(stopwords.words('english')) def preprocess_document(doc): doc = re.sub(r'[^a-zA-Z\s]', '', doc, re.I | re.A) doc = doc.lower() doc = doc.strip() tokens = word_tokenize(doc) filtered_tokens = [token for token in tokens if token not in stop_words] doc = ' '.join(filtered_tokens) return doc corpus = pd.read_csv( 'https://content-media-cdn.codefinity.com/courses/c68c1f2e-2c90-4d5d-8db9-1e97ca89d15e/section_1/chapter_8/example_corpus.txt', sep='\r', header=None, names=['Document']) corpus['Cleaned_Document'] = corpus['Document'].apply(preprocess_document) print(corpus)
Як бачите, наш корпус успішно попередньо оброблений, тому надалі в курсі ми будемо використовувати саме цю попередньо оброблену версію корпусу.
Дякуємо за ваш відгук!