Автоматично извличане на фрази и съответни думи на испански с Python qu4nt

Трябва да намерите подходящи думи или фрази в стотици или хиляди текстове? И искате ли да го направите на испански? Ако е така, тази статия може да ви помогне малко за това.

автоматично

За да направим това, ще използваме някои техники за обработка на естествен език, за да търсим - и се надяваме да намерим - някои подходящи термини от един или повече документи.

Преди да започна ще направя две уточнения. Първият, че моят подход ще бъде лингвистично ориентиран. Това означава, че ще дам по-голяма тежест на резултатите, отколкото на компютърните техники, и затова ще се опитам да използвам по-разумни стратегии от комуникативна гледна точка, отколкото други, които са по-ефективни в изчислително отношение. Секундата точността е, че съответните термини са въпрос, свързан с текста и целта, която имаме, както ще стане ясно - надявам се - по-късно.

Ако, от друга страна, не се интересувате от извличането на подходящи думи, но търсите да намалите броя на думите в даден текст, каня ви да разгледате друга моя статия: Намалете броя на думите в текст: stemming и радикализация (stemming) с python.

За да намерим подходящи термини в даден текст, ще разчитаме на граматичен анализ на изреченията, които го съставят. Има два начина да се възползвате от структурата на изречението: да видите кои думи са подредени една до друга, за да образуват все по-широки изречения (анализ в съставни части), или да наблюдавате как някои думи изискват или са подкрепата на други (анализ на зависимостите ).

В тази статия ще използваме втория тип анализ, защото го прави по-прозрачен кои думи са от съществено значение и кои не. И тъй като помага и за намирането на подходящи думи, които работят като една група (полезността на това ще видите по-късно).

Ще изпълним тази задача с библиотека, почти прясна от фурната: StanfordNLP.

StanfordNLP е пакет за анализ на естествен език, направен в Python. Идеален е за разделяне на текст на изречения и думи и за класифициране на тези думи в категории като съществителни, прилагателни и т.н. Той също така позволява да се извърши анализ на зависимостта на повече от 70 различни езика.

Ако искате да научите повече за тази мощна библиотека на Python, можете да се консултирате с главната страница на проекта.

Също така си струва да се консултирате с лингвистичните спецификации, които изграждат стълбовете на тази библиотека на тази връзка. Това ще ви помогне да разберете с какви думи трябва да се консултирате, за да постигнете целта си.

Инсталация на библиотека

Библиотеката StanfordNLP се намира в директорията PyPI, така че можем да я инсталираме с pip от терминала:

$ pip инсталирайте stanfordnlp

Тази библиотека също изисква изтегляне на езиковите модели, с които възнамерявате да работите. Можете да намерите списък с тези модели на официалната страница на проекта.

Инсталиране на езиковите модели

Нека започнем с импортиране на библиотеката и изтегляне на моделите за испански от конзолата на Python:

Препоръчвам ви да изтеглите файловете на модела по пътя по подразбиране, което ще направи кода по-лесен и по-четлив. Трябва само веднъж да направите това изтегляне на испанските модели. След това моделите се инсталират на вашия компютър.

Конфигурация на последователността на компонентите на StanfordNLP

StanfordNLP използва няколко компонента последователно, за да обработва лингвистичен вход. Тази последователност от компоненти (или конвейер) прави библиотеката разширяема, гъвкава и мащабируема. По този начин можем да използваме само компонентите, които са необходими за дадена задача, или да заменим един с по-подходящ. StanfordNLP изисква да предадем като аргумент езиковия модел, който ще използваме (в този случай lang = 'is', който беше моделът, който инсталирахме преди малко).

Ако изпълним последователността на компонентите по подразбиране, можем да добием представа какво може да направи тази библиотека:

Компонентите по подразбиране са следните:

  • токенизирам: Токенизатор. Разделете текст на изречения и изречения на думи.
  • mwt: Сложен токенизатор на думи. Разпознавайте думи като последващи действия или виртуален асистент.
  • поз: Класификатор на Word клас. Присвояване на категории като прилагателно или глагол на дума.
  • лема: Lematizer. Отнема дума и я трансформира в речник. Например, признайте, че речниковата форма на пеене е пеенето.
  • депарсиране: Анализатор на зависимости. Посочете функцията на дадена дума и посочете нейната връзка с други думи в същото изречение. Можете например да посочите, че в изречението Обичам шоколада фразата шоколад е обектът, обичан от говорещия.

Ако не искаме да използваме всички компоненти, можем да посочим кои ще изискваме по следния начин:

Както и да е, предлагам ви да използвате компонентите по подразбиране, за да започнете. Това ще ви улесни да следвате примерите в тази статия на вашия компютър.

Ще тестваме библиотеката с прост пример. За това ще създадем обект от класа Document от nlp обект (от клас Pipeline), които изградихме по-рано. Този обект на документ ще съхранява резултата от анализа, направен от nlp.