Eki 152016
 
3.950 views

Hürriyet Data Örneği Kaggle Datasette

Hürriyet Gazetesi haberlerinden türettiğim veri dosyalarından birini http://www.kaggle.com üzerinde paylaştım.

Bu datasetin nasıl kullanılacağına ait notebook https://www.kaggle.com/ahmetax/d/ahmetax/hury-dataset/tr-training adresinde.

Aynı notebook sayfasının Türkçe açıklamalar içeren çatalı da bu adreste yer alıyor: https://www.kaggle.com/ahmetax/d/ahmetax/hury-dataset/fork-of-tr-training

Bu veri setinin eğitilmiş halinden elde edilen ilişkileri 2-boyutlu bir diyagramda görselleştiren grafik şu:
Hürriyet Data Örneği Kaggle Datasette

Sözcükleri eğitip ilişkilendiren ve sonuçların bir kısmını görselleştiren Python 3.5.2 kodlarını ilgili sayfalardan inceleyebilir, indirebilir veya doğrudan test edebilirsiniz.

Ahmet Aksoy

Ağu 262016
 
4.320 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

[gist https://gist.github.com/ahmetax/58200ef5014176438aea2ad78624686a]

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

Ağu 262016
 
5.140 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