Упрощение языка — нормализация текста при обработке естественного языка

На этой неделе я узнал о нормализации текста, токенизации, леммах, расстоянии редактирования и наборе инструментов для работы с естественным языком (NLTK). Я столкнулся с некоторыми проблемами при установке NLTK, а также узнал больше о Python. В частности, у меня возникли проблемы с установкой версии библиотеки Python3, и мне пришлось переустановить Python3, чтобы заставить ее работать.

УСЛОВИЯ

Изучать что-то новое — это все равно, что снова и снова окунаться в жаргон. В конце концов человек выясняет, как плавать через новые слова и фразы.

Нормализация текста — набор задач, используемых для стандартизации текста. Ниже приведены популярные методы нормализации текста.

Токенизация — разделение групп текста на более мелкие единицы.

Лемматизация — определение корневой формы сложных слов.

Основание — удаление суффиксов слов для приближения к корню.

Расстояние редактирования – показатель сходства строк, основанный на количестве правок, необходимых для преобразования одной строки в другую.

В программировании я привык думать о читаемом тексте как о строках,аморфных наборах символов, которые создаются для непосредственного отображения пользователю. Однако при обработке естественного языка мы работаем с уже существующим текстом. Он имеет свое значение, историю и происхождение. Человек создал его, почувствовал себя через него выраженным, а затем поделился им. Но часто почему это неясно ни читателю, ни писателю. Радость общения заключается в том, чтобы находить возможности погрузиться в основную цель того, что заставляет нас выражать. И это может быть грязно.

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

Первым шагом в предоставлении ответа является токенизация, разделение групп текста на более мелкие единицы. Вот пример функции токенизатора слов и ее выходных данных.

Сила токенизаторов заключается в их способности принимать сложные входные данные и возвращать четкие выходные данные, которые можно использовать для дальнейшей обработки. Нам не нужно беспокоиться об разборе неприятных строк, таких как O’Mally’s, или о том, как обрабатывать сокращения — инструменты языковой обработки, такие как NLTK, могут позаботиться об этом за нас.

Давайте посмотрим на другой пример, на этот раз с использованием метода разбора предложений sent_tokenize.

Вот первые несколько предложений моей любимой книги «Имя ветра»:

И это вывод при подаче этого текста в метод NLTK sent_tokenize

Здесь у нас есть довольно интуитивное поведение. Обратите внимание на то, как в первом предложении точка, обозначающая конец предложения, появляется внутри кавычек. Метод sent_tokenize не просто разбивает строку при достижении точки, но включает в возвращаемое предложение конечную кавычку.

При нормализации текста будут появляться разные формы похожих слов. При построении карт контекстуальных значений слов часто бывает полезно сжать эти сложные слова в их более простые корневые формы. Например, рассмотрим следующие предложения.

Students go to the library after school to study.

We had to search several libraries for the books we needed.

Оба этих предложения содержат информацию о библиотеках. Однако некоторая нормализация текста улучшит их удобство использования в приложении НЛП. Словаlibrariesиlibraryочевидно относятся к одному и тому же месту, где можно учиться и искать книги. Однако компьютер этого не знает, потому что в каждом предложении они пишутся по-разному. Чтобы гарантировать, что контекст обоих предложений будет использоваться для построения нашего определения того, что такое библиотека, нам нужно представить эти слова в одной и той же форме. Для этого используется лемматизация.

NLTK содержит простые методы лемматизации. Здесь мы видим, что WordNetLemmatizer возвращает корневые слова.

Круто, правда??

Подобно лемматизации, Stemming — это метод получения корня «слова» более грубым способом. В этом примере используется алгоритм стемминга Портера.

Не сохраняя правильное написание слов, Stemming предоставляет простой (и эффективный) способ получения похожих корней слов.

При сравнении текста может быть полезно знать, насколько похожи фрагменты текста друг на друга. Простой способ сделать это — вычислить расстояние редактирования или количество изменений, необходимых для превращения одной строки в другую. Вот пример расстояния редактирования между словами intention и execution.

Итак, мы видим, что расстояние редактирования равно 5, потому что это количество изменений, необходимых для превращения одной строки в другую.

Мы можем использовать NLTK для вычисления расстояния редактирования между большими строками.

ОБЗОР

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

В следующий раз я начну копаться в векторах слов, word2vec, и мы увидим, какие приложения способны создавать эти инструменты. Спасибо за чтение, скоро увидимся!