Devam Filmleri Orijinalinden Daha mı İyi?

May 09 2023
Yazan: Justin Cheigh ve Daisuke Yamada Özet: Bu yazıda devam filmlerinin orijinalinden daha iyi olup olmadığı sorusuna cevap arıyoruz. Bunu yapmak için, belirli film dizilerinin incelemelerinde duygu analizi yapıyoruz.

Yazan: Justin Cheigh ve Daisuke Yamada

Özet: Bu yazıda devam filmleri orijinalinden daha iyi midir sorusuna cevap aramaktayız. Bunu yapmak için , belirli film dizilerinin incelemelerinde duygu analizi yapıyoruz . 50.000 film incelemesi içeren bir kaggle veri kümesi üzerinde eğitim almış olsak da, Python'un selenyum kitaplığını kullanarak IMDb'den film incelemelerini de kazıyacağız . GitHub depomuza göz atın ve okuduğunuz için teşekkürler!

izleyeceğimiz bir dizi

Motivasyon

Devam filmlerinin aslında orijinalinden daha iyi olup olmadığını hiç merak ettiniz mi ? Evet… hepimiz oradaydık. Aslında bu asırlık sorunun cevabı hayatım boyunca peşimizi bırakmadı. Cevapları aradık ve aradık. Standart film teorisi somut cevaplar vermedi. Dil bilimi ve edebiyat kuramı tam olarak yerine oturmadı. Felsefe kafa karışıklığını artırdı. Bu yüzden mümkün olan son çareye döndük: veri bilimi. Hızlı bir Kung Fu Panda maratonunun ardından işe koyulduk.

Planımız, etiketli verileri kullanarak bir duyarlılık analizi modeli eğitmekti. Bu modelle, farklı dizilerdeki filmlerin eleştirilerinin duygusallığını belirleyebildik. Buradan, her filmin popülaritesini ölçmek için bazı buluşsal yöntemler geliştirebilir ve devam filmleri ile orijinali karşılaştırmamıza izin verebiliriz.

Veri Kazıma ve Ön İşleme

Başlamak için verilere ihtiyacımız vardı. Kaggle'da her biri olumlu veya olumsuz olarak etiketlenmiş 50.000 film incelemesi içeren bir IMDb veri kümesi bulduk . Bu veri seti, bir ikili duyarlılık analizi modelini eğitmek için mükemmeldi, ancak çeşitli dizilerden film incelemeleri hakkında da verilere ihtiyacımız vardı.

4 farklı seri ile çalışmayı seçtik: Harry Potter, Star Wars, Kung Fu Panda ve Cars. Her serideki her film için IMDb'deki film incelemelerini/sıralamalarını bulduktan sonra , verileri selenyum kullanarak kazıdık. Bu verileri, her biri (en azından) film incelemeleri ve ilgili yıldız derecelendirmelerini içeren bir CSV dosyaları klasörü(/reviews/orijinal) olarak kaydettik. Bundan böyle bu yıldız derecelendirmelerini eleştirmen derecelendirmeleri veya sadece derecelendirmeler olarak adlandıracağız.

Duyarlılık değerlerini ( olumlu veya olumsuz duyarlılık ) etiketleyen eğitim veri setimizin aksine, bu incelemeler, eleştirmenin belirlediği gerçek derecelendirmelere sahipti ( 1-10 , 1 en kötü ve 10 en iyi). Bu tutarsızlığı daha sonra analizimiz sırasında kabul edeceğiz.

Kazınmış Veri Örneği - Kung Fu Panda 2

Duygu Analizi Modeli

Bundan sonra duygu analizi modelimizi eğitmek için yola çıktık . İlk adım, incelemeyi sayısal bir vektöre kodlamaktır. Naif yöntem, sözcükleri yalnızca bir sıcak kodlamaktır. Ancak bu, kelimelerin herhangi bir semantik anlayışından yoksun olan büyük bir girdi vektörüne yol açar (örneğin, ABD ve Amerika'yı tamamen farklı ele alır).

Bu nedenle, bir kelime gömme katmanı kullanmayı seçtik . Kelime yerleştirmeleri, kelimeleri anlamsal benzerliği hesaba katacak şekilde sayısal vektörler olarak temsil eder. Örneğin, vektör uzayında eşanlamlılar birbirine "yakın" olabilir ve aşağıdaki gibi anlamsal ilişkileri de öğrenebilirsiniz :

Kelime Gömmelerinin Avantajına Örnek (developers.google.com'dan)

Spesifik olarak, modelimizde bir katıştırma katmanı tanımlamak için önceden eğitilmiş bir GloVe sözcük yerleştirme kullandık . Bu gömme katmanını tanımladıktan sonra, modelimizi tanımlamaya devam ettik. Temel modelimiz için çift yönlü bir LSTM (Uzun Kısa Süreli Bellek) kullanmayı seçtik. LSTM'ler, daha uzun vadeli bağımlılıkları işlemek için tasarlanmış bir tür tekrarlayan sinir ağıdır (RNN).

Geleneksel RNN'lerde, zaman içinde geri yayılmaya ihtiyaç duyduğumuzdan , genellikle kaybolan (veya patlayan) gradyan problemini alırız . LSTM'ler, bilgi akışını kontrol edebilen bir bellek hücresine sahip olarak bunu düzeltir . Yani, 3 kapı vardır: giriş kapısı (hücreye gelen yeni bilgi), unutma kapısı (mevcut hücre bilgisinin ne kadarının unutulduğu) ve çıkış kapısı (LSTM çıktısını üretmek için hücre durumunun ne kadarının kullanıldığı) ). Sigmoid aktivasyonlarla temsil edilen bu kapılar, daha uzun vadeli bağımlılıklara izin verir. Aşağıda bir LSTM'nin mimarisini görebilirsiniz:

LSTM Mimarisi

Çift yönlü bir LSTM, bu yapı üzerine 2 LSTM kullanarak kurulur ve her iki yönde de bilgi akışına izin verir. Başka bir deyişle, LSTM yalnızca geçmişten gelen bilgileri korur, ancak çift yönlü LSTM'ler hem geçmişten hem de gelecekten gelen bilgileri korur. Bu, ağın çevreleyen kelimelerin bağlamına sahip olmasını sağlar ve mimarisinin bir resmi aşağıda gösterilmiştir:

Çift Yönlü LSTM Mimarisi

Çift yönlü LSTM'mizi şu şekilde uyguladık :

# define pre-trained embedding layer
pre_emb = Embedding(
  input_dim=len(word_index)+1, 
  output_dim=seqlen, 
  weights=[embedding_matrix], # from GloVe embedding
  input_length=seqlen, 
  trainable=True
  )

with tf.device(device):
    # define bidirectional LSTM
    model = Sequential([
        pre_emb, # embedding layer
        Bidirectional(LSTM(128, return_sequences=True)), 
        Dropout(0.2),
        Bidirectional(LSTM(64)),
        Dropout(0.2),
        Dense(128, activation='relu'),
        Dropout(0.2),
        Dense(1, activation="sigmoid") # binary classification
    ])

    # compile
    model.compile(
        loss=BinaryCrossentropy(from_logits=True),
        optimizer='adam',
        metrics=['accuracy']
    )

Eğitildikten sonra, bu model test setinde %50'lik taban çizgisine kıyasla %86,9 doğruluk elde etti! Artık bu eğitimli modele sahip olduğumuza göre, onu kazınmış film incelemelerinde kullanabiliriz. Bu nedenle, kazınmış CSV dosyalarımızı aldık ve modelimizin incelemeye ilişkin duyarlılık tahminine dayalı olarak 0 (negatif) veya 1 (pozitif) içeren bir "Duyarlılık" sütunu ekledik . Bu CSV dosyaları /incelemeler/annotated klasörüne kaydedilmiştir.

Sonuçlar ve Analiz

Harika! Dolayısıyla, her serideki her film için yapılan her inceleme için elimizde iki parça bilgi var: modelimizin duyarlılık tahmini (0 veya 1) ve eleştirmenlerin gerçek puanı (1-10). Bazı gösterimleri tanımlayalım. Bir incelemeyi düzelt r . M(r) modelimizin incelemeye ilişkin ikili duyarlılık tahmini olsun ve C (r) incelemenin ait olduğu filmin eleştirmenlerin gerçek derecelendirmesi olsun.

M(r) ve C(r) arasındaki ilişki nedir ? Pekala, iyi derecelendirmelere sahip incelemeler sezgisel olarak olumlu bir duyguya sahip olmalıdır, bu da M(r) ve C(r) arasında pozitif bir korelasyon istediğimiz anlamına gelir . Aslında, mutlak ideal durum aşağıdaki ilişkidir ( C(r)'nin mutlak veya nesnel memnuniyet düzeyini yansıttığını varsayarsak):

M(r)/C(r) İlişkisi İçin İdeal Durum

Peki, gerçek ilişki nedir?

M(r) ve C(r) Arasındaki İlişki

Bu arazileri parçalayalım. Her sütun, bazı dizilerdeki bir filmi temsil eder. Örnek olarak ilk Harry Potter filmini temsil eden en soldaki sütunla çalışacağız. R, bu film için kazınmış incelemeler kümesi olsun . O zaman olayı şu şekilde yorumlayabiliriz:

  • En üstteki sayı (7,7) ortalama eleştirmen derecesidir; resmen ortalama (C(R)).
  • Kırmızıyla gösterilen sayı, modelimizin olumlu olarak tahmin ettiği incelemeler için ortalama eleştirmen puanıdır; resmi olarak ortalama({C(r) | r in R ve M(r) = 1}).
  • Mavi renkli sayı, modelimizin olumsuz olarak tahmin ettiği incelemeler için ortalama eleştirmen puanıdır; resmi olarak ortalama({C(r) | r in R ve M(r) = 0}).

Bunu gördükten sonra, C(r)'nin M(r) tarafından gruplandırılmış dağılımını daha fazla araştırmaya karar verdik . Aşağıdaki grafikleri alıyoruz:

Star Wars/Harry Potter için C(r) verilen M(r) dağılımı

Örneğin, Harry Potter Olumlu çizimi, modelimizin olumlu duygular içerdiğini sınıflandırdığı Harry Potter filmlerinin eleştiri puanlarının dağılımını gösterir. Bu arazilerin nasıl görünmesini bekler veya umarız? M(r) ve C(r) arasındaki ilişki için ideal denklemimize geri dönelim . Olumlu grafiklerin yalnızca > 5 olarak derecelendirilen incelemelere sahip olduğunu, Negatif grafiklerin ise yalnızca ≤ 5 olarak derecelendirilen incelemelere sahip olduğunu umuyoruz.

En azından, Pozitif için derecelendirme arttıkça ve Negatif için tersi olduğu için inceleme sayısında bir miktar artış isteriz. Bu, Pozitif grafikler için doğru görünüyor ve bu da modelimizin olumlu olarak derecelendirilen incelemeleri iyi bir şekilde sınıflandırabildiğini gösteriyor. Ancak bu Negative için geçerli değil; modelimiz olumsuz olarak derecelendirilen incelemeleri iyi sınıflandıramaz.

Bu ilginç. Olası bir açıklama, olumlu eleştirilerin daha açık olmasıdır ; “Bu film harikaydı!” gibi şeyler söylüyorlar. Öte yandan, olumsuz olarak değerlendirilen incelemelerin deşifre edilmesi biraz daha zor olabilir. Aşağıdaki (sahte) incelemeyi göz önünde bulundurun: "Bazıları bu filmdeki CGI'yı ve animasyonları sevse de, ben hayranı değildim". Bu, bir sinir ağı için son derece zor bir durumdur . Genellikle olumlu duygularla ilişkilendirilen "aşk" veya "hayran" gibi kelimeler vardır, ancak bunun olumsuz bir yorum olduğunu bilmek için bağlamı gerçekten anlamak gerekir.

Bu sadece potansiyel bir hipotezdir. Daha iyi bir fikir edinmek için, olumlu/olumsuz duygulara göre gruplandırırken her film için kelime bulutları oluşturduk:

Harry Potter İncelemeleri için Wordclouds (solda Olumlu, sağda Negatif)

Burada birkaç önemli şey fark ettik. Birincisi, "Harry Potter", "kitap", "film", "sahne", "film" ve daha fazlası gibi oldukça tahmin edilebilir kelimelerin çok yaygın olmasıdır. Bunun belirli bir nedeni, GloVe gömmemizin sabit bir korpus kullanmasıdır. Spesifik külliyatımıza özgü bir kelime gömme katmanı kullanmak faydalı olmuş olabilir. Bunu gömme katmanını eğitilebilir hale getirerek açıklamaya çalışsak da belki GloVe dışında farklı bir yöntem de deneyebilirdik.

Olumlu ve olumsuz kelime bulutlarında "iyi" gibi sözcükler de görüyoruz, bu da olumsuz yorumları sınıflandırma konusundaki sorunumuzu yeniden teyit ediyor. Harika! Artık biraz veri görselleştirmesi yaptığımıza ve veri kümemizi daha iyi anladığımıza göre, bir girdi filmi m alan ve insanların filmi ne kadar sevdiğiyle orantılı bir değer çıkaran bazı buluşsal H(m) tanımlamak istiyoruz.

Sezgisel ve İleri Analiz

H(m)'nin hem modelimizin tahminini hem de gerçek kritik derecelendirmesini açıklamasını istedik . H(m)'yi şu şekilde tanımlarız :

İlk olarak, pozitif derecelendirmelerin sayısını, pozitif derecelendirmelerin ortalama eleştirmen derecelendirmesine göre ağırlıklandırırız. Daha sonra bunu alır ve olumsuz değerlendirmelerin ortalama eleştirmen puanına göre ağırlıklandırılan olumsuz puanların sayısını çıkarırız. Bu iyi bir sezgiseldir, ancak modelimizin olumsuz yorumları sınıflandırmada en iyisi olmadığını hatırlamamız gerekir. Bu nedenle, buluşsal yöntemimizi aşağıdakine indirgeyen olumsuz incelemelerin ortalama puanını aslında umursamıyoruz:

Peki, bu buluşsal yöntemi kullanarak, sonuçlarımız nelerdir? Dört dizinin her biri için iki olay örgüsü oluşturmaya karar verdik. İlki, filme karşı ortalama eleştirmen derecelendirmesi ve ikincisi, filme karşı buluşsal yöntemimizdir:

Harry Potter Arsaları
Yıldız Savaşları Arsaları
Kung Fu Panda Çizimleri
Araba Arsaları

Dizilere göre gruplandırırken ortalama reyting planının çok fazla değişmediğine dikkat edin , bu da her bir dizideki tüm filmlerin eleştirmenler tarafından kabaca benzer bir seviyede görüldüğünü gösterir. Bu, bu sitede gerçekten yorum yazan kişilerin ve farklı puanlar vermeye istekli olduklarının bir göstergesi olabilir.

Doğru olay örgüsü, her seri için oldukça rastgele görünüyor. Göreli sıralama gerçekten önemli olduğundan, y eksenindeki gerçek sayının oldukça alakasız olduğuna dikkat edin. Seri ilerledikçe H(m) üzerinde belirgin bir artış veya azalma eğilimi yoktur . Görünüşe göre orijinaller, devam filminden biraz daha popüler olma eğiliminde , ancak bunun kesinlikle istisnaları var (Yıldız Savaşları).

Bir başka ilginç not da, Harry Potter'ın yanı sıra, buluşsal yöntemimize göre son filmin ya en az ya da en popüler film olmasıdır. Seri ya popülerlik eksikliği nedeniyle üretimi durdurduğu ya da yüksek bir notla sona erdiği için bu sezgisel olarak mantıklı. Ayrıca, bu Harry Potter için geçerli değil, çünkü kitaplar biter bitmez bittiler.

Sonuç ve gelecek iş

Harika! Devam filmlerinde orijinallerden daha kötü veya daha iyi olan kesin eğilimler bulamadık, ancak bu konuya dalma şansımız oldu. GloVe kelime yerleştirmelerini düzgün bir şekilde kullanabildik ve çift yönlü bir LSTM uygulayabildik. Ayrıca, verileri başarılı bir şekilde kazıyabildik ve bazı analizler yapabildik.

Gelecekte muhtemelen transformatörler gibi daha karmaşık NLP modellerini keşfedeceğiz. Ancak, en büyük sorunumuz iyi bir sezgisel H(m) tanımlamaktı . Buluşsal yöntemimizin iyi olup olmadığını kesin olarak belirlemek zor, ancak eksik olabileceğini öne sürmek için nedenler var.

Örneğin, bazı diziler için a_p'nin filmlerde sabit olduğunu varsayalım. Bunun çok büyük bir varsayım olmadığını çizimlerimizden gördük. Ardından buluşsal yöntemimiz, C = a_p'nin sabit olduğu H (m) = C * r_p -r_n'ye indirgenir . Bu, eleştirmen incelemelerinin buluşsal yöntemimize zar zor dahil edildiği anlamına gelir; bu sorunludur, çünkü modelimizin olumsuz incelemeleri sınıflandırmada en iyisi olmadığını zaten biliyoruz.

Bu aksiliklere rağmen, bu genel olarak gerçekten eğlenceli bir projeydi! Okuduğunuz için teşekkürler!