Research:Revision scoring as a service/Engagement with Turkish community

From Meta, a Wikimedia project coordination wiki

Overview of the introduction discussion[edit]

  • ORES Project was briefly introduced to the community.
    • Explanation of the objective and scope of ORES.
    • Brief explanation of the technical aspects of ORES.
    • Explanation of the intended long term goals of ORES to include more languages through a generalised approach.
    • Explanation on why ORES would have improved results by utilising the resources of existing tools (ClueBot NG, Huggle & STiki).
    • Explanation that ORES intends to quantify good faith/bad faith as much as useful/harmful as well as to classify the class of articles.
  • Community suggestions, requests and consensus
    • Our goal to generalize ORES is important for the community.
    • JSON API was agreed on for ORES - possibility of XML output was suggested.
    • Contribution by users without technical background was inquired on IRC
      • In response application of gamification to ORES was suggested for data annotation (to create a training corpus) and was warmly welcome by the community.
    • Suggestion of pywikipediabot integration of ORES.
    • Suggestion of the utilization of flagged revisions (tr:Özel:İncelenmişSayfalar, tr:Özel:GelişmişİncelemeGünlüğü) as a starting point to form ORES training corpus.

Servis olarak değişiklik değerlendirme[edit]

Merhaba Vikipedistler,

Vikipedi’nin en kuvvetli araçları değişiklik kalitesini belirlemek için makine sınıflandırmasından (tr:Makine öğrenimi) faydalanırlar. Maalesef bunların çok azı oluşturdukları değerlendirmelerinin kullanılmasını sağlayacak kamuya açık bir UPA/API yayınlamaktalar – ve genellikle bunlar genelde sadece İngilizce Vikipedi’de çalıştırılıyor. Bu projede biz değişilşikler için makine sınıflandırma değerlendirmelerini sağlayacak kamuca sorgulanabilir bir UPA geliştireceğiz. Bizim inancımız bu gibi bir servisin sağlamakla güçlü yeni araçların yaratılmasını ve olan araçların geliştirilmesini kolaylaştıracağız.

Bunun için Wikimedia sponsorluğunda Meta:servis olarak değişiklik değerlendirme başlığında bir araştırma yürütmekteyiz. Projemizin önemli hedeflerinden birisi İngilizce Vikipedide çalışan User:ClueBot NG, Huggle ve STiki gibi araçların değerlendirmelerini kendi geliştirdiğimiz sistemde birleştirmek ve kendi makine sınıflandırma ile vardığımız değerlerlendirmeler ile bu araçların değerlendirmelerinin bileşkesi ile daha doğru sonuçlara ulaşmak. Geliştirdiğimiz bu sonucun öncelikle Azerice, Portekizce ve Türkçe Vikipedilerde uygulamayı ve kullanıma açmayı hedeflemekteyiz. Daha ilerisinde geliştirdiğimiz sistemi diğer dillere de uygulamayı ve kullanıma açmayı hedefliyoruz.

Biz makine sınıflandırılasında gözetimli öğrenme (en:Supervised learning) kullanıyoruz ve bunun için sistemin belli miktar verinin insanlarca/elle tasnifi gerekiyor. Sistemimizi Türkçe Vikipedi’ye uyarlayabilmemiz için yardımınıza ihtiyacımız var. Soru ve görüşlerinize açığız.

-- Bilinen Bir Beyaz Kedi çi? 09:47, 17 Aralık 2014 (UTC)

  • Selamlar Kedicik :) Ben de birkaç haftadır machine learning temelli ve Python NLTK kullanan bir bot geliştirme üzerine denemeler yapıyordum, dataseti nasıl bulacağımı düşünüyordum. Türkçe Viki'de revizyon kontrolü olduğu için ilk test database'lerini yarı/tam otomatik oluşturabilirsiniz. "X, Y, Z kullanıcıları tarafından onaylanan revizyonlar" ve "Geri alınıyor: Vandalizm" etiketli revizyonlardan kaba da olsa iş görecek bir dataset hızlıca çıkartılabilir. Planınız her dile özel corpuslar/eğitim datasetleri ile natural language processing ve bayesian probability/n-gram kullanarak vandalizm tespit edecek bir sistem oluşturmak, bu sistemi bir API ile herkese sunmak ve geri alma vb. kısmını bireysel botlara bırakmak mı? --Khutuckmsj 10:25, 17 Aralık 2014 (UTC)
    • Bu ve bunun ötesine gitmek istiyoruz aslında. Örneğin bir değişikliğin sadece vandalizm mi değilmi olduğunu algılamak tek başına aslında yeterli değil. Değişikliğin iyi niyetlimi mi kötü niyetli olduğuda zararlı (vandalizm vs) olup olmadığından bağımsız bir faktör. İyi/kötü niyet ve yararlı/zararlı değişikliği birbirinden bağımsız iki farklı terazi gibi düşünebiliriz. Tabiki kötü niyetli değişikliklerin kazayla yararlı olması gibi bir durum olmasını beklemiyoruz fakat iyi niyetli değişikliklerde zararlı olabiliyor bazen. Bu problemi iki boyutlu hale getiriyor.
    • Daha da ilerisinde yaklaşımımızın maddenin statüsünüde dikkate almasını istiyoruz. Bir madde Başlangıç, A sınıfı, B sınıfı, Kaliteli madde vs gibi olduğunda uğradığı değişiklikler farklılık gösteriyor. Ayrıca bu tür sınıflandırmalar bazen güncellenmeyebiliyor. Sistem bu konuda da kullanıcılara tavsiyede bulunabilir. Yaklaşımımızda bu çoklu sınıflandırma probleminide işlemeyi hedefliyoruz. Çoklu sınıflandırma için Error Correcting Output Codes ile çoklu problemleri iki-sınıflı hale dönüştürüp Artificial Neural Networks, Support Vector Machines, Logistic Regression, Naïve Bayes, Decision Trees gibi iki sınıf sınıflandırıcıları kullanacağız.
    • Bahsetiklerinizden bir corpus oluştursakta tekrar bir gözden geçmesi gerek (sonuçta sadece tek bir iki sınıf sınıflandırma yeterli olmayacaktır). Bunun içinde oyunsal bir sistem geliştiriyoruz.
    -- Bilinen Bir Beyaz Kedi çi? 13:35, 17 Aralık 2014 (UTC)
  • Programlama dili olarak ne kullanacaksınız? Meta'da Python kodlar gördüm, farklı yapılar için farklı diller düşünüyor musunuz? Heyecan verici bir proje, oluşturacağınız API üzerinden Türkçe Viki için kontroller yapacak bağımsız veya Pywikipediabot temelli bir bot yazmak isterim :) --Khutuckmsj 14:46, 17 Aralık 2014 (UTC)
    Programlamada Python dilini temel almayı planlıyoruz. UPA için ise herhalde JSON veya benzeri bir sistem kullanırız. Pywikipediabot ile entegrasyon ilginç bir fikir, bunu kolaylaştıracak ne yapabiliriz sizce? Ne tür bir şey size en çok yardımcı olur? -- Bilinen Bir Beyaz Kedi çi? 06:34, 18 Aralık 2014 (UTC)
    Pywikipediabot ve benzeri uygulamalar için tr:XML çıktısı üreten bir API yararlı olacaktır. Projenin dilden bağımsız biçimde çalışabilmesi hedefi ise gerçekten önemli. Teşekkürler. --Superyetkinileti 17:41, 18 Aralık 2014 (UTC)
    Genelde UPA için JSON tercih ediliyor. İkinci bir XML UPA için bir talep varsa bunu değerledirebiliriz ama paralel bir UPAnın güncellenmesi ekstra bir efor gerektirecek. Sistemimizin içindeki örnek girdi çıktı https://github.com/halfak/Revision-Scoring/blob/master/demonstrate_scorer.py gibi olacaktır. Bizim sistemimiz http://ores.wmflabs.org/scores?wiki=enwiki&scorer=damage&rev_id=1234567 gibi bir URL ile ulaşılabilcek. -- Bilinen Bir Beyaz Kedi çi? 16:03, 20 Aralık 2014 (UTC)
    JSON UPA/API bence Python'da en rahat kullanılan sistem, 1-2 satır kodla json'u Python dictionary'ye çevirmek mümkün. Pywikipediabot'a bir modül ekleyerek geri alma vb. işlemleri oradan halletmek mümkün olabilir, ama detaylı incelemem lazım. Wikimedia CEE'den yeni döndüm, orada Lehçe Wiki'den Pywikipediabot yazarı pl:User:Masti ve AutoWikiBrowser'ın yazarı Yunanca Wiki'den el:User:Magioladitis ile tanıştım. Yarı otomatik geri almalar ve dataset oluşturma kısmı için AWB'ye entegrasyon da güzel bir fikir olabilir. İlginizi çekerse bu kullanıcılarla iletişime geçebiliriz. --Khutuckmsj 08:23, 22 Aralık 2014 (UTC)

Bana IRCde şu soru soruldu: "Programlama bilgisi olmayan bir gönüllüler olarak nasıl yardımcı olabilirim?", burada cevaplayayim dedim. Projede toollabs:wikidata-game gibi bir oyunlaştırma (en:Gamification) düşünüyoruz. Bütün katılımcılardan toplamda 1000-1500 adet elle girdi bize önemli bir aşama kat ettiriş olacak. Girdi sayısı arttıkça oyunu kendi kendini geliştiren bir döngü ile daha anlamlı öneriler sunmaya başlayacak. -- Bilinen Bir Beyaz Kedi çi? 21:12, 25 Aralık 2014 (UTC)