Визначення Частин Мови
Свайпніть щоб показати меню
Розуміння POS-тегування
Ми вже згадували, що тегування частин мови є корисним для лематизації, що є його основною роллю в попередній обробці тексту, тому розглянемо цей процес детальніше.
Тегування частин мови (POS) — це процес позначення слова в тексті (корпусі) як такого, що відповідає певній частині мови (наприклад, іменник або дієслово), на основі як його визначення, так і контексту — тобто, його взаємозв'язку з сусідніми та пов'язаними словами у фразі, реченні чи абзаці.
Використання повних назв частин мови (наприклад, "дієслово" або "іменник") може бути досить громіздким, особливо при роботі з великим корпусом. Тому замість цього використовують короткі позначення, відомі як теги. Наприклад, "VB" замість дієслово. На практиці, однак, різні POS-тегери можуть використовувати дещо різні теги та більш деталізовані теги, такі як "VBD" для дієслів у минулому часі.
POS-тегування з NLTK
Щоб виконати тегування частин мови за допомогою NLTK, необхідно імпортувати функцію pos_tag() безпосередньо з nltk та застосувати її до списку рядків (токенів), передавши його як аргумент.
123456789101112from nltk.tokenize import word_tokenize from nltk import pos_tag import nltk nltk.download('punkt_tab') # Download the model needed for NLTK's POS tagging nltk.download('averaged_perceptron_tagger_eng') text = "One of the key NLP tasks is part of speech tagging" text = text.lower() tokens = word_tokenize(text) # Perform POS tagging tagged_tokens = pos_tag(tokens) print(tagged_tokens)
Ця функція повертає список кортежів, кожен з яких містить токен і його тег. Рядок nltk.download('averaged_perceptron_tagger_eng') ініціює завантаження набору даних і моделей, необхідних для PerceptronTagger, який є типовим POS-тегером у NLTK.
Цей тегер базується на усередненій моделі перцептрона, алгоритмі навчання з учителем, який ефективний для обробки тексту у великих масштабах, зокрема для тегування частин мови (POS). PerceptronTagger обрано через його баланс швидкості та точності, що робить його придатним для широкого спектра NLP-завдань, які потребують POS-тегування. Він навчається вагам ознак на основі наданих тренувальних даних і використовує ці ваги для прогнозування POS-тегів у нових текстах.
Для кращої візуалізації результату можна перетворити його на pandas DataFrame:
1234567891011121314from nltk.tokenize import word_tokenize from nltk import pos_tag import nltk import pandas as pd nltk.download('punkt_tab') # Download the model needed for NLTK's POS tagging nltk.download('averaged_perceptron_tagger_eng') text = "One of the key NLP tasks is part of speech tagging" text = text.lower() tokens = word_tokenize(text) # Perform POS tagging tagged_tokens = pos_tag(tokens) # Convert to DataFrame print(pd.DataFrame(tagged_tokens, columns=['Token', 'POS tag']).T)
Альтернативно, можна використати pd.DataFrame(tagged_tokens, columns=['Token', 'POS tag']) без транспонування DataFrame, щоб кожен рядок представляв пару токен-тег.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат