Doğal Dil İşleme +1 : 4.Python Doğal Dil İşleme Kütüphaneleri

word cloud

Doğal Dil İşleme serimizin 4. yazısında NLP için kullanılan kütüphaneleri tanıtacağız. Doğal Dil İşleme aslında çok farklı alanlarda çok farklı sorunlara çözüm üreten bir alandır. Kütüphanelerin tanıtımında da, kütüphaneler arasındaki kullanım farklarında bunlara şahit olacağız. En sık kullanılan kütüphaneleri nasıl kuracağımız, kurulum işlemi için gerekli adımları birlikte göreceğiz.

Neden Kütüphaneler?

Yazılım dünyasındaki belki de her kütüphane, onu kullananların işini daha da kolaylaştırmak için varlar. Doğal Dil İşleme için de aynısı geçerli. Eskiden, üstün matematik bilgisine sahip, dil bilimi konusunda bilgili ve makine öğrenmesinde deneyimli kişiler bu tür konularda bir şeyler yapabilirken, artık bu yazıda bahsedilen kütüphaneler gibi araçların yardımıyla belirli düzeyde herkes bir şeyler yapabilmekte, alanın gelişimi, toplumsal fayda gibi konulara destek olabilmekteler.

Neden Python?

Basit söz dizimi, şeffaf semantiği, açık kaynak kodlu olması, topluluk desteği gibi bir çok sebep Python dilini seçmek için yeter de artar. Ancak Doğal Dil İşleme alanında tercih etmemiz için başka sebeplere ihtiyacımız var. Python, makine öğrenimi ve derin öğrenme gibi NLP üzerinde uygulayacağımız işlemler ve kullanabileceğimiz araçlar için biçilmiş kaftan. Çok sayıda teknoloji ile uyum içinde çalışabilmesi ve öğrenim kolaylığı onu diğer dillerden bir adım öne çıkarıyor.

Python ve kütüphaneleri geldiği bu son noktada geliştiricilere çok fazla seçenek sunuyorlar. Hadi bunların birkaçına göz atalım.

1.NLTK
(Natural Language Toolkıt)[Doğal Dil Araç Seti]

Doğal dil işleme alanına bir miktar giriş yapan hatta bu alanı duyan çok sayıda kişinin bildiği tek kütüphane varsa o da NLTK’dır. İngilizce dili için geliştirilmiş sembolik ve istatistiksel bir NLP kütüphanesidir. Dil işlemeye girişte, kullanımı gayet pratiktir. NLTK ile birlikte cümle tespiti, tokenleştirme, kök bulma gibi NLP’nin temel işlevleri çok kolay bir şekilde kullanıma sunulur. WordNet, SemCor, Web Text Corpus gibi 50’den fazla corpora’ya sahiptir.

Kütüphane, Pennsylvania Üniversitesi’nde Steven Bird ve Edward Loper tarafından geliştirilmiştir.

Dipnot: Corpora, corpus’un çoğuludur. Corpus ise metinsel veri kümesine verilen isimdir..

Pip ile kurulum

Kodu ile en son sürüm pip’i indirebilirsiniz

Conda ile kurulum

Daha fazlası için: https://www.nltk.org/book

Dipnot: Yazıdaki tüm kurulumları, eğer jupyter notebook’unuza yapıyorsanız, notebook satırında, pip yerine pip3 demeniz yeterli olacaktır.

2.Spacy

Spacy görsel

SpaCy doğal dil işleme dünyasının son teknolojilerindendir. Python’a bağlı ama C programlama diline benzer bir söz dizimi olan, Python’dan daha hızlı olması için tasarlanmış Cython dili ile yazıldığı için çok hızlıdır. Bu sebeple büyük hacimli metinlerde çalışmanıza olanak sağlar. SpaCy şuan piyasada ki en hızlı söz dizimi ayrıştırıcısıdır. 49 dilde tokenization işlemini desteklemektedir. Genellikle varlık ismi tanıma (NER) projelerinde kullanılan bu kütüphane derin öğrenme modellemeleri ile entegre çalışabilir.

Pip ile kurulum

Kodu ile en son sürüm pip’i indirebilirsiniz.

Kodu ile de spacy kütüphanesini bilgisayarınıza kurabilirsiniz.

Conda ile kurulum

Gerekenler

Bu kütüphaneyi kurarken karşılaşılan problemlerin çoğunluğu pip versiyonundan kaynaklanmaktadır. Son sürüm pip kullandığınızdan emin olun. Bir diğer sorun ise spaCy kütüphanesinden önce Numpy kütüphanesini kurmalısınız.

Daha fazlası için: https://spacy.io/api/do

3.GENSIM

Gensim vektör uzayı modelleme ve konu modellemede kullanılan araçlara sahip bir Python kütüphanesidir. Örneğin 2 gazete haberi arasında ki anlamsal bütünlüğü yakalamak için kullanabilirsiniz. Numpy kütüphanesinden de yardım ile elde edilmiş inanılmaz bir bellek kullanım optimizasyonuna ve işlem hızına sahiptir. Gözetimsiz öğrenme için de sıklıkla kullanılmaktadır.

Pip ile Kurulum

Gensim’in son versiyonunu kullanmak için aşağıda ki kodu kullanabilirsiniz.

Conda ile kurulum

Gerekenler

Gensim kütüphanesini indirmeden önce numpy ve scipy kütüphanesini kesinlikle kurmalısınız.

Daha fazlası için: https://radimrehurek.com/gensim/auto_examples/index.html

4.TORCHTEXT

Pytorch - Torchtext

PyTorch, doğal dil işleme görevlerini gerçekleştirmek için zengin yeteneklere sahip popüler ve güçlü bir derin öğrenme kütüphanesidir. Torchtext ise PyTorch için, doğal dil işleme (NLP) araştırmasını ve makine öğrenimini(ML) geliştirmeyi hızlandırmak için tasarlanmış, yaygın olarak kullanılan veri kümeleri ve temel ön işleme ardışık düzenleri gibi metin verileriyle çalışmak için temel bileşenleri sağlayan bir alan kütüphanesidir.

Yükleme ve örnek uygulama için : https://www.pluralsight.com/guides/natural-language-processing-with-pytorch

Daha fazlası için: https://github.com/pytorch/text/tree/master/torchtext

https://pytorch.org/text/stable/index.html

5.pattern

Apiler'İ içeriyor

Tüm kütüphaneleri incelediğimizde belki de ne çok dikkatimizi çeken kütüphane Pattern oldu. Diğerlerinden farklı olarak, dil işlemenin yanı sıra veri kazıma ve makine öğrenmesinin bazı modelleri ile işlem yapabilmekte. Bunları ne ölçüde yapabildiğini ileriki yazılarımızda konu edineceğiz ancak, bu kadar zengin bir kütüphane olması iştah kabartıyor.

Doğal Dil İşleme: Simgeleştirme, kök bulma, POS etiketleme, duyarlılık analizi vb. görevleri gerçekleştirebilir.

Veri Madenciliği: Twitter, Facebook, Wikipedia vb. sitelerden veri çekmek için API’ler içerir.

Makine Öğrenimi: Sınıflandırma, regresyon ve kümeleme görevleri için kullanılabilen SVM, KNN ve perceptron gibi makine öğrenimi modellerini içerir.

Pip ile Kurulum

Conda ile kurulum

Daha fazlası için: https://github.com/clips/pattern

Örnek uygulamalar için:  https://www.kisa.link/Oszd

6.Textblop

TextBlob, NLTK’nın bir tür uzantısıdır. TextBlob aracılığıyla NLTK’nın birçok işlevine basitleştirilmiş bir şekilde erişebilirsiniz ve TextBlob, Pattern kütüphanesindeki bazı işlevleri kullanmanıza da olanak sağlar.

API’leri aracılığıyla diğer programlama dilleriyle sorunsuz entegrasyon sunar. Standart NLP işlemlerini gerçekleştirmek için aceleniz varsa, Textblob kurtarıcınız olabilir. Öğrenme eğrisini yeni öğrenciler için nispeten daha yumuşak hale getirmek için kapsamlı öğreticilerle birlikte gelir.

Daha fazlası için: https://textblob.readthedocs.io/en/dev/

http://rwet.decontextualize.com/book/textblob/

7.wordcloud

Kelime Bulutu, her kelimenin boyutunun sıklığını veya önemini belirttiği metin verilerini temsil etmek için kullanılan bir veri görselleştirme tekniğidir.

Önemli metinsel veri noktaları bir kelime bulutu kullanılarak vurgulanabilir. Kelime bulutları, sosyal ağ web sitelerinden gelen verileri analiz etmek için yaygın olarak kullanılmaktadır.

Örnek uygulamalar için: https://dev.to/peritract/wordclouds-in-python-562e

8.corenLP

CoreNLP görsel

Stanford üniversitesinde, Java programlama dili ile geliştirilmiş bir doğal dil işleme kütüphanesidir. Dilbilimsel analizler araçlarını hızlı ve etkili bir şekilde kullanmak için tasarlanmıştır. Duygu analizinde, Varlık İsim Tanıma (NER) projelerinde, POS tagging işlemlerinde ve daha birçok projede kullanılmak üzere Stanford üniversitesi tarafından geliştirilmiş araçlarla donatılmıştır.

9.FairSeq

Facebook AI Research tarafından geliştirilmiş bir framework’tür. Makine çevirisi, metin özetleme, dil modelleme, metin oluştur v.b. diğer projeler için geliştirilmiş bir araç setidir. CNN, RNN gibi modellemeleri içermektedir.

10.Fast.ai

Fast.ai fazla teknik bilgiye sahip olmadan deep learning projeleri geliştirmek için tasarlanmıştır. Daha doğrusu geliştiricisi olan Jeremy Howard Deep Learning for Coders with Fastai and PyTorch isimli kitabında böyle bahsetmiştir. Kolay kullanımı vardır. Bunun da ötesinde ücretsiz kurslar bulabilirsiniz. Doğal dil işlemede veri ön işleme, modelleme araçlarına sahiptir.

11.rasa

rasa görsel

Rasa ses ve metin tabanlı konuşmaları otomatikleştirmek için geliştirilmiş açık kaynak kodlu bir makine öğrenmesi kütüphanesidir. Facebook, Slack, Telegram gibi uygulamalarda chatbot geliştirebilirsiniz.

Dahası için: https://pypi.org/project/rasa/#:~:text=Rasa%20is%20an%20open%20source,Slack

12.Hugging Face

Hugging Face kullanım

Hugging Face transformers paketi, çeşitli doğal dil işleme (NLP) görevleri için yararlı olan, önceden eğitilmiş modeller sunan, son derece popüler bir Python kitaplığıdır. Daha önce yalnızca PyTorch’u destekliyordu, ancak 2019’un sonlarından itibaren TensorFlow 2 de destekleniyor. Kütüphane, Doğal Dil Çıkarımından (NLI) Soru-Cevaplamaya kadar birçok görev için kullanılabilirken, metin sınıflandırması en popüler ve pratik kullanım örneklerinden biri olmaya devam ediyor.

Daha fazlası için: https://huggingface.co/transformers/

https://towardsdatascience.com/text-classification-with-hugging-face-transformers-in-tensorflow-2-without-tears-ee50e4f3e7ed

 

Türkçe İçin Geliştirilen Kütüphaneler

Türkçe kütüphaneleri araştırırken kütüphanelerin neler yaptığını bulmakta gerçekten zorlandık. Bu konuda kütüphane oluşturmaya çalışanların daha açıklayıcı olmasını temenni ediyoruz.

13.zemberek

Zemberek, açık kaynak kodlu Türkçe Doğal dil işleme kütüphanesi ve OpenOffice, LibreOffice eklentisidir. Tamamen Java ile geliştirilen kütüphane, yazım denetimi, hatalı kelimeler için öneri, heceleme, deascifier, hatalı kodlama temizleme gibi işlevlere sahiptir. [vikipedi]

Daha fazlası için : https://github.com/cbilgili/zemberek-nlp-server

14.Kefir

Kefir, Türk dilleri ve fonolojide belki Fince ve Macarca için doğal bir dil işleme kitidir.

Daha fazlası için: https://pypi.org/project/kefir/

15.Tspell

Tspell, Türkçe dili ile ilgili yazılım uygulamalarında kullanılmak için gerekli araçları içeren bir kütüphane oluşturma amacı ile başlatılmış bir projedir. Diller, özellikle Türkçe konusunda yazılım alanında pek çok çalışma yürütülmektedir.

Ancak Doğal Dil İşleme de Türkçe ile ilgili çalışmaların çok yeterli olduğu söylenemez. Tspell ile amaçlanan bu konudaki açığı yazılımı kullanıcılara açık kodlu olarak sunarak bi nebze olsun kapatmaktır.

Dahası: http://tspell.sourceforge.net/hakkinda.html

16. TRNLP

Araştırırken bulduğumuz başka bir NLP Türkçe kütüphanesi. Kök,gövde bulma, metin parçalama, morfolojik analiz gibi konulardaki çalışmaları buradan da yaparak karşılaştırma yapabilirsiniz.

Dahası: https://github.com/brolin59/trnlp

Bunlara ek olarak firmaların kendi oluşturdukları kütüphanelerde mevcut.

Diğer Kütüphaneler

Yapay zekâ ve veri bilimi dünyasının bir parçası diyebileceğimiz doğal dil işleme ile ilgili kütüphanelerden bahsedip,  makine öğrenmesi dünyasının en popüler kütüphanelerinden bahsetmemek olmaz. Alanın en bilinen kütüphanesi Sci-kit learn, doğal dil işleme projelerinde sık sık kullanırken, Tensorflow, Keras, Pytorch gibi derin öğrenme kütüphaneleri de yöntemlerin ve imkanların gelişmesi ile doğal dil işlemeyi bir üst boyuta çıkarmak için kullanılan kütüphanler arasında. Matplotlib, Seaborn ve Bokeh gibi görselleştirme kütüphaneleri ile de çıktılarınızı görselleştirebilirsiniz.

 

Burada bahsedilmeyen daha birçok kütüphane var. Ancak şimdilik bu kadarıyla yetiniyoruz. İleride lazım oldukça ve istek geldikçe eklemeler yapmak isteriz. Kütüphane kurulumlarındaki hatalar ve farklı kütüphanelerin karşılaştırılması gibi konulara ilerleyen zamanlarda değineceğiz. İlerleyen yazılarda görüşmek üzere…

Yazarlar: Mustafa Selim ÖZEN, Saygın YILDIZ

Serinin Diğer Yazıları;
1. Doğal Dil İşlemeye Giriş
2. Doğal Dil İşlemenin Arka Planı, Zorlukları ve Daha Fazlası…
3. Doğal Dil İşleme ve Python’da Stringler

Kaynaklar:

https://www.youtube.com/watch?v=XHyASP49ses&t=25s

https://towardsdatascience.com/python-libraries-for-natural-language-processing-be0e5a35dd64

https://sunscrapers.com/blog/8-best-python-natural-language-processing-nlp-libraries/#5_spaCy

https://towardsdatascience.com/top-nlp-libraries-to-use-2020-4f700cdb841f

https://tr.wikipedia.org/wiki/Zemberek_(yaz%C4%B1l%C4%B1m)

https://www.upgrad.com/blog/python-nlp-libraries-and-applications/

https://opensource.com/article/19/3/natural-language-processing-tools

https://www.geeksforgeeks.org/top-10-natural-language-programming-libraries/