NLTK'yı Linux'a Kurmak
NLTK'yi Ubuntu'ya kurmak için aşağıdaki komutu çalıştırın:
$ sudo apt kurulumu python3-nltkNLTK 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 nltkYukarı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 aktarpara = "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, PunktParameterspara = "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.