Ağu 262016
 
1.201 views

Eğitilmiş word2vec datasını nasıl kullanırız?

Eğitilmiş word2vec datasını nasıl kullanırız?

Elbette bu tür çalışmalarımızı Python ile yapıyoruz. Üstelik interaktif denemeler yapıyorsak, iPython kullanmamız daha doğru. iPython son dönemde jupyter ile entegre çalışıyor.

Bu yüzden önce kullanmakta olduğunuz Python sürümünü aktif hale getirin. Ben Python 3.5.1 kullanıyorum ve bunun için tanımladığım evp35 isimli bir sanal ortamım var.

Sanal ortamımı devreye sokuyorum:

Artık “python” komutum doğrudan python 3.5.1 sürümünü devreye sokuyor. Gerekli modülleri de bu sanal ortam üzerinden yükledim.

Aynı şey jupyter için de geçerli. Yüklemek için vereceğiniz komut şöyle:

Çalışmamızda word2vec modülünü kullanacağız. Onu da yükleyelim:

Artık iPython’u jupyter üzerinden devreye sokabiliriz. Bunun için:

komutunu kullanın ve “New” kutucuğundan “python 3” seçin.

Aşağıdaki kodları kullanabilmeniz için eğitilmiş veri kümemizi de indirmeniz gerekiyor.

https://drive.google.com/drive/folders/0B_iRLUok9_qqOFozeHNFMjRHTVk adresinden hnz_2010.bin isimli dosyayı indirin. Eğitilmiş vektörlerimiz bu dosyaya kayıtlıdır.

Hazırlıklarınız tamamsa, aşağıdaki işlemleri siz de kendi bilgisayarınızda uygulayabilir, yeni denemeler yapabilirsiniz.

Deneyimlerinizi benimle paylaşmayı da lütfen unutmayın!

Ahmet Aksoy
Açık Kaynak DerlemTR Proje Yöneticisi

Takıldığınız yerler olursa, Yorum bölümünden bana ulaşabilirsiniz.

Ağu 262016
 
1.610 views

Hürriyet Gazetesi Datasıyla Derin Öğrenme Çalışmaları

Açık Kaynaklı DerlemTR Projesi‘nin yeni aşamasında, Hürriyet Gazetesi yetkilileri “derin öğrenme” (deep learning) konulu çalışmalarımızda gazete arşivlerinden yararlanma isteğimizi yine olumlu karşıladı. Başta Sayın Ersay Dizman olmak üzere, gazete yetkililerine tekrar teşekkür ediyorum.

Hürriyet Gazetesi Datasıyla Derin Öğrenme Çalışmaları

Bu aşamada yine python dilini kullandım ve 2010 yılı Hürriyet Gazetesi arşivlerini taratarak “uygun” haberleri bir araya topladım. Haberlerin tarihi, başlığı, muhabiri veya yazarı belli değil. Çünkü bu bilgilere ihtiyacımız yok.

Yapacağımız çalışmalar “word2vec” yöntemine odaklanmış durumda. Bu yöntem, sözcüklerin komşuluk ilişkilerini vektörel olarak değerlendirerek “müdahalesiz” bir eğitim mekanizması oluşturuyor ve buna bağlı sonuçlar üretiyor. Daha önce yazdığım “Word2vec yöntemiyle Türkçe sözcüklerin ilişkilendirilmesi” isimli yazıma bir göz atmak isteyebilirsiniz.

Bu tür çalışmaların en zor tarafı yeterli büyüklükte, düzgün ve güvenilir veri kümelerine (dataset) sahip olmanın zorluğu. Hele Türkçe için alan neredeyse tamamiyle boş. Sağlıklı bir eğitim sağlayabilmek küçük veri kümeleriyle mümkün olmuyor.

Bu yüzden DerlemTR projesi bünyesinde yapacağımız çalışmalarda kullanacağımız veri kümelerini aynı zamanda bu konularda çalışmak isteyen diğer araştırmacılara da karşılıksız olarak açıyoruz. Böylece dilimize yönelik araştırma ve değerlendirmelere bir katkımız olacağına inanıyorum.

Yeni çalışmamızın ilk veri kümesi Hürriyet gazetesinin 2010 yılı arşivindeki haberlerden türetildi. Diğer yıllarla ilgili çalışmalarımız devam ediyor.

Çalışmamızda sözcükleri cümle, paragraf, haber gibi gruplaşmalardan bağımsızlaştırdık. Noktalama işaretlerini, durak sözcüklerini ve sayıları kaldırdık. Sonuçta sadece bir ardışık sözcükler listesi elde ettik.

Sözcükleri düzenlerken inceltme/uzatma işaretlerini temizledik. Çok sık kullanılan, ama kullanılmadığında cümlenin anlamını pek fazla değiştirmeyen durak sözcüklerini (stop-words) listeden sildik. Bütün sözcükleri küçük harfe çevirdik ve sadece geçerli sözcükleri bıraktık. Böylece elimizde birbirinden birer boşluk işaretiyle ayrılan, peşpeşe dizilmiş sözcükler kaldı. Bu yapı CBOW (continuous bag of words), yani “sürekli sözcük torbası” olarak adlandırılıyor. Dosya aslında bir metin dosyası. Ama bu dosyayı bir metin editörüyle incelemek pratik olarak mümkün değil. Çünkü noktalama işaretleri yok. Bu yüzden milyonlarca sözcükten oluşan tek bir cümleden oluşuyormuş gibi davranacaktır.

Word2vec sistemini kullanarak sonuç almak için önce bu sistemi eğitmek gerekiyor:
1- Ardışık olarak kullanılan sözcük çiftlerini belirle ve “_” işaretiyle bağla
2- Sözcük listesindeki kümeleşmeleri sapta (clustering)
3- Sözcük listesini eğit
4- Eğitilmiş dosya bilgilerini kullanarak ilişki raporları üret

Bu amaçla, ben de https://github.com/danielfrg/word2vec adresinde ayrıntılı bir şekilde açıklanan işlemleri kullandım. Seçtiğim vektör boyutu: 100.

Eğitim dosyası (hurriyet_2010.txt) ve eğitilmiş veri dosyasına (hurriyet_2010.bin) https://drive.google.com/drive/folders/0B_iRLUok9_qqOFozeHNFMjRHTVk adresinden ulaşabilirsiniz.

“turkce-stopwords.txt” isimli dosya da aynı adreste yer alıyor. (İlk çalışmalarımızdan elde ettiğimiz derlem dosyası da gensozluk.txt adıyla aynı yerde.)

Word2vec veya benzeri yöntemlerle ilgili çalışmaların pek çoğu hala araştırma düzeyinde. O yüzden etkin bir sonuca ulaşmak için farklı parametreler kullanmak gerekebiliyor. Örneğin ardışık kelimeleri sadece 2 ile sınırlı tutmak yerine bu sayıyı arttırabilirsiniz.

Ya da vektör boyutunu 100 yerine 300 veya 500 yapabilirsiniz. Ancak veri kümesi ve vektör boyutları büyüdükçe daha fazla bellek ve işlemci gücüne gerek duyuluyor. Kendi çalışmalarımda 4 çekirdekli ve 4GB belleğe sahip bir bilgisayar kullanıyorum. Bu özellikler Yapay Zeka veya Derin Öğrenme türü çalışmalarda oldukça zayıf. O yüzden ben vektör boyutunu 100 ile sınırladım. Siz bu sayıyı makinenizin gücüne bağlı olarak istediğiniz kadar yukarı çekebilirsiniz.

Yazımı sonlandırmadan önce, önceki yazımda da kullandığım bazı sözcüklerle ilişkisi saptanan sözcük listelerini paylaşayım: (benzeşen sözcükler yüklenen modelin sözcük vektörlerinin kosinüsü alınarak bulunuyor. Benzer -birbiriyle yakından ilişkili- sözcükler benzer şekilde kümeleniyor.)

insan: [‘insanın’ ‘insana’ ‘insanı’ ‘insanların’ ‘insanlar’ ‘insanlardan’
‘insanlara’ ‘insanımız’ ‘bitmek_tükenmek’ ‘insanoğlunun’]

macera: [‘masal’ ‘eğlenceli’ ‘büyülü’ ‘geceler’ ‘nostalji’ ‘romantizm’ ‘hikayeler’
‘dövüş’ ‘romantik’ ‘sahneleri’]

öfke: [‘korku’ ‘huzursuzluk’ ‘kızgınlık’ ‘derinden’ ‘umutsuzluk’ ‘öfkeyi’
‘öfkesini’ ‘üzüntü’ ‘endişeyi’ ‘tavırları’]

karanlık: [‘kirli’ ‘derin’ ‘izlerini’ ‘hüzünlü’ ‘görünmeyen’ ‘vahşi’ ‘dramatik’
‘geçmişin’ ‘bakılırsa’ ‘gürültülü’]

öykü: [‘şiir’ ‘tiyatro_oyunu’ ‘müziklerini’ ‘eserlerini’ ‘piyano’ ‘şiirler’
‘türküler’ ‘ali_poyrazoğlu’ ‘drama’ ‘bale’]

cumhuriyet: [‘mustafa_kemal’ ‘cumhuriyetin’ ‘atatürk’ ‘dersim’ ‘cumhuriyetimizin’
‘kemal_atatürk’ ‘gazi_mustafa’ ‘istiklal’ ‘ismet_inönü’ ‘ulu_önder’]

savaş: [‘savaşı’ ‘savaşın’ ‘savaşta’ ‘sovyet’ ‘savaşa’ ‘soğuk_savaş’ ‘çatışma’
‘çatışmalar’ ‘saddam’ ‘savaştan’]

ayşe: [‘hülya’ ‘aysel’ ’emine’ ‘derya’ ‘gamze’ ‘zehra’ ‘hatice’ ‘esra’ ‘fatma’
‘elif’]

recep: [‘kadir’ ‘necati’ ‘erdal’ ‘muharrem’ ‘ismail’ ‘arif’ ‘sedat’ ‘orhan’
‘ibrahim’ ‘suat’]

Ham veri miktarı arttıkça daha sağlıklı ilişkiler yakalamak mümkün oluyor.

Veri dosyasının eğitilmesi sürecini bir başka yazımda örnekleyeceğim.

Konuya bir programcı olarak ilgi duyuyorsanız https://github.com/danielfrg/word2vec adresini ayrıntılı bir şekilde incelemeyi sakın ihmal etmeyin.

Ahmet Aksoy

Mar 292016
 
1.013 views

Radikal Blog Yazılarında En Çok Kullanılan Sözcükler

Radikal Blog Yazılarında En Çok Kullanılan Sözcükler

Aldığımız duyumlara göre, Radikal Blog sayfaları 30 Mart 2016 itibariyle yayın hayatına son veriyormuş. Bir çok kişiye düşünce ve duygularını paylaşma fırsatı yaratan böyle bir ortamın kaybı üzücü.

DerlemTr projemiz için Radikal Blog yazılarından da yararlandık. Sayfaların javascript ile düzenlenmesi ve istenen sayfalara doğrudan geçiş olanağı vermemesi bizi oldukça yordu. Bilgisayar sistemimizin sık sık çökmesi ve sunucu taraflı bazı sorunlar süreci uzattı ama, sonunda istediğimiz verilere ulaştık.

İşlemler sırasında yaklaşık 5000 ayrı sayfada yer alan 99 bin 552 yazı tarandı. Tarama sonucunda elde edilen 49 milyon 501 bin 199 sözcükten birbirine benzemeyen 1 milyon 066 bin 107 sözcük ortaya çıktı. Bu sözcükleri daha sonra kitap ve diğer gazete taramalarından elde ettiğimiz derlem veritabanı ile birleştireceğim.

Genel derlem sonuçları ile blog yazılarından elde ettiğimiz sonuçlar, tahmin ettiğimiz gibi büyük benzerlikler gösteriyor. Elbette farklılıklar da mevcut.

Örneğin ilk üç sözcük her iki listede de aynı sırada: “bir”, “ve”, “bu”.

Genel listede 4. ve 5. sırada yer alan “de” ve “da” sözcükleri, blog listesinde yer değiştirmiş.

Altıncı sözcük “için” her iki listede de aynı sırada.

Özet olarak ilk altı sözcük aynı sıradadır diyebiliriz.

Aşağıda, her iki listenin baş tarafında yer alan ilk 30 sözcüğü veriyorum. Çalışmayı tamamladığımızda bu listelerin birleştirilmiş halini zaten herkesin erişimine açacağım.

Açık kaynaklı DerlemTR projemize katılmak veya bu konudaki gelişmelerden haberdar olmak isterseniz gurmezin.com‘u veya facebook PythonDerlemTR grubumuzu yahut https://www.github.com/ahmetax/derlemtr proje sayfamızı ziyaret edebilirsiniz.

Ahmet Aksoy
DerlemTR Proje Yöneticisi

En sık kullanılan ilk 30 sözcük
  Genel liste Radikal blog
1 bir bir
2 ve ve
3 bu bu
4 de da
5 da de
6 için için
7 o a
8 gibi çok
9 daha ne
10 ama gibi
11 çok en
12 sonra daha
13 ne olarak
14 kadar ile
15 her her
16 olarak ki
17 olan kadar
18 diye en
19 dedi olan
20 ki ama
21 ile ya
22 en var
23 ya değil
24 şey sonra
25 iki zaman
26 s türkiye
27 zaman ise
28 büyük diye
29 onu büyük
30 ben kendi
Mar 242016
 
1.343 views

Hürriyet Gazetesinde Yıllara Göre Sözcük Kullanımı

Hürriyet Gazetesinde Yıllara Göre Sözcük KullanımıHürriyet Gazetesi arşivlerini yıllara göre tarama çalışmamız devam ediyor. 2010 ve 2011 yıllarına ait taramalar tamamlandı. (2012, 2013, 2014 ve 2015 te tamam.)

Aşağıda, elde ettiğimiz sözcük frekans listelerinin başında yer alan sözcükleri karşılaştıran bir tablomuz var. Gördüğünüz gibi listeler neredeyse birbirlerinin aynısı. Sadece küçük yer değiştirmeler mevcut. İlk 12 sözcük tamamen birbirinin eşi.

Ancak listeyi uzatırsak, daha alt bölgelerdeki değişimlerin giderek daha büyük boyutlara ulaştığını görürüz. Çünkü aşağılara indikçe, sözcükler arasındaki frekans farklılıkları küçülmekte; bu da kaymaların giderek daha fazla basamağı kapsama olasılığını arttırmaktadır.

Diğer yıllara ait sonuçları da taramalar bittikçe tabloya ekleyeceğim.

Henüz gerçekleştirmediğim bir çalışmada bazı kişi, yer ve kurum isimlerinin kullanım sıklığının yıllara göre değişimini saptamayı planlıyorum. Böyle bir rapor kişi, yer ve kurumların günlük haberler açısından popülerliğinin nasıl değiştiğini gösterecektir. İlginç sonuçlar çıkacağını umuyorum.

Evet, 2013 yılının sonuçlarını da listeye ekledim. Hala, ilk 11 sözcüğün sıralaması aynı.

2014 ve yılına ait veriler de sıralamanın ilk 11 sıralamasını değiştirmedi.

Hürriyet Gazetesinde Yıllara Göre En sık kullanılan ilk 30 sözcük
  2010 2011 2012 2013 2014 2015 2016
01 ve ve ve ve ve ve
02 bir bir bir bir bir bir
03 bu bu bu bu bu bu
04 da da da da da da
05 de de de de de de
06 için için için için için için
07 ile ile ile ile ile ile
08 çok çok çok çok çok çok
09 olarak olarak olarak olarak olarak olarak
10 daha daha daha daha daha daha
11 en en en en en en
12 olan olan olan türkiye olan ise
13 türkiye ise türkiye ise ise olan
14 ise türkiye ise olan türkiye türkiye
15 dedi dedi dedi sonra sonra sonra
16 sonra sonra ilk dedi kadar kadar
17 olduğunu ilk sonra ilk her dedi
18 kadar olduğunu kadar kadar gibi her
19 ilk kadar olduğunu olduğunu dedi gibi
20 büyük büyük büyük her ilk var
21 gibi bin her gibi bin ilk
22 bin gibi gibi var var bin
23 başkanı her var bin ne olduğunu
24 söyledi başkanı başkanı büyük o büyük
25 nin söyledi bin son yeni ne
26 her yeni son yıl büyük yeni
27 yıl son yeni ama olduğunu başkanı
28 yeni yüzde yıl başkanı son ama
29 ın var nin yeni ama o
30 var yıl söyledi o ilgili yıl

Ahmet Aksoy
DerlemTR Proje Yöneticisi

Mar 212016
 
1.104 views

Kitap ve Gazetelerde En Çok Kullanılan Sözcükler

DerlemtrHürriyet gazetesinin izniyle incelemekte olduğum günlük haber arşivlerinin 2010 yılı taramasını bugün tamamladım. 2011 yılı taramalarına da hemen başladım.

İntel Centrino işlemcili, 2 GB belleği olan, Ubuntu 14.04 LTS işletim sistemli bilgisayar üzerinde çalıştırdığım ve Python 3.5.1 ile ekip arkadaşlarımın yardımıyla hazırladığım kodların çalışmasını tamamlaması kesintisiz olarak 58 saat 6 dakika sürdü.

İşlemler sırasında 3273 ayrı sayfada yer alan 149 bin 987 haber tarandı. Tarama sonucunda elde edilen 21 milyon 233 bin 320 sözcükten birbirine benzemeyen 500 bin 321 sözcük ortaya çıktı. Bu sözcükleri daha sonra kitap taramalarından elde ettiğimiz derlem veritabanı ile birleştireceğim.

Genel derlem sonuçları ile gazete haberlerinden elde ettiğimiz sonuçlar, tahmin ettiğimiz gibi büyük benzerlikler gösteriyor. Elbette farklılıklar da var.

Örneğin genel tabloda en sık kullanılmakta olan “bir” sözcüğü, gazete taramasında ikinci sırada yer alıyor. Hürriyet gazetesinin 2010 yılı arşivlerinde en çok kullanılan sözcük ise, “ve” sözcüğü. “Bir” ve “ve” sözcükleri yer değiştirmiş.

Üçüncü sözcük “bu” her iki listede de aynı.

Genel listede 4. ve 5. sırada yer alan “de” ve “da” sözcükleri, haber listesinde yer değiştirmiş.

Altıncı sözcük “için” her iki listede de aynı sırada.

Aşağıda, her iki listenin başında yer alan ilk 30 sözcüğü veriyorum. Çalışmayı tamamladığımızda bu listelerin birleştirilmiş halini zaten herkesin erişimine açacağım.

Bu çalışmayı yapabilmem için arşivlerinden yararlanmama izin veren Hürriyet gazetesi yönetimine ayrıca teşekkürlerimi sunuyorum.

Açık kaynaklı DerlemTR projemize katılmak veya bu konudaki gelişmelerden haberdar olmak isterseniz gurmezin.com‘u veya facebook PythonDerlemTR grubumuzu yahut https://www.github.com/ahmetax/derlemtr proje sayfamızı ziyaret edebilirsiniz.

Ahmet Aksoy
DerlemTR Proje Yöneticisi

En sık kullanılan ilk 30 sözcük
  Genel liste Hürriyet arşivi
1 bir ve
2 ve bir
3 bu bu
4 de da
5 da de
6 için için
7 o ile
8 gibi çok
9 daha olarak
10 ama daha
11 çok en
12 sonra olan
13 ne türkiye
14 kadar ise
15 her dedi
16 olarak sonra
17 olan olduğunu
18 diye kadar
19 dedi ilk
20 ki büyük
21 ile gibi
22 en bin
23 ya başkanı
24 şey söyledi
25 iki nin
26 s her
27 zaman yıl
28 büyük yeni
29 onu ın
30 ben var
Mar 162016
 
1.112 views

Türkçe sözcükleri elemanlarına ayrıştırma projesi

Türkçe sözcükleri elemanlarına ayrıştırma projesi
Github üzerinde paylaştığımız DerlemTR projemiz oldukça ilerledi. Büyük olasılıkla bir ay içinde son şeklini alacak. O zaman, elde ettiğimiz derlem veritabanımızı herkesin kullanımına açacağız.

Projemizin yeni aşamasında -aslında bir zamanlar benim de hasbelkader kısa bir süre için çalışmalarına katılma fırsatı bulduğum- zemberek projesi tarafından java ortamında çözümlenen bir sorunu ele alacağız: Türkçe sözcükleri kök ve eklerine ayrıştırmak. Eğer zemberek projesi python ortamına da aktarılabilmiş olsaydı, böyle bir çalışmaya gerek kalmayacaktı. O yüzden bizimki biraz da Amerika’yı yeniden keşfetmek gibi olacak ama, yapılmasında yarar var.

Projeyle ilgili açıklama ve gelişmeleri bu web sitesinden de yayınlamanın, çalışmamızın daha geniş kesimlere duyurulmasına yarar sağlayacağını umuyorum.

Bu projeyi de Python diliyle geliştireceğiz. Kaynaklarımız yine açık olacak.

İlk aşamada sözcükleri gövde+çekim_ekleri olarak ayrıştıracağız.

İkinci aşamada sözcük gövdelerini kök+yapım_ekleri olarak elemanlarına ayıracağız.

Son aşamada tüm sözcükleri kök+yapım_ekleri+çekim_ekleri şekline dönüştüreceğiz.

Bu projenin kolay bir proje olmadığının farkındayım. Zemberek projesi 10 yıldan fazla sürmüştü. Ben, bizim çalışmamızın daha kısa sürede sonuç vereceğine inanıyorum.

Ama bu proje, zemberek projesinin python ortamında birebir yeniden yazılması şeklinde olmayacak. O yüzden onun java kodlarını incelemeye özellikle yanaşmıyorum. Aksi halde yeni bir şeyler yaratmanın zevkini kaybetme olasılığı var. Amerika’yı belki yeniden keşfedeceğiz ama, hiç olmazsa rotamız farklı olsun! Güzergahımızda bizler de yepyeni şeyler keşfedebilelim!

Ben, kişisel olarak sağlam bir Türkçe bilgisine sahip olduğuma inanıyorum. Ama bir dilbilimci değilim. O yüzden yapacağımız çalışmalarda dilbilimcilerin de yer almasını yürekten istiyorum. Acelemiz yok, kapımız her zaman ve herkese açık.

Bizden ve projemizden bilgi almak için aşağıdaki adreslerden yararlanabilir, üye olabilirsiniz:

DerlemTR projemize katılın, çevrenize duyurun!

Ahmet Aksoy