Визначення Частин Мови
Розуміння 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, щоб кожен рядок представляв пару токен-тег.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 3.45
Визначення Частин Мови
Свайпніть щоб показати меню
Розуміння 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, щоб кожен рядок представляв пару токен-тег.
Дякуємо за ваш відгук!