Markov Chain Modeling with Texts (TR) - Metin İle Markov Zinciri Modellemesi
utopian-io·@tolgahanuzun·
0.000 HBDMarkov 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
```bash
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
```text
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
```Python3
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
<br /><hr/><em>Posted on <a href="https://utopian.io/utopian-io/@tolgahanuzun/markov-chain-modeling-with-texts-tr-metin-ile-markov-zinciri-modellemesi">Utopian.io - Rewarding Open Source Contributors</a></em><hr/>