Piton

Hogyan lehet kibontani a mondatokat a szövegből az NLTK Python modul használatával

Hogyan lehet kibontani a mondatokat a szövegből az NLTK Python modul használatával
A Natural Language Toolkit (NLTK) a Python nyelv- és szövegfeldolgozó modulja. Az NLTK elemezheti, feldolgozhatja és tokenizálhatja a különböző nyelveken elérhető szöveget a beépített korpuszkönyvtár és a nagy lexikális adatok segítségével. A Python az egyik legnépszerűbb programozási nyelv, amelyet az adattudományban és a nyelvfeldolgozásban használnak, elsősorban a nyelv sokoldalúságának és az NLTK-hoz hasonló hasznos modulok elérhetőségének köszönhetően. Ez a cikk elmagyarázza, hogyan lehet az NLTK segítségével kivonni a mondatokat a szöveges bekezdésekből. Az ebben az útmutatóban szereplő kódot a Python 3-tal tesztelték.8.2 és az NLTK 3.4.5 az Ubuntu 20-on.04 LTS.

Az NLTK telepítése Linux alatt

Az NLTK telepítéséhez az Ubuntuban futtassa az alábbi parancsot:

$ sudo apt telepítse a python3-nltk fájlt

Az NLTK csomagok minden nagyobb Linux disztribúcióban elérhetőek. A csomagok telepítéséhez keresse meg az „NLTK” kulcsszót a csomagkezelőben. Ha valamilyen oknál fogva az NLTK nem érhető el a terjesztés tárházaiban, telepítheti a pip csomagkezelőből az alábbi parancs futtatásával:

$ pip install --user -U nltk

Ne feledje, hogy a fenti parancs működéséhez először telepítenie kell a pipot a csomagkezelőből. Egyes disztribúcióknál pip3-nak hívhatjuk. Kövesse az oldalon elérhető részletes telepítési utasításokat is hivatalos honlapján az NLTK.

Mondatok kivonása egy bekezdésből az NLTK használatával

Összetett írásjelek és szóköz nélküli bekezdések esetén használhatja a beépített NLTK mondatjelzőt, az úgynevezett „Punkt tokenizátort”, amely egy előre betanított modellhez tartozik. Használhatja saját képzett adatmodelljeit is a szöveg mondattá kódolásához. A személyre szabottan képzett adatmodellek nem tartoznak a cikk hatálya alá, ezért az alábbi kód a beépített Punkt English tokenizálót használja. A Punkt erőforrás fájl letöltéséhez futtassa egymás után a következő három parancsot, és várja meg a letöltés befejezését:

$ python3
$ import nltk
$ nltk.letöltés ('punkt')

Az „Alice csodaországbeli kalandjai” című bekezdést az alábbi kódmintában használjuk:

import nltk
para = "Vagy nagyon mély volt a kút, vagy nagyon lassan zuhant, mert volt
rengeteg idő, amikor lement, hogy ránézzen és kíváncsi legyen, mi történik
hogy legközelebb megtörténjen. Először megpróbálta lenézni és megtudni, mire készül,
de túl sötét volt ahhoz, hogy bármit is láthassak; aztán a kút oldalaira nézett, és
észrevette, hogy tele vannak szekrénnyel és könyvespolcokkal; itt-ott ő
csapokra akasztott térképeket és képeket látott. Levett egy tégelyt az egyik polcról
ahogy elhaladt; 'ORANGE MARMALADE' felirat volt, de nagy csalódására
üres volt: nem szeretett ledobni az üveget, mert félt valakit, ezért sikerült
hogy az egyik szekrénybe tegye, amint elhaladt mellette."
tokenek = nltk.sent_tokenize (para)
a t jelzőkben:
nyomtatás (t, "\ n")

A fenti kód futtatásával a következő kimenetet kapja:

Vagy nagyon mély volt a kút, vagy nagyon lassan zuhant, mert rengeteg ideje volt
lement, hogy körülnézzen, és azon tűnődjön, mi fog történni ezután.
Először megpróbált lenézni, és megtudni, mire készül, de túl sötét volt
bármit látni; aztán a kút oldalaira nézett, és észrevette, hogy azok vannak
tele szekrénnyel és könyvespolcokkal; itt-ott térképeket és képeket látott függeszteni
csapoknál.
Elhaladt egy korsót az egyik polcról; „ORANGEMARMALADE” felirattal,
de nagy csalódására üres volt: nem szeretett leejteni az edényt, mert félt
megölt valakit, így sikerült betennie az egyik szekrénybe, amint elesett mellette.

A beépített Punkt mondat tokenizer jól működik, ha egyszerű bekezdéseket akarunk tokenizálni. Az NLTK modul importálása után csak annyit kell tennie, hogy a „sent_tokenize ()” metódust használja egy nagy szöveges korpuszon. Előfordulhat azonban, hogy a Punkt mondatjelző nem ismeri fel megfelelően a mondatokat, ha van egy összetett bekezdés, amely sok írásjelet, felkiáltójelet, rövidítést vagy ismétlődő szimbólumot tartalmaz. Ezeknek a kérdéseknek a leküzdésére nem lehet szabványos módszert meghatározni. Egyéni kódot kell írnia ezeknek a problémáknak a kezelésére regex, sztring manipuláció vagy saját adatmodell képzésével a beépített Punkt adatmodell használata helyett.

Megpróbálhatja módosítani a meglévő Punkt modellt a helytelen tokenizálás kijavításához néhány további paraméter használatával. Ehhez kövesse a rendelkezésre álló hivatalos Punkt tokenizációs dokumentációt itt. Saját egyéni módosításainak használatához a kódot kissé módosítani kell:

az nltk-ból.tokenize.punkt import PunktSentenceTokenizer, PunktParameters
para = "Vagy nagyon mély volt a kút, vagy nagyon lassan zuhant, mert rengeteg volt
az időből, amikor lement, hogy ránézzen és kíváncsi legyen, mi fog történni
következő. Először megpróbálta lenézni és megtudni, mire készül, de az volt
túl sötét ahhoz, hogy bármit is láthasson; aztán a kút oldalaira nézett, és észrevette
hogy tele voltak szekrénnyel és könyvespolcokkal; itt-ott térképeket látott
és csapokra akasztott képek. Mialatt levett egy korsót az egyik polcról
átment; „NARANCSMARÁLADE” feliratú volt, de nagy csalódására
üres: nem szeretett ledobni az edényt, mert félt valakit, ezért sikerült
betette az egyik szekrénybe, amikor elesett mellette."
punkt_params = PunktParameters ()
punkt_params.short_types = set (['Mr', 'Mrs', 'LLC'])
tokenizer = PunktSentenceTokenizer (punkt_params)
tokenek = tokenizer.tokenize (para)
a t jelzőkben:
nyomtatás (t, "\ n")

A fenti kód ugyanazt a munkát végzi, mint a „sent_tokenize ()” módszer. Most azonban beépített módszerekkel definiálhatja saját szabályait, és argumentumként továbbíthatja őket, amint azt a dokumentáció leírja. Például néhány rövidítést felvettek a fenti kódba. Ha ezeket a rövidítéseket írásjelek követik, akkor nem bontják őket új mondattá. A szokásos viselkedés egy pont vagy pont használata a mondat végének jelzésére.

Következtetés

Az NLTK és annak tokenizálási módszerei meglehetősen hatékonyak a szöveges adatok tokenezésében és feldolgozásában. Előfordulhat azonban, hogy az előre kiképzett modellek nem működnek 100% -ban különböző típusú szövegekkel. Lehetséges, hogy fejlesztenie kell a meglévő modelleket, ki kell képeznie és be kell nyújtania a sajátját, vagy saját kódot kell írnia a rendellenességek kijavítására.

A WinMouse segítségével testre szabhatja és javíthatja az egérmutató mozgását a Windows PC-n
Ha szeretné javítani az egérmutató alapértelmezett funkcióit, használjon ingyenes programokat WinMouse. További funkciókat kínál, amelyek segítenek ab...
Az egér bal oldali gombja nem működik a Windows 10 rendszeren
Ha dedikált egeret használ laptopjával vagy asztali számítógépével, de a az egér bal gombja nem működik a Windows 10/8/7 rendszeren valamilyen oknál f...
A kurzor véletlenszerűen ugrik vagy mozog, miközben gépel a Windows 10-ben
Ha úgy találja, hogy az egér kurzor önállóan, automatikusan, véletlenszerűen ugrik vagy mozog, miközben gépel Windows laptopba vagy számítógépbe, akko...