Python ile etkili metin verisi temizleme adımları
Etkili metin verisi temizleme adımları (Python kullanılarak örnek olay incelemesi ile)
Giriş
E-tablolardan verilerin alınacağı günler gerçekten geride kaldı. Hesap tablosu ceplerinde bulunan veriler için bir dakikalık saygı duruşu.
Bugün, verilerin %80’inden fazlası yapılandırılmamıştır, ya veri silolarında bulunur ya da dijital arşivlerin etrafına dağılmıştır. Sosyal medyada yaptığımız her konuşmadan, haber kaynaklarından oluşturulan her içeriğe kadar, biz konuşurken veriler üretiliyor. Verilerden anlamlı, eyleme geçirilebilir bir içgörü elde etmek için, yapılandırılmamış haliyle onunla nasıl çalışılacağını bilmek önemlidir. En hızlı büyüyen Karar Bilimleri şirketlerinden birinde Veri Bilimcisi olarak, ekmek ve tereyağım, yapılandırılmamış metin bilgilerinden anlamlı içgörüler elde etmekten geliyor.
Metin verileriyle çalışmanın ilk adımlarından biri, onu önceden işleme koymaktır. Verilerin analize hazır hale gelmesinden önce bu önemli bir adımdır. Mevcut metin verilerinin çoğu, doğası gereği oldukça yapılandırılmamış ve gürültülüdür, daha iyi içgörüler elde etmek veya daha iyi algoritmalar oluşturmak için temiz verilerle oynamak gerekir. Örneğin, sosyal medya verileri son derece yapılandırılmamış, bu gayri resmi bir iletişimdir, yazım hataları, kötü dilbilgisi, argo kullanımı, URL’ler, Durdurulan Sözler, İfadeler vb. gibi istenmeyen içeriğin varlığı olağan şüphelilerdir.
Bu blogda, bu olası gürültü öğelerini ve bunları adım adım nasıl temizleyebileceğinizi tartışıyorum. Python kullanarak verileri temizlemenin yollarını sağlıyorum.
Tipik bir iş sorunu olarak, bir iPhone’un hayranlar arasında daha popüler olan özelliklerini bulmakla ilgilendiğinizi varsayalım. iPhone ile ilgili tüketici görüşlerini çıkardınız ve işte çıkardığınız bir tweet:
“<3 iphone & sen awsm elmasın. DisplayIsMuhteşem, çoooook mutlu http://www.apple.com”
Veri temizleme adımları:
İşte yaptığınız şey:
- Kaçan HTML karakterleri : Web’den elde edilen veriler genellikle < > & hangi orijinal verilere gömülü olur. Bu nedenle bu varlıklardan kurtulmak gereklidir. Bir yaklaşım, belirli düzenli ifadeler kullanarak bunları doğrudan kaldırmaktır. Başka bir yaklaşım, bu varlıkları standart html etiketlerine dönüştürebilen uygun paketleri ve modülleri (örneğin Python’un html ayrıştırıcısı) kullanmaktır. Örneğin: < “<” ve & “&” biçimine dönüştürülür.
- Verilerin kodunu çözme : Bu, karmaşık sembollerden basit ve anlaşılması daha kolay karakterlere bilgi dönüştürme işlemidir. Metin verileri “Latin”, “UTF8” vb. gibi farklı kod çözme biçimlerine tabi olabilir. Bu nedenle, daha iyi analiz için tüm verileri standart kodlama formatında tutmak gerekir. UTF-8 kodlaması yaygın olarak kabul edilir ve kullanılması önerilir.
Snippet:
tweet = orijinal_tweet.decode("utf8").encode('ascii','yoksay')
Çıktı:
>> “Ben <3 iphone’umu seviyorum ve sen awsm apple’sın. DisplayIsMuhteşem, çoooook mutlu http://www.apple.com”
- Kesme İşareti Araması : Metinde herhangi bir kelime anlamı ayrımından kaçınmak için, metinde doğru yapının korunması ve bağlamdan bağımsız dilbilgisi kurallarına uyulması önerilir. Kesme işaretleri kullanıldığında, anlam ayrımı olasılığı artar.
Örneğin, “olduğu veya sahip olduğu için bir daralmadır”.
Tüm kesme işaretleri standart sözlüklere dönüştürülmelidir. Belirsizliklerden kurtulmak için olası tüm anahtarların bir arama tablosu kullanılabilir.
Snippet :
APPOSTOPHES = {“'s" : " is", "'re" : " are", ...} ## Büyük bir sözlüğe ihtiyacınız var
kelimeler = tweet.split()
reformed = [APOSTOPHES[kelime] ise kelime kelime APPOSTOPHES başka kelime kelime kelime]
reformed = " ".join(reformed)
Sonuç:
>> “Ben <3 iphone’umu seviyorum ve sen awsm apple’sın. DisplayIsMuhteşem, çoooook mutlu http://www.apple.com”
- Durdurulan Sözcüklerin Kaldırılması : Veri analizinin sözcük düzeyinde veri yönlendirilmesi gerektiğinde, yaygın olarak kullanılan sözcükler (durdurma sözcükleri) kaldırılmalıdır. Durdurulan sözcüklerden oluşan uzun bir liste oluşturulabilir veya önceden tanımlanmış dile özgü kitaplıklar kullanılabilir.
- Noktalama İşaretlerinin Kaldırılması : Tüm noktalama işaretleri öncelik sırasına göre ele alınmalıdır. Örneğin: “.”, “,”,”?” diğerlerinin kaldırılması gerekirken korunması gereken önemli noktalama işaretleridir.
- İfadelerin Kaldırılması : Metin verileri (genellikle konuşma dökümleri) [gülen], [Ağlayan], [İzleyici duraklatıldı] gibi insan ifadelerini içerebilir. Bu ifadeler genellikle konuşmanın içeriğiyle ilgili değildir ve bu nedenle kaldırılması gerekir. Bu durumda basit normal ifade faydalı olabilir.
- Ekli Sözcükleri Böl : Sosyal forumlardaki biz insanlar, doğası gereği tamamen gayri resmi olan metin verileri üretiriz. Tweetlerin çoğuna RainyDay, PlayingInTheCold vb. gibi birden fazla ekli kelime eşlik eder. Bu varlıklar, basit kurallar ve regex kullanılarak normal formlarına ayrılabilir.
Snippet:
temizlenmiş = “ ”.join(re.findall('[AZ][^AZ]*', orijinal_tweet))
Sonuç:
>> “Ben <3 iphone’umu seviyorum ve sen awsm apple’sın. Ekran Harika, çoooook mutlu http://www.apple.com”
- Argo araması : Yine, sosyal medya argo kelimelerin çoğunluğundan oluşur. Bu kelimelerin serbest metin haline gelmesi için standart kelimelere dönüştürülmesi gerekmektedir. luv gibi kelimeler aşka, Helo’dan Merhaba’ya dönüşecek. Benzer bir kesme işareti arama yaklaşımı, argoları standart kelimelere dönüştürmek için kullanılabilir. Web’de tüm olası argoların listelerini sağlayan bir dizi kaynak mevcuttur, bu sizin kutsal kâseniz olacaktır ve bunları dönüştürme amacıyla arama sözlükleri olarak kullanabilirsiniz.
Snippet:
tweet = _slang_loopup(tweet)
Sonuç:
>> “<3 iphone’umu seviyorum ve sen harika bir elmasın. Ekran Harika, çoooook mutlu http://www.apple.com”
- Kelimelerin standartlaştırılması : Bazen kelimeler uygun biçimlerde değildir. Örneğin: “Seni seviyorum”, “Seni seviyorum” olmalıdır. Basit kurallar ve düzenli ifadeler bu vakaları çözmeye yardımcı olabilir.
Snippet:
tweet = ''.join(''.join(s)[:2] için _, s in itertools.groupby(tweet))
Sonuç:
>> “<3 iphone’umu seviyorum ve sen harika bir elmasın. Ekran Harika, çok mutlu http://www.apple.com”
- URL’lerin Kaldırılması : Yorumlar, incelemeler ve tweet’ler gibi metin verilerindeki URL’ler ve köprüler kaldırılmalıdır.
Son temizlenmiş tweet:
>> “iphone’umu seviyorum ve sen harika bir elmasın. Ekran Harika, çok mutlu!” , <3 ,
Gelişmiş veri temizleme:
- Dilbilgisi denetimi : Dilbilgisi denetimi büyük ölçüde öğrenmeye dayalıdır, büyük miktarda uygun metin verisi öğrenilir ve dilbilgisi düzeltme amacıyla modeller oluşturulur. Dilbilgisi düzeltme amacıyla kullanılabilen birçok çevrimiçi araç vardır.
- Yazım düzeltme : Doğal dilde yazım hatalarıyla karşılaşılır. Google ve Microsoft gibi şirketler, otomatik yazım düzeltmede iyi bir doğruluk düzeyi elde etti. Bu hataları düzeltmek için Levenshtein Distances, Dictionary Lookup vb. gibi algoritmalar veya diğer modüller ve paketler kullanılabilir.
Bitiş Notları:
Umarım bu makaleyi faydalı bulmuşsunuzdur. Bunlar, birçok metin verisiyle çalışırken öğrendiğim bazı ipuçları ve püf noktalarıydı. Verileri temizlemek için yukarıdaki adımları izlerseniz, sonuçlarınızın doğruluğunu büyük ölçüde iyileştirebilir ve daha iyi içgörüler elde edebilirsiniz. Görüşlerinizi/şüphelerinizi yorumlar bölümünde paylaşın, katılmaktan memnuniyet duyarım.
Geri bildirim: Python'da Veri Bilimi - Bilişim Profesyonelleri