Инсталиране на NLTK в Linux
За да инсталирате NLTK в Ubuntu, изпълнете командата по-долу:
$ sudo apt инсталира python3-nltkNLTK пакетите са налични във всички основни дистрибуции на Linux. Потърсете ключовата дума “NLTK” в мениджъра на пакети, за да инсталирате пакетите. Ако по някаква причина NLTK не е наличен в хранилищата на вашата дистрибуция, можете да го инсталирате от мениджъра на пакети pip, като изпълните командата по-долу:
$ pip install --user -U nltkОбърнете внимание, че първо ще трябва да инсталирате pip от вашия мениджър на пакети, за да работи горната команда. При някои дистрибуции това може да се нарече pip3. Можете също да следвате подробни инструкции за инсталиране, налични на официален уебсайт на НЛТК.
Извличане на изречения от абзац с помощта на NLTK
За абзаци без сложни пунктуации и интервали можете да използвате вградения токенизатор на изречения NLTK, наречен „Punkt tokenizer“, който се доставя с предварително обучен модел. Можете също да използвате свои обучени модели на данни, за да маркирате текста в изречения. Обучени по поръчка модели на данни са извън обхвата на тази статия, така че кодът по-долу ще използва вградения Punkt английски токенизатор. За да изтеглите файла с ресурси Punkt, изпълнете последователно следните три команди и изчакайте изтеглянето да приключи:
$ python3$ внос nltk
$ nltk.изтегляне ('punkt')
Параграф от „Приключенията на Алиса в страната на чудесата“ ще бъде използван в примерния код по-долу:
внос nltkpara = "Или кладенецът е бил много дълбок, или е паднала много бавно, тъй като е имала
достатъчно време, докато тя слизаше, за да се огледа за нея и да се чуди какво става
да се случи по-нататък. Първо се опита да погледне надолу и да разбере към какво идва,
но беше твърде тъмно, за да се види нещо; след това тя погледна отстрани на кладенеца и
забелязали, че са пълни с шкафове и рафтове за книги; тук-там тя
видях карти и картини, закачени на колчета. Тя свали буркан от един от рафтовете
като минавала; тя беше етикетирана като "ОРАНЖЕВ МАРМАЛАД", но за нейно голямо разочарование
беше празно: тя не обичаше да пуска буркана от страх да не убие някого, така че успя
да го сложи в един от шкафовете, когато тя пада покрай него."
жетони = nltk.sent_tokenize (параграф)
за t в символи:
отпечатване (t, "\ n")
Изпълнението на горния код ще ви даде следния изход:
Или кладенецът е бил много дълбок, или тя е паднала много бавно, тъй като е имала достатъчно време катотя слезе да се огледа за нея и да се чуди какво ще се случи по-нататък.
Първо се опита да погледне надолу и да разбере към какво идва, но беше твърде тъмно
да видиш нещо; след това тя погледна отстрани на кладенеца и забеляза, че са
пълни с шкафове и рафтове за книги; тук-там тя виждаше обесени карти и снимки
върху колчета.
Тя свали буркан от един от рафтовете, докато минаваше; то бе означено с „ORANGEMARMALADE“,
но за нейно голямо разочарование беше празно: тя не обичаше да пуска буркана от страх
убивайки някого, затова успя да го сложи в един от шкафовете, когато тя падна покрай него.
Вграденият токенизатор Punkt изречение работи добре, ако искате да токенизирате прости абзаци. След импортирането на модула NLTK, всичко, което трябва да направите, е да използвате метода “sent_tokenize ()” в голям текстов корпус. Токенизаторът на изречения Punkt обаче може да не открие правилно изречения, когато има сложен абзац, който съдържа много препинателни знаци, удивителни знаци, съкращения или повтарящи се символи. Не е възможно да се определи стандартен начин за преодоляване на тези проблеми. Ще трябва да напишете персонализиран код за справяне с тези проблеми с помощта на регулярни изрази, манипулиране на низове или чрез обучение на собствен модел на данни, вместо да използвате вградения Punkt модел на данни.
Можете също така да опитате да промените съществуващия модел Punkt, за да коригирате неправилна токенизация, като използвате някои допълнителни параметри. За целта следвайте официалната налична документация за токенизация на Punkt тук. За да използвате собствените си персонализирани настройки, е необходима малка промяна в кода:
от nltk.токенизирам.punkt import PunktSentenceTokenizer, PunktParameterspara = "Или кладенецът е бил много дълбок, или е падала много бавно, тъй като е имала много
на времето, когато тя слезе, за да се огледа за нея и да се чуди какво ще се случи
следващия. Първо се опита да погледне надолу и да разбере до какво идва, но беше
твърде тъмно, за да се види нещо; после тя погледна отстрани на кладенеца и забеляза
че бяха пълни с шкафове и рафтове за книги; тук-там тя виждаше карти
и снимки, закачени на колчета. Тя свали буркан от един от рафтовете
преминал; тя беше етикетирана „ОРАНЖЕВ МАРМАЛАД“, но за нейно голямо разочарование беше
празно: тя не обичаше да пуска буркана от страх да не убие някого, така че успя
сложи го в един от шкафовете, когато тя падна покрай него."
punkt_params = PunktParameters ()
punkt_params.shorv_types = set (['Mr', 'Mrs', 'LLC'])
tokenizer = PunktSentenceTokenizer (punkt_params)
жетони = токенизатор.токенизирам (параграф)
за t в символи:
отпечатване (t, "\ n")
Кодът по-горе върши същата работа като метода “sent_tokenize ()”. Сега обаче можете да дефинирате свои собствени правила, като използвате вградени методи и да ги предадете като аргументи, както е описано в документацията. Например, някои съкращения са добавени към горния код. Ако тези съкращения са последвани от пунктуация, те няма да бъдат разделени на ново изречение. Нормалното поведение е да се използва точка или точка като индикация за края на изречението.
Заключение
NLTK и неговите методи за токенизация са доста ефективни при токенизиране и обработка на текстови данни. Предварително обучените модели обаче може да не работят на 100% с различни видове текстове. Може да се наложи да подобрите съществуващите модели, да обучите и доставите свой собствен, или да напишете свой собствен код, за да коригирате аномалии.