Markov Chain Modeling with Texts (TR) - Metin İle Markov Zinciri Modellemesi
For the english readers; I would like to talk about the markov chain package and its use I have created for use in the finishing project. I will touch on the issues related to how it was set up and how it was run.
Markovch Paketi Hakkında
Öncelikle Markov zinciri konusunda teorik bir bilgiye sahip olmaniz bekliyor. Bu bilgi olmadan bu paketin amacını anlamanız zor olabilir.
Proje Python3 ile yazılmıştır.
Kaynak kodunu incelemek isteyenler için orta seviyede bir Python bilgisine sahip olmasını tavsiye ederim. Projeye katkıda bulunmak isterseniz ayrıca sevinirim.
Metinler ile Markov Modellenmesi
Bitirme projesi için ortaya çıkan Markovch paketi; elde bulunan veriler ile belleksiz bir şekilde olasikliklar kümesini oluşturur. Bu küme ile bir şablon yaratılır. Yaratılan şablon graph teoremi ile resim haline getirilir.
Eldeki verilerin büyüklüğü ile orantılı olarak tahmin teoremi oluşturulur. Yani elimdeki 100 günlük veri ile markovch paketi, diğer günlerde neler yapacağımı tahmin edecek bir içerik üretir.
Markovch nasıl kurulur?
Python3 ile yazılmış olan bu paket, pip ile sisteminize kurulabiliyor. Ancak kurulum için virtualenv yapısını kullanmanızı tavsiye ederim. Detaylarına girmeden aşağidaki formatta kurulumu yapabilirsiniz.
- Terminal
mkdir project
cd project
virtualenv -p python3 ./project_shell
source project_shell/bin/activate
pip install markovch
Basit bir örnek
Elimde aşağidaki gibi bir veri kümesi bulunuyor. Bu veri kümesini app.py adındaki dosyaya şu şekilde tanımlıyorum.
- data_tr.txt
Merhaba ali günaydın okula ne zaman geliyorsun?
Merhaba burak günaydın işler nasıl?
Merhaba anıl satranç nasıl gidiyor?
Hey, satranç turnuvasina nasıl gidiyor?
- app.py
from markovch import markov
import pprint
diagram = markov.Markov('./data_tr.txt')
pprint.pprint(diagram.result_list(50))
Çıktı şu şekilde oluyor.
Biraz süsleyelim mi?
Networkx ve gygraphviz paketleri ile yukarıdaki yapıyı daha gelişmiş bir hale getirmek mümkün. Şuan bunun kodunu tam olarak paylaşmasamda ekran görüntüsünü paylaşarak ortaya çikan yapıyı daha anlaşılır hale getirmeye çalışayım.
Neler var bu kütüphanede?
Yukarıdaki kodda paylasilan diagram objesinden örnek verelim;
diagram.data
ile dosyadan alınan verileri görüntüleyebiliriz.
[['Merhaba', 'ali', 'günaydın', 'okula', 'ne', 'zaman', 'geliyorsun?'], ['Merhaba', 'burak', 'günaydın', 'işler', 'nasıl?'], ['Merhaba', 'anıl', 'satranç', 'nasıl', 'gidiyor?'], ['Hey,', 'satranç', 'turnuvasina', 'nasıl', 'gidiyor?']]
diagram.markov
ile elimizdeki veri kümesinin olasılıklarını görebiliyoruz;
{'Hey,': ({'satranç'}, array([1.])),
'Merhaba': ({'anıl', 'burak', 'ali'},
array([0.33333333, 0.33333333, 0.33333333])),
'ali': ({'günaydın'}, array([1.])),
'anıl': ({'satranç'}, array([1.])),
'burak': ({'günaydın'}, array([1.])),
'geliyorsun?': ({'Merhaba'}, array([1.])),
'gidiyor?': ({'Merhaba', 'Hey,'}, array([0.5, 0.5])),
'günaydın': ({'işler', 'okula'}, array([0.5, 0.5])),
'işler': ({'nasıl?'}, array([1.])),
'nasıl': ({'gidiyor?'}, array([1.])),
'nasıl?': ({'Merhaba'}, array([1.])),
'ne': ({'zaman'}, array([1.])),
'okula': ({'ne'}, array([1.])),
'satranç': ({'turnuvasina', 'nasıl'}, array([0.5, 0.5])),
'turnuvasina': ({'nasıl'}, array([1.])),
'zaman': ({'geliyorsun?'}, array([1.]))}
diagram.uniqe_data
ile veri kümesindeki tekrarsız verileri görüntüleyebiliyoruz.
{'nasıl?', 'anıl', 'gidiyor?', 'zaman', 'nasıl', 'burak', 'turnuvasina', 'satranç', 'Merhaba', 'günaydın', 'ali', 'Hey,', 'işler', 'geliyorsun?', 'ne', 'okula'}
diagram.state
ile bulunduğumuz durumu görebiliyoruz.
Kaynaklar
https://github.com/tolgahanuzun/markovch
Posted on Utopian.io - Rewarding Open Source Contributors
güzel proje github'dan starladım yakın zamanda inceliyip pull atmaya çalışacağım
Tesekkur ederim :)
Basarilar 👍
Emek verilmiş bir çalışma olmuş eline sağlık.
Thank you for the contribution. It has been approved.
You can contact us on Discord.
[utopian-moderator]
This is my first contribution. It was a great motivation for me, thank you. @gerginho