Article by Rafał Rybnik, Yazılım Geliştirme Müdürü at Instytut Badań Pollster

Aksi belirtilmedikçe, makaledeki tüm resimler yazara aittir.
Günümüzün çevrimiçi reklamcılık gerçekliğinde, etkili pazarlama taktikleri çeşitli kullanıcı izleme yöntemlerine dayanmaktadır üçüncü taraf çerezleri (ve alternatif depolar) ve cihaz parmak izi gibi teknikler. Ancak bir veri sızıntıları, GDPR, CCPA ve bunlardan esinlenen artan veri koruma mevzuatı dünyası, bu yaklaşımı geçersiz hale gelir. Safari ve Firefox siteler arası izlemeyi azaltmak için zaten yerleşik çözümler sunuyor. Chrome da alternatifler üzerinde çalışıyor. Yani üçüncü taraf çerezlerinin sonu çok yakında. Apple'ın Tanımlayıcısı Reklamverenler (IDFA) yakında yalnızca kullanıcının açık rızası olan uygulamalar için erişilebilir olacak. Reklamverenler Alanlar arası izleme olasılığının ortadan kalkması, reklamverenlerin bağlamsal izleme yöntemine geri dönmesine neden olmaktadır. Reklam.
Bu makalede, Metin Sınıflandırma API'sine dayalı olarak bağlam hedeflemenin nasıl uygulanacağını gösteriyorum NLP Cloud tarafından sağlanmaktadır. Burada açıklanan yaklaşım herhangi bir reklam teknolojisine kolayca uyarlanabilir (reklam sunucuları, OpenRTB vb. gibi).
Reklamverenler üçüncü taraf çerezleri kullanarak bireysel kullanıcıları hedefleyemeyecekleri için, kolay bir öngörü, bağlamsal reklam kampanyalarının yeniden yükselişe geçmesidir. Bu, kullanıcıyı hedeflemenin tek yolu olabilir yeterince büyük bir ölçekte ilgi alanları. Bağlamsal reklamlar, kullanıcının baktığı içeriğe dayanır Şu anda tarayıcı geçmişleri veya davranış profilleri yerine.

(resimden Bağlamsal Nedir
Reklam mı?)
Kullanıcılar için daha ilgi çekici olması bekleniyor, çünkü reklamın konusuyla eşleşen reklamlar görecekler. ziyaret ettikleri web sitesi sayfaları.
Çoğu reklam sunma teknolojisi ve reklam ağı, reklam sırasında anahtar kelimelerin veya etiketlerin iletilmesini destekler hizmet kodları. Metin, web'in özüdür ve son derece zengin bir bilgi kaynağı olabilir. Ancak, Örneğin reklam veya tavsiye amaçlı olarak bağlam, etiket ve anahtar kelimelerin çıkarılması zor ve zaman alıcıdır. Ancak orta ölçekli bir haber sitesinin bile sahibiyseniz, birkaç etiketin ötesinde editör ekibi tarafından tahsis edildiğinden, ilgili tüm konuları çıkarmak zor olacaktır.
Bu süreci otomatikleştirmeye yönelik ilk girişimler geçmişte az ya da çok komik başarısızlıklarla sonuçlanmıştır:
Neyse ki, Doğal Dil İşleme alanındaki gelişmeler çok daha kısa sürede çok daha doğru eşleşmeler yapılmasına olanak sağlamaktadır. Metin sınıflandırma, metin içeriğiyle tutarlı kategorilerin veya etiketlerin atanmasıdır.
Çeşitli konularda makaleler içeren örnek bir sayfayı ele alalım:
Amacımız, reklam yerleşimlerinin makale içeriğiyle tematik olarak ilgili bannerlar göstermesini sağlamaktır.
Çözümümüzün karşılaması gereken koşullar:
Reklam sistemleri ve web geliştirmenin bu makalenin kapsamı dışında olduğunu unutmayın, ancak genel kavramlar, kullanılan araç ve teknolojilerden bağımsız olarak aynı kalır.
Bu gibi durumlarda tercih ettiğim çözüm, metin sınıflandırmasını işleyen mantığı bir ayrı bir API. İki seçeneğimiz var: bunu kendimiz oluşturmak veya hazır bir çözüm kullanmak.
Python ve Doğal Dil İşleme kütüphanelerini kullanarak basit bir metin sınıflandırma motoru hazırlamak bir öğleden sonra için bir görevdir. Ancak sorun doğruluk ve artan trafiğe hizmet etme açısından ortaya çıkıyor. Büyüyen kullanıcı tabanını ve onların tıklama akışını bir şekilde idare etmemiz gerekiyor.
Bir web sitesi sahibiyseniz, makine öğrenimi modellerinin ayarlanması ve değerlendirilmesiyle oynamak istemeniz pek olası değildir. Bu yüzden elimizden geldiğince bu işi harici bir çözüme devredeceğiz. Burada herhangi bir kullanıcı verisi göndermeyi planlamadığımızı, yalnızca web sitesine ait verileri göndermeyi planladığımızı unutmayın. Bu, harici bağlamsal hedefleme araçlarının kullanımını kullanıcı gizliliği açısından çok daha basit hale getirir.
NLP Cloud, makine öğrenimi modellerini kullanarak metin işleme için birden fazla API sağlayıcısıdır. Bunlardan biri metin sınıflandırıcıdır, basit uygulama açısından umut verici görünüyor (dokümanlara bakın).
NLP Cloud API ile, belirli bir iş durumu için hangi algoritmanın yararlı olabileceğini deneyebilirsiniz.
Web sitesinin arka ucu Python tabanlı (Flask) olduğundan, Doğal Dil İşleme için basit bir istemci yazarak başlıyoruz API:
import pandas as pd
import requests
import json
class TextClassification:
def __init__(self, key, base='https://api.nlpcloud.io/v1/bart-large-mnli',):
self.base = base
self.headers = {
"accept": "application/json",
"content-type": "application/json",
"Authorization": f"Token {key}"
}
def get_keywords(self, text, labels):
url = f"{self.base}/classification"
payload = {
"text":text,
"labels":labels,
"multi_class": True
}
response = requests.request("POST", url, json=payload, headers=self.headers)
result = []
try:
result = dict(zip(response.json()['labels'], response.json()['scores']))
except:
pass
return result
tc = TextClassification(key='APIKEY')
print(
tc.get_keywords(
"Football is a family of team sports that involve, to varying degrees, kicking a ball to score a goal. Unqualified, the word football normally means the form of football that is the most popular where the word is used. Sports commonly called football include association football (known as soccer in some countries); gridiron football (specifically American football or Canadian football); Australian rules football; rugby football (either rugby union or rugby league); and Gaelic football.[1][2] These various forms of football share to varying extent common origins and are known as football codes.",
["football", "sport", "cooking", "machine learning"]
)
)
Results:
{
'labels': [
'sport',
'football',
'machine learning',
'cooking'
],
'scores': [
0.9651273488998413,
0.938549280166626,
0.013061746023595333,
0.0016104158712550998
]
}
Oldukça iyi. Her etiketin konuyla ilgisi hiç çaba sarf etmeden belirleniyor.
Plan, görüntülenecek bannerların seçiminin bir reklam sunma sistemi tarafından yapılmasıdır (karar bireysel olarak atanan etiketlerin puanlarına dayanacaktır). Bu nedenle, etiketleri açığa çıkarmamak için API anahtarları ve veriler üzerinde daha fazla kontrole sahip olmak için basit bir proxy yazacağız:
@app.route('/get-labels',methods = ['POST'])
def get_labels():
if request.method == 'POST':
try:
return tc.get_keywords(request.json['text'], request.json['labels'])
except:
return []
Yürütülecek 3 reklam kampanyamız olduğunu varsayalım:
Sigorta şirketi (anahtar kelime: insurance)
Yenilenebilir enerji şirketi (anahtar kelime: renewables)
Kuaför (anahtar kelime: good look)
Ön uçta, uygun bir reklam öğesinin görüntülenmesini yönetecek bir mekanizma çizelim.
function displayAd(keyword, placement_id) {
var conditions = {
false: '
',
"insurance": '
',
"renewables": '
',
"good look": '
'
}
var banner = document.querySelector(placement_id);
banner.innerHTML = conditions[keyword];
}
Bu bizim reklam sunucumuz 🤪
Şimdi fetch kullanarak, seçicisini kullanarak elde ettiğimiz bir makalenin metni için etiketleri alacağız:
var text = document.querySelector("#article").textContent;
var labels = ["insurance", "renewables", "good look"];
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"text":text,"labels":labels});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
};
fetch("http://127.0.0.1:5000/get-labels", requestOptions)
.then(response =>
response.json()
)
.then(result => {
if (result == []){
console.log("self-promote");
displayAd(false, "#banner");
} else {
var scores = result['scores'];
var labels = result['labels'];
if (Math.max(...scores) >= 0.8) {
console.log("Ad success");
var indexOfMaxScore = scores.reduce((iMax, x, i, arr) => x > arr[iMax] ? i : iMax, 0);
displayAd(labels[indexOfMaxScore], "#banner");
} else {
displayAd(false, "#banner");
}
}
})
.catch(error => console.log('error', error));
Müşteri reklamını yalnızca puan 0,8'in üzerindeyse gösterdiğimizi unutmayın:
Math.max(…scores) >= 0.8
Aksi takdirde, kendi reklamımızı yapmış oluruz.
Bu elbette keyfi bir değerdir ve gerektiğinde sıkılaştırılıp gevşetilebilir.
Yenilenebilir enerji kaynağı ile ilgili haberler PV hücre reklamlarına uyar.
Evdeki tehlikelerle ilgili haberler satın alma niyetini artırabilir
Sigorta.
Her ne kadar sigorta ile ilgili bir reklam makale için uygun olsa da
doğru alaka düzeyine ulaşılamadığı için görüntülenmedi.
Dikkatli okuyucu, kuaför afişi örneğinin yer almadığını fark edecektir. Bu çünkü makalelerin konusu ciddi dünya haberlerine odaklanıyor, moda meseleleri ele alınmamıştır. Kampanyayı uygulayabilmek için farklı bir site seçmeniz veya kampanyanızı yeniden düşünmeniz gerekir. anahtar kelime stratejisi.
Bu asenkron fonksiyon sayesinde hızlı sayfa yüklemesi elde edebiliriz: fetch .
Ancak, aynı zamanda, reklam yalnızca etiketler indirildikten sonra gösterilecektir. Bu sebepten dolayı
ve maliyetleri düşürmek için, üretim ortamında bir tür önbellek uygulamak en iyisidir.
Ek bir değişiklik de etiketleri doğrudan veritabanında saklamak olabilir. Seyrek olarak güncellenmiş makaleler, bu kesinlikle mantıklı.
Bununla birlikte, herhangi bir metni besleyebileceğimiz ve etiketlerini alabileceğimiz ayrı bir API'ye dayalı bir çözüm bize şunları sağlar erişim olmadan bile JS kodunu neredeyse gerçek zamanlı olarak herhangi bir sayfada kullanma imkanı arka uç!
Bağlamsal hedeflemeyi kullanmanın en büyük zorluğu, bunu haber web sitelerinde kullanmaktır. Birçok konu haber sitelerinde reklamverenin sektörüne uygun olanlar da dahil olmak üzere orada yayınlanan makaleler. Ancak Aynı zamanda, içerdikleri hikayelerin sansasyonel ve çoğu zaman üzücü tonları da Reklam.
Metin Öte yandan, NLP Cloud'un sınıflandırma API'si metinleri etiketleme konusunda oldukça iyi bir iş çıkarmaktadır, bu nedenle tüm süreci tekrarlayabiliriz, bu sefer belirli bir konuya sahip metinleri hariç tutmayı aklımızda tutarak üzerlerinde afişlerin yayılmasından (metin sınıflandırma API sayfasına bakın)

Okuduğunuz için teşekkür ederim. Umarım benim sizin için bunları yazarken keyif aldığım kadar siz de okurken keyif almışsınızdır.