Питхон

Како извући реченице из текста помоћу НЛТК Питхон модула

Како извући реченице из текста помоћу НЛТК Питхон модула
Комплет алата за природни језик (НЛТК) је модул за обраду језика и текста за Питхон. НЛТК може да анализира, обрађује и токенизира текст доступан на много различитих језика користећи своју уграђену библиотеку корпуса и велику базу лексичких података. Питхон је један од најпопуларнијих програмских језика који се користи у науци података и обради језика, углавном због свестраности језика и доступности корисних модула попут НЛТК. Овај чланак ће вам објаснити како извући реченице из пасуса текста помоћу НЛТК. Код у овом водичу је тестиран са Питхон 3.8.2 и НЛТК 3.4.5 на Убунту 20.04 ЛТС.

Инсталирање НЛТК у Линук

Да бисте инсталирали НЛТК у Убунту, покрените наредбу испод:

$ судо апт инсталирај питхон3-нлтк

НЛТК пакети су доступни у свим главним Линук дистрибуцијама. Потражите кључну реч „НЛТК“ у менаџеру пакета да бисте инсталирали пакете. Ако из неког разлога, НЛТК није доступан у спремиштима ваше дистрибуције, можете га инсталирати из менаџера пакета пип покретањем наредбе у наставку:

$ пип инсталл --усер -У нлтк

Имајте на уму да ћете прво морати да инсталирате пип из менаџера пакета да би горња команда функционисала. У неким дистрибуцијама може се назвати пип3. Такође можете следити детаљна упутства за инсталацију доступна на званични сајт од НЛТК.

Издвајање реченица из пасуса помоћу НЛТК

За пасусе без сложених интерпункцијских знакова и размака можете користити уграђени токенизатор реченице НЛТК, назван „Пункт токенизер“, који долази са унапред обученим моделом. Такође можете да користите сопствене обучене моделе података за токенизацију текста у реченице. Прилагођено обучени модели података су изван делокруга овог чланка, па ће доњи код користити уграђени пункт енглески токенизер. Да бисте преузели датотеку Пункт ресурса, покрените следеће три наредбе и сачекајте да се преузимање заврши:

$ питхон3
$ увоз нлтк
$ нлтк.преузимање ('пункт')

У наставку ће се користити одломак из „Алисине авантуре у земљи чуда“:

импорт нлтк
пара = "Или је бунар био врло дубок, или је пала врло споро, јер је имала
пуно времена док је силазила да је погледа и да се запита шта иде
да се деси следеће. Прво је покушала да спусти поглед и разазна оно чему долази,
али било је сувише мрачно да бих ишта видео; затим погледа бочне стране бунара и
приметио да су испуњени ормарима и полицама за књиге; ту и тамо она
видео мапе и слике окачене на клинове. Скинула је теглу са једне полице
док је пролазила; била је означена као 'НАРАНЧАСТА МАРМАЛАДА', али на њено велико разочарање
била празна: није волела да баци теглу из страха да ће некога убити, па је успела
да га стави у један од ормара док је падала поред њега."
жетони = нлтк.сент_токенизе (пара)
за т у жетонима:
испис (т, "\ н")

Покретање горњег кода даће вам следећи излаз:

Или је бунар био врло дубок, или је врло споро падала, јер је имала довољно времена као
сишла је да је погледа и да се запита шта ће даље бити.
Прво је покушала да спусти поглед и разазна оно чему долази, али било је превише мрачно
да видим било шта; затим је погледала странице бунара и приметила да јесу
испуњени ормарима и полицама за књиге; ту и тамо видела је окачене мапе и слике
на клиновима.
У пролазу је скинула теглу с једне полице; био је означен као „ОРАНГЕМАРМАЛАДА“,
али на њено велико разочарање било је празно: није волела да баци теглу из страха
убивши некога, па је успела да га стави у један од ормара док је падала поред њега.

Уграђени токенизатор Пункт реченица добро функционише ако желите да токенизирате једноставне пасусе. Након увоза НЛТК модула, све што треба да урадите је да користите методу „сент_токенизе ()“ на великом текстуалном корпусу. Међутим, токенизатор пункт реченица можда неће правилно открити реченице када постоји сложени пасус који садржи много интерпункцијских знакова, ускличника, скраћеница или понављајућих симбола. Није могуће дефинисати стандардни начин за превазилажење ових проблема. Мораћете да напишете прилагођени код за решавање ових проблема помоћу регуларног израза, манипулације низовима или обуком сопственог модела података уместо да користите уграђени Пункт модел података.

Такође можете покушати да прилагодите постојећи Пункт модел да бисте поправили нетачну токенизацију помоћу неких додатних параметара. Да бисте то урадили, следите службену доступну документацију о токенизацији Пункт овде. Да бисте користили сопствене прилагођене дораде, потребна је мала промена кода:

од нлтк.токенизовати.пункт импорт ПунктСентенцеТокенизер, ПунктПараметерс
пара = "Или је бунар био врло дубок, или је падала врло споро, јер га је било доста
времена док је силазила да је погледа и да се запита шта ће се догодити
следећи. Прво је покушала да спусти поглед и разазна оно чему долази, али било је
сувише мрачно да бих нешто видео; затим је погледала странице бунара и приметила
да су били испуњени ормарима и полицама за књиге; ту и тамо је видела мапе
и слике окачене о клинове. Док је скидала теглу са једне од полица
прошло је; била је означена као 'НАРАНЧАСТА МАРМАЛАДА', али на њено велико разочарање јесте
празна: није волела да баци теглу из страха да ће некога убити, па је успела
ставила га у један од ормара кад је пала крај њега."
пункт_парамс = ПунктПараметерс ()
пункт_парамс.кратица_врста = сет (['Господин', 'Госпођа', 'ЛЛЦ'])
токенизер = ПунктСентенцеТокенизер (пункт_парамс)
жетони = токенизер.токенизовати (пара)
за т у жетонима:
испис (т, "\ н")

Горњи код обавља исти посао као и метода „сент_токенизе ()“. Међутим, сада можете да дефинишете своја правила помоћу уграђених метода и проследите их као аргументе, као што је описано у документацији. На пример, неке скраћенице су додате у горњи код. Ако ове скраћенице прате интерпункција, неће бити разложене у нову реченицу. Уобичајено понашање је употреба тачке или тачке као назнаке краја реченице.

Закључак

НЛТК и његове методе токенизације прилично су ефикасне у токенизацији и обради текстуалних података. Међутим, претходно обучени модели можда неће радити 100% са различитим врстама текстова. Можда ћете морати да побољшате постојеће моделе, обучите и испоручите свој или напишите свој код да бисте поправили аномалије.

Бесплатни и отворени кодни покретачки програми за развој Линук игара
Овај чланак ће обухватити листу бесплатних покретача игара отвореног кода који се могу користити за развој 2Д и 3Д игара на Линуку. Бројни су такви мо...
Водич за сенку Томб Раидера за Линук
Схадов оф тхе Томб Раидер је дванаести додатак серији Томб Раидер - акцијско-авантуристичкој игри коју је створио Еидос Монтреал. И критичари и фанови...
Како појачати ФПС у Линуку?
ФПС је скраћеница за Фрејмова у секунди. Задатак ФПС-а је да мери брзину кадрова у репродукцијама видео записа или играчким перформансама. Једноставни...