НЛП | Обучение токенизатора и фильтрация стоп-слов в предложении

Опубликовано: 25 Июля, 2021

Зачем нужно обучать токенизатор предложений?
В NLTK токенизатор предложений по умолчанию работает для общих целей и работает очень хорошо. Но есть вероятность, что это не сработает лучше всего для какого-либо текста, поскольку в этом тексте может использоваться нестандартная пунктуация или, возможно, он имеет уникальный формат. Таким образом, для обработки таких случаев обучающий токенизатор предложений может привести к гораздо более точной токенизации предложения.

Давайте рассмотрим следующий текст для понимания концепции. Этот вид текста очень часто встречается в любом корпусе веб-текста.

Пример ТЕКСТА:
Парень: Итак, какие у тебя планы на вечеринку?
B девушка: ну! Я не пойду!
Парень: О, но тебе должно понравиться.

Чтобы скачать текстовый файл, нажмите здесь.

Код # 1: обучающий токенизатор




# Loading Libraries
from nltk.tokenize import PunktSentenceTokenizer
from nltk.corpus import webtext
text = webtext.raw( 'C:\Geeksforgeeks\data_for_training_tokenizer.txt' )
sent_tokenizer = PunktSentenceTokenizer(text)
sents_1 = sent_tokenizer.tokenize(text)
print (sents_1[ 0 ])
print ( " " sents_1[ 678 ])

Выход:

«Белый парень: Итак, у тебя есть какие-нибудь планы на этот вечер?»

«Бродяга: Есть мелочь?»


Код # 2: Токенизатор предложения по умолчанию




from nltk.tokenize import sent_tokenize
sents_2 = sent_tokenize(text)
print (sents_2[ 0 ])
print ( " " sents_2[ 678 ])

Выход:

«Белый парень: Итак, у тебя есть какие-нибудь планы на этот вечер?»

«Девушка: Но у вас уже есть Биг Мак ...  r  nХобо: О, это все театрально».

Это различие во втором выводе - хорошая демонстрация того, почему может быть полезно обучить собственный токенизатор предложений, особенно когда ваш текст не входит в типичную структуру абзаца-предложения.

Как работает обучение?
Класс PunktSentenceTokenizer class следует алгоритму неконтролируемого обучения, чтобы узнать, что составляет разрыв предложения. Это неконтролируемый, потому что не нужно давать никаких помеченных обучающих данных, только необработанный текст.

Фильтрация игнорируемых слов в токенизированном предложении

Стоп- слова - это общие слова, которые присутствуют в тексте, но обычно не влияют на смысл предложения. Они почти не имеют значения для поиска информации и обработки естественного языка. Например - «то» и «а». Большинство поисковых систем отфильтровывают стоп-слова из поисковых запросов и документов.
Библиотека NLTK поставляется с корпусом nltk_data/corpora/stopwords/ который содержит списки слов для многих языков.

Код # 3: стоп-слова с Python




# Loading Library
from nltk.corpus import stopwords
# Using stopwords from English Languages
english_stops = set (stopwords.words( 'english' ))
# Printing stopword list present in English
words = [ "Let's" , 'see ', ' how ', "it' s", 'working' ]
print ( "Before stopwords removal: " , words)
print ( " After stopwords removal : " ,
[word for word in words , word not in english_stops]) if word not in english_stops])

Выход:

Перед удалением игнорируемых слов: [«Давайте», «посмотрим», «как», «это», «работает»]

После удаления стоп-слов: [«Давайте», «посмотрим», «работает»]
?


Код №4: Полный список языков, используемых в стоп-словах NLTK.




stopwords.fileids()

Выход:

['датский', 'голландский', 'английский', 'финский', 'французский', 'немецкий',
венгерский, итальянский, норвежский, португальский, русский,
"испанский", "шведский", "турецкий"]

Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.

Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.