С июня 2020 г. я больше не буду использовать Medium для публикации новых историй. Пожалуйста, посетите мой личный блог, если вы хотите продолжить читать мои статьи: https://vallant.in.

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

Как работает spaCy?

spaCy использует статистические модели для выполнения большей части работы по обработке языка. Он опирается на нейронные модели для тегирования, анализа и распознавания сущностей. Чтобы использовать большинство возможностей spaCy, вам необходимо скачать и установить модели для языка, с которым вы работаете.

Здесь у нас есть первое различие для языков: у английского есть 4 доступные модели, а у португальского только одна модель, обученная с помощью статей из Википедии. У французского есть 2 доступные модели, также обученные с помощью Википедии.

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

Загрузка spaCy

Я проанализирую, как функции доступны для трех языков, используя один и тот же текст, переведенный для каждого из языков. Тексты будут преобразованы в объект nlp. Этот объект анализирует каждый токен в тексте и преобразует его в документ, содержащий дополнительные метаданные для исходного текста.

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

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

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

Результат примерно такой:

spaCy хорошо справляется со всеми тремя языками. Кстати, доступны следующие свойства:

- Текст: Исходный текст слова.
- Лемма: Базовая форма слова.
- POS: Простая часть -speech tag.
- Tag: подробный тег части речи.
- Dep: синтаксическая зависимость, т.е. отношение между токенами.
- Shape: форма слова — заглавные буквы, знаки препинания , цифры.
- is alpha: Является ли токен буквенным символом?
- is stop: Является ли токен частью стоп-листа, т.е. наиболее распространенных слов языка?

Именованные сущности

spaCy может разрешать объекты в вашем тексте, но здесь мы начинаем замечать некоторую языковую дифференциацию. Метаданные, доступные для английского языка, гораздо более подробны. Кроме того, я заметил некоторые проблемы с классификацией для французского и португальского языков.

Сходство

Мы можем использовать spaCy, чтобы определить, похожи ли два слова или предложения друг на друга. Я проверил сходство слов «министр» и «президент», а также между «автомобиль» и «банан» для каждого из языков. Результаты были довольно хорошими для первого сравнения, но не очень хорошими для второго.

Стоп-слова

Обнаружение стоп-слов — это что-то очень простое для библиотеки НЛП. spaCy выполняет свою работу корректно для всех языков (кроме французского, где он считает «Le» непрерывным словом).



лемматизация

Здесь нет проблем ни для одного из языков.

Предложения

Что такое предложение? Хороший инструмент НЛП должен обнаруживать это, не полагаясь только на пунктуацию. spaCy хорошо справляется с распознаванием предложений для структурированного текста.

Выводы

Я люблю spaCy, и библиотека действительно очень хорошо справляется с базовыми задачами по структурированному английскому тексту (пресса, книги и т. д.). Но, как вы видели, нам все еще нужно проделать дополнительную работу, когда речь идет о других языках.

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