Örnek eğitim: İstenmeyen postayı tahmin etmek için doğal dil işleme nasıl kullanılır?

Doğal dil işleme, bilgisayarların spam algılama ve otomatik hata düzeltme gibi metin analizi yapmasına yardımcı olabilir. Peki, insan dilini anlamak için doğal dil işleme teknolojisi nasıl kullanılır?

Bu makale, temel doğal dil işleme görevlerinin nasıl gerçekleştirileceğini ve SMS'nin istenmeyen veya istenmeyen posta olmadığını tahmin etmek için makine öğrenimi sınıflandırıcılarının nasıl kullanılacağını açıklar. Teori ve kod işbirliği sayesinde bu konuya en canlı örneklerle kolayca hakim olabilirsiniz.

Doğal dil işleme

Makine öğrenimi alanında doğal dil işleme, bilgisayarlara insan dilini anlamayı, analiz etmeyi, işlemeyi ve potansiyel olarak üretmeyi öğretmeyi ifade eder.

Gerçek hayatta, doğal dil işleme esas olarak şu şekilde kendini gösterir:

  • Bilgi alma (Google ilgili veya benzer sonuçlar bulur)
  • Bilgi çıkarma (Google posta kutusu, sayısız e-postadan etkinlik bilgileri oluşturur)
  • Makine çevirisi (Google Translate bir dili diğerine çevirir)
  • Metin sadeleştirme (Rewordify cümle anlamını basitleştirebilir)
  • Duygu analizi (Hater News, kullanıcının duygularını gösterebilir)
  • Metin özeti (Smmry veya Reddit'in autotldr robotu cümleleri özetleyebilir)
  • Spam filtreleme (Google posta kutusu spam'ı filtreleyebilir)
  • Otomatik tahmin (Google arama, kullanıcı arama sonuçlarını tahmin edebilir)
  • Otomatik hata düzeltme (Google Keyboard ve Grammarly yazım hatalarını düzeltebilir)
  • Konuşma tanıma (Google WebSpeech veya Vocalware)
  • Sorular ve yanıtlar (IBM Watson robotları soruları yanıtlayabilir)
  • Doğal dil üretimi (görüntü veya video verilerinden metin oluşturma)

(Natural Language Toolkit) NLTK: NLTK python tabanlı bir doğal dil işleme araç setidir. NLTK tüm araçları sıfırdan oluşturmaz, ancak tüm ortak doğal dil işleme görevlerini sağlar.

NLTK'yi yükleyin

NLTK'yi yüklemek için Jupyter Notebook'a pip yazın veya cmd türünde çalışmazsa -da conda-forge nltk yazın. Bu çoğu durumda geçerli olmalıdır.

NLTK bağlantısını yükleyin:

NLTK kitaplığını içe aktar

Yukarıdaki bilgileri girdikten sonra, doğal dil işleme görevlerinde çok faydalı olan NLTK Downloader Uygulamasını alacağız.

Sisteme gereksiz yinelenen sözcükleri kaldırmaya yardımcı olan Stopwords Corpus yüklendi. Benzer şekilde, başka kullanışlı araç takımları da kurabiliriz.

Veri kümelerini okuyun ve keşfedin Metni neden temizlemeniz gerekiyor?

Verileri okurken, verileri yapılandırılmış veya yapılandırılmamış bir biçimde alın. Yapılandırılmış formatlar açıkça tanımlanmış kalıplara sahipken, yapılandırılmamış verilerin düzgün bir yapısı yoktur. Bu iki yapı arasında yarı yapılandırılmış bir format kullanılabilir ve yapısı yapılandırılmamış formattan daha iyidir.

Yukarıdaki bilgilerden de görülebileceği gibi, yarı yapılandırılmış verileri okurken verileri yorumlamak zordur, bu nedenle verileri kolayca anlamak için pandaları kullanabilirsiniz.

Ön işlenmiş veriler

Makine öğrenimi sistemi için kabul edilebilir nitelikleri vurgulamak için, metin verilerini temizlemek gerekir.

Verileri temizleme (veya ön işleme) adımları

1. Noktalama işaretlerini kaldırın

Noktalama işaretleri, cümleleri anlamamıza yardımcı olmak için dil bilgisi bağlamı sağlayabilir. Ancak vektörleştirilmiş veriler için, anlamak için bağlama dayanmak yerine kelimelerin sayısını sayar.Noktalama değer katmaz, bu nedenle tüm özel karakterler silinebilir. Örneğin: Nasılsın? > Nasılsın

Body_text_clean içinde, benim gibi- > Benim gibi tüm noktalama işaretleri atlandı.

2. Tokenizasyon

Tokenizasyon, metni cümleler veya kelimeler gibi birimlere böler. Önceki yapılandırılmamış metin için yapı sağlar. Örnek: Plata o Plomo- > "Plata", "o", "Plomo".

Body_text_tokenized'de, tüm kelimelerin simge olarak üretildiğini görebiliriz.

Body_text_tokenized'de, tüm kelimelerin simge olarak üretildiğini görebiliriz.

3. Durdurma kelimelerini kaldırın

Durdurma sözcükleri, herhangi bir metinde görünebilen yaygın sözcüklerdir. Çok fazla veri bilgisi sağlamadılar, bu yüzden siliyoruz. Örneğin: gümüş veya kurşun benim için iyi > gümüş, kurşun, iyi.

Body_text_nostop'da, için olduğu gibi tüm gereksiz kelimeleri silin.

Stemming

Stemming, sözcükleri kök biçimine dönüştürmeye yardımcı olur. Genel olarak, ilgili kelimeleri aynı şekilde ele almak mantıklıdır. Basit bir kural tabanlı yöntemle "ing", "ly", "s" vb. İçerikleri kaldırır. Kelimelerin külliyatını azaltır, ancak gerçek kelimeler genellikle göz ardı edilir. Örneğin: Entitling, Entitled- > Entitl

Not: Bazı arama motorları, aynı köke sahip kelimeleri eş anlamlı olarak ele alır.

Body_text_stemmed'de, wkli'nin bir anlamı olmasa bile entry, wkly gibi kelimeler entri'ye dahil edilir.

Kelime varyantında azalma

Kelime varyant indirgemesi, bir kelimenin kanonik biçimini, yani kök biçimini türetir. Kök oluşturmadan daha iyidir çünkü sözlüğe dayalıdır, yani kökün morfolojik analizi. Örneğin: Entitling, Entitled- > Yetki

Kısacası, kelime türetme genellikle daha hızlıdır çünkü kelimenin bağlamını anlamadan kelimenin sonunu siler. Kelime varyantlarının azaltılması daha yavaş ve daha doğrudur çünkü kelimenin bağlamına dayalı doğru analiz gerektirir.

Body_text_stemmed'de, kelime varyantları tarafından şansa indirgenmiş şanslar gibi kelimeleri çıkarıyoruz ve şansa çıkarılabilir.

Vektörize edilmiş veriler

Vektörizasyon, makine öğrenimi algoritmalarının verileri anlayabilmesi için özellik vektörleri oluşturmak için metni tam sayılara (yani dijital form) kodlama işlemidir.

Kelime Çantası (Kelime Çantası modeli)

Bag of Words (BoW) veya CountVectorizer, metin verilerinde bulunan kelimeleri açıklar. Cümle içinde varsa 1 sonucu, yoksa 0 sonucu verir. Bu nedenle, her metin belgesindeki belge matrisinin sayısını içeren bir sözcük oluşturur.

BOW, gövde_metinine uygulanır, bu nedenle her kelimenin sayısı belge matrisinde saklanır.

N-Gram

N-gram, kaynak metinde bulunan bitişik kelimelerin veya n uzunluğundaki harflerin tüm kombinasyonlarıdır. N = 1 olan ngramlara unigram denir. Benzer şekilde, bigramlar (n = 2), trigramlar (n = 3) vb. De kullanılabilir.

Bigram'lar ve trigramlarla karşılaştırıldığında, Unigram'lar genellikle fazla bilgi içermez. N-gramların arkasındaki temel ilke, harflerin veya kelimelerin belirli bir kelimeyi takip edebileceğini düşünmeleridir. N-gram ne kadar uzunsa (n ne kadar yüksekse) o kadar çok ortamla uğraşmanız gerekir.

Body_text'e N-Gram uygulanır, bu nedenle cümledeki her kelime grubunun sayısı belge matrisinde saklanır.

TF-IDF

TF-IDF, bir belgede görünen kelimelerin "göreceli sıklığını" tüm belgelerdeki sıklıklarıyla karşılaştırarak hesaplayabilir. Her belgedeki "önemli" sözcükleri tanımlamak "terim sıklığı" ndan daha yararlıdır (bu belgede yüksek sıklık, diğer belgelerde düşük sıklık).

Not: Arama motoru puanlama, metin özetleme, belge kümeleme için kullanın.

TF-IDF, body_text'e uygulanır, bu nedenle cümledeki her kelimenin göreli sayısı belge matrisinde saklanır.

Not: Vektörleştirici, seyrek bir matris çıkarır. Seyrek bir matris, çoğu girdinin 0 olduğu bir matristir. Verimli depolama için, seyrek matrisi depolamak için yalnızca sıfır olmayan öğelerin konumları saklanacaktır.

Özellik Mühendisliği: Özellik Oluşturma

Özellik mühendisliği, makine öğrenimi algoritmalarının çalışmasını sağlayan özellikler oluşturmak için veri alanı bilgisinin kullanıldığı bir süreci ifade eder. Alan bilgisi gerektirdiğinden ve özelliklerin oluşturulması zor olduğundan, daha çok bir sanata benzer, ancak makine öğrenimi algoritmaları sonuçları çok etkili bir şekilde tahmin edebilir.

  • body_len, mesajın gövdesindeki boşluklar hariç kelimelerin uzunluğunu gösterir.
  • punct%, mesaj gövdesindeki noktalama işaretlerinin yüzdesini gösterir.
Özelliklerin doğru olup olmadığını kontrol edin

Spams'in Hams'a kıyasla çok fazla kelimesi olduğunu açıkça görebiliyoruz. Dolayısıyla bu, iyi bir ayırt edici işlevdir.

İstenmeyen e-postada belirli bir noktalama işareti yüzdesi vardır, ancak Ham'dan uzak değildir. Şaşırtıcı bir şekilde, Spam bazen çok fazla noktalama işareti içerir. Ancak yine de iyi bir özellik olarak kabul edilebilir.

Bir makine öğrenimi sınıflandırıcısı oluşturma: model seçimi

Makine öğrenimini kullanan topluluk öğrenme algoritmaları, birden çok modelin kullanılmasını gerektirir ve bunların kombinasyonu, tek bir modelden daha iyi sonuçlar üretir (destek vektör makinesi / saf Bayes). Topluluk öğrenme algoritmaları, birçok Kaggle yarışması için ilk tercihtir. Örneğin, rastgele bir orman inşa etmek, çok sayıda rastgele karar ağacı oluşturmak ve nihai tahmin için her ağacın toplamını kullanmaktır. Rasgele bir torbalama stratejisi izleyerek sınıflandırma ve regresyon problemleri için kullanılabilir.

Izgara arama : En iyi modeli belirlemek için belirli bir ızgaradaki genel parametre kombinasyonunu kapsamlı bir şekilde araştırır.

Çapraz doğrulama : Veri kümesini k alt kümeye böler ve her yinelemede test kümesi olarak farklı bir alt küme kullanarak k kez tekrarlamak için aynı yöntemi kullanır.

N_estimators ve max_depth'in ortalama_test_core = 150'si en iyi sonuçları verir. Burada n_estimators ormandaki ağaçların sayısıdır (karar ağacı grubu) ve max_depth her bir karar ağacındaki maksimum düzey sayısıdır.

Benzer şekilde, n_estimators = 150 ve max_depth = 90 ile ortalama_test_score en iyi sonuçları verir.

İyileştirme: GradientBoosting ve XgBoost sınıflandırma için kullanılabilir. GradientBoosting, zayıf öğrencileri birleştirmek ve çok zaman alan önceki yinelemelerin hatalarına odaklanarak güçlü öğrenciler oluşturmak için yinelemeli bir yöntem kullanır. Kısacası, Random Forest ile karşılaştırıldığında, rastgele paralel bir yöntem yerine sıralı bir yöntem izler.

Spam-Ham sınıflandırıcı

Yukarıda tartışılan tüm parçalar, Spam-Ham sınıflandırıcısını oluşturmak için birleştirilir.

Rastgele ormanın doğruluğu% 97,7'dir. Modelden yüksek değerli F1 puanları da elde edilmektedir. Karışıklık matrisi bize 965 ham ve 123 spam'i doğru tahmin ettiğimizi söylüyor. 0 hams, yanlışlıkla spam olarak tanımlandı ve 26 spam, yanlışlıkla hams olarak tahmin edildi. Ham'i yanlışlıkla spam olarak tanımlamakla karşılaştırıldığında, spam'i jambon olarak tespit etmek mantıklıdır.

Yukarıdaki kod Github Repo'da bulunabilir.

Derleyici grubu: Caotian İlgili bağlantı: https://towardsdatascience.com/natural-language-processing-nlp-for-machine-learning-d44498845d5b Yeniden yazdırmanız gerekirse, lütfen arka planda bir mesaj bırakın ve yeniden yazdırma özelliklerini izleyin
Yerli üretim Mercedes-Benz EQC saf elektrikli SUV resmi olarak tanıtıldı.Elektrikli araçların sahip olması gereken performans bu mu?
önceki
Zall Holdings Yan Zhi, "2016 Yılının En İyi On Ekonomik Figürü" ödülüne layık görüldü
Sonraki
Pekinliler Çin Yeni Yılı için geleneksel dim sum "Beijing Sekiz Parçası" satın alıyor! Hangi sekiz olduklarını biliyor musun?
99 yuan! Xiaomi Mijia Otomatik Katlanır Şemsiye Resmi: Tek tıklama ile açma ve kapama
Bugünün temel sesi | İstediğiniz "Game of Thrones" un son sezon spoyleri burada!
Meizu 16 onu kapmadı mı? Endişelenmeyin, 16X'in gençlik versiyonu yolda
Huawei Matebook 13 / Xiaoxin Air 13 Karşılaştırmalı Değerlendirme: En güçlü 13 inç ince ve hafif dizüstü bilgisayar kimdir?
Vipshop'un özel satışlara dönmesi gerçekten çaresiz Kendi kendine yardımda Vipshop'un çıkış yolu neresi?
Hayattaki ilk araba nihayet geldi, Haval H6, 1.5T otomatik şampiyon versiyonundan bahsedin
Huawei Matebook 13 / Lenovo Xiaoxin Air 13 Karşılaştırmalı Değerlendirme: En güçlü 13 inç ince ve hafif dizüstü bilgisayar kimdir?
Mobil nihayet eski kullanıcılar için 100 milyona kadar geniş bant ücretsiz avantajlar sunmuştur
IOS12 Eylül ayında piyasaya sürülecek ve minimum destek iPhone 5s'e kadar.
Ustalaşılacak bir makale: Metin verilerinin NLP'de kodlanması nasıl gerçekleştirilir?
O yıllarda oynadığımız şaheserlerin arkasındaki oyun yapımcısı Tencent gözyaşı dökmeden ağlamak istiyor
To Top