piton

NLTK Python Modülünü Kullanarak Metinden Cümleler Nasıl Çıkarılır

NLTK Python Modülünü Kullanarak Metinden Cümleler Nasıl Çıkarılır
Natural Language Toolkit (NLTK), Python için bir dil ve metin işleme modülüdür. NLTK, yerleşik corpora kitaplığını ve geniş sözcüksel veri havuzunu kullanarak birçok farklı dilde mevcut olan metni analiz edebilir, işleyebilir ve belirtebilir. Python, temel olarak dilin çok yönlülüğü ve NLTK gibi faydalı modüllerin mevcudiyeti nedeniyle, veri bilimi ve dil işlemede kullanılan en popüler programlama dillerinden biridir. Bu makale, NLTK kullanarak metin paragraflarından cümlelerin nasıl çıkarılacağını açıklayacaktır. Bu kılavuzdaki kod Python 3 ile test edilmiştir.8.2 ve NLTK 3.4.Ubuntu 20'de 5.04 LTS.

NLTK'yı Linux'a Kurmak

NLTK'yi Ubuntu'ya kurmak için aşağıdaki komutu çalıştırın:

$ sudo apt kurulumu python3-nltk

NLTK paketleri tüm büyük Linux dağıtımlarında mevcuttur. Paketleri kurmak için paket yöneticisinde “NLTK” anahtar kelimesini arayın. Herhangi bir nedenle, dağıtımınızın depolarında NLTK mevcut değilse, aşağıdaki komutu çalıştırarak pip paket yöneticisinden yükleyebilirsiniz:

$ pip kurulumu --user -U nltk

Yukarıdaki komutun çalışması için önce paket yöneticinizden pip yüklemeniz gerekeceğini unutmayın. Bazı dağıtımlarda pip3 olarak adlandırılabilir. Ayrıca, adresinde bulunan ayrıntılı kurulum talimatlarını da takip edebilirsiniz resmi internet sitesi NLTK'nın.

NLTK Kullanarak Bir Paragraftan Cümleleri Çıkarma

Karmaşık noktalama işaretleri ve boşluk içermeyen paragraflar için, önceden eğitilmiş bir modelle birlikte gelen "Punkt belirteci" adı verilen yerleşik NLTK cümle belirtecini kullanabilirsiniz. Metni cümlelere dönüştürmek için kendi eğitimli veri modellerinizi de kullanabilirsiniz. Özel olarak eğitilmiş veri modelleri bu makalenin kapsamı dışındadır, bu nedenle aşağıdaki kod yerleşik Punkt English belirtecini kullanacaktır. Punkt kaynak dosyasını indirmek için aşağıdaki üç komutu arka arkaya çalıştırın ve indirme işleminin bitmesini bekleyin:

$ piton3
$ ithalat nltk
$ nltk.indir('punkt')

Aşağıdaki kod örneğinde “Alice Harikalar Diyarında”dan bir paragraf kullanılacaktır:

nltk'yi içe aktar
para = "Ya kuyu çok derindi ya da çok yavaş düştü, çünkü
aşağı inip ona bakmak ve neler olduğunu merak etmek için bolca zaman
sonra olacak. Önce aşağıya bakıp neye geldiğini anlamaya çalıştı,
ama hiçbir şey göremeyecek kadar karanlıktı; sonra kuyunun kenarlarına baktı ve
dolaplar ve kitaplıklarla dolu olduklarını fark etti; burada ve orada o
kazıklara asılı haritalar ve resimler gördüm. Raflardan birinden bir kavanoz aldı
o geçerken; 'TURUNCU MARMALADE' olarak etiketlendi, ancak onu büyük hayal kırıklığına uğrattı
boştu: birini öldürme korkusuyla kavanozu düşürmeyi sevmiyordu, bu yüzden başardı
yanından düşerken onu dolaplardan birine koymak."
belirteçler = nltk.send_tokenize(para)
jetonlarda t için:
yazdır (t, "\n")

Yukarıdaki kodu çalıştırmak size aşağıdaki çıktıyı verecektir:

Ya kuyu çok derindi ya da çok yavaş düştü, çünkü yeterince zamanı vardı
ona bakmak ve sonra ne olacağını merak etmek için aşağı indi.
Önce aşağıya bakıp neye geldiğini anlamaya çalıştı ama çok karanlıktı
bir şey görmek için; sonra kuyunun kenarlarına baktı ve onların olduğunu fark etti
dolaplar ve kitap raflarıyla dolu; orada burada asılı haritalar ve resimler gördü
mandal üzerine.
Yanından geçerken raflardan birinden bir kavanoz aldı; 'PORTAKAL MALATASI' olarak etiketlendi,
ama büyük hayal kırıklığı için boştu: korkudan kavanozu düşürmeyi sevmiyordu
birini öldürdü, bu yüzden yanından düşerken onu dolaplardan birine koymayı başardı.

Basit paragrafları belirtmek istiyorsanız yerleşik Punkt cümle belirteci iyi çalışır. NLTK modülünü içe aktardıktan sonra tek yapmanız gereken büyük bir metin bütünü üzerinde “sent_tokenize()” yöntemini kullanmaktır. Bununla birlikte, birçok noktalama işareti, ünlem işareti, kısaltma veya tekrar eden sembol içeren karmaşık bir paragraf olduğunda Punkt cümle belirteci cümleleri doğru şekilde algılamayabilir. Bu sorunların üstesinden gelmek için standart bir yol tanımlamak mümkün değildir. Bu sorunların üstesinden gelmek için normal ifade, dize manipülasyonu kullanarak veya yerleşik Punkt veri modelini kullanmak yerine kendi veri modelinizi eğiterek özel kod yazmanız gerekecektir.

Bazı ek parametreler kullanarak yanlış belirteçleştirmeyi düzeltmek için mevcut Punkt modelinde ince ayar yapmayı da deneyebilirsiniz. Bunu yapmak için mevcut resmi Punkt tokenizasyon belgelerini takip edin İşte. Kendi özel ince ayarlarınızı kullanmak için kodda küçük bir değişiklik gereklidir:

nltk'den.tokenize etmek.punkt import PunktSentenceTokenizer, PunktParameters
para = "Ya kuyu çok derindi ya da çok
Etrafına bakmak ve ne olacağını merak etmek için aşağı inerken
Sonraki. Önce aşağıya bakıp neye geldiğini anlamaya çalıştı, ama öyleydi
hiçbir şey göremeyecek kadar karanlık; sonra kuyunun kenarlarına baktı ve fark etti
dolaplar ve kitaplıklarla dolu olduklarını; burada ve orada haritalar gördü
ve mandallara asılan resimler. Raflardan birinden bir kavanoz aldı
geçti; 'TURUNCU MARMALADE' olarak etiketlendi, ancak onu büyük hayal kırıklığına uğrattı
boş: birini öldürme korkusuyla kavanozu düşürmeyi sevmiyordu, bu yüzden
yanından düşerken dolaplardan birine koy."
punkt_params = PunktParameters()
punkt_params.abrev_types = set(['Bay', 'Bayan', 'LLC'])
belirteç = PunktSentenceTokenizer(punkt_params)
belirteçler = belirteç.tokenize(para)
jetonlarda t için:
yazdır (t, "\n")

Yukarıdaki kod, “sent_tokenize()” yöntemiyle aynı işi yapıyor. Ancak, artık yerleşik yöntemleri kullanarak kendi kurallarınızı tanımlayabilir ve bunları belgelerde açıklandığı gibi bağımsız değişkenler olarak iletebilirsiniz. Örneğin, yukarıdaki koda bazı kısaltmalar eklenmiştir. Bu kısaltmalardan sonra noktalama işaretleri gelirse, yeni bir cümleye bölünmezler. Normal davranış, bir cümlenin sonunun göstergesi olarak nokta veya nokta kullanmaktır.

Sonuç

NLTK ve belirteçleştirme yöntemleri, metin verilerini belirteçleştirme ve işleme konusunda oldukça verimlidir. Ancak, önceden eğitilmiş modeller farklı metin türleri ile %100 çalışmayabilir. Mevcut modelleri geliştirmeniz, kendinizinkini eğitmeniz ve tedarik etmeniz veya anormallikleri düzeltmek için kendi kodunuzu yazmanız gerekebilir.

How to Install and Play Doom on Linux
Introduction to Doom The Doom Series originated in the 90s after the release of the original Doom. It was an instant hit and from that time onwards th...
Vulkan for Linux Users
With each new generation of graphics cards, we see game developers push the limits of graphical fidelity and come one step closer to photorealism. But...
OpenTTD vs Simutrans
Creating your own transport simulation can be fun, relaxing and extremely enticing. That's why you need to make sure that you try out as many games as...