İçeriğe geç
Kaynak kütüphanesi
GOCUX / Makalelerknowledge

Önce şema: her değeri dayandığı pasaja bağlayan veri çıkarma

Web sayfalarını ve dokümanları güvenilir alanlara dönüştürmek: şema tasarımı, her değer için destekleyici pasaj, tahmin yerine bilinmiyor ve ölçekte doğrulama.

Veri çıkarma, sayfaları ve dokümanları satırlara dönüştüren adımdır: bir şirketin genel merkezinin bulunduğu şehir, bir sözleşmenin yenilenme tarihi, bir ürünün ölçüleri, bir klinik çalışmanın destekçisi. Dil modelleri bu işe başlamayı çok kolaylaştırdı; artık her sayfa düzeni için ayrı bir ayrıştırıcı yazmak gerekmiyor. Ama hacim büyüdükçe yanlış yapmayı da kolaylaştırdılar; çünkü bir alanı doldurması istenen model, kaynak bir şey söylesin ya da söylemesin, o alanı genellikle doldurur. Bu yazıda kontrol edilebilir bir veri çıkarma düzeninin nasıl kurulacağını anlatıyoruz: şema, her değer için destekleyici bir pasaj, dürüst "bilinmiyor"lar ve büyük bir partinin son dokümanında da işe yarayan doğrulama.

Malzemeyi edinmek ve okumak ayrı işlerdir

"Web sitelerinden veri çıkarmak" ifadesi, farklı biçimlerde bozulan iki sorunu tek pakette toplar.

  • Edinme içeriği getirir: sayfaları çekmek, JavaScript'i işlemek, sayfalamayı izlemek, PDF indirmek, bir API çağırmak ya da bir sistemden dışa aktarmak. Hataları; engellenen istekler, giriş duvarları, içerik yerine kaydedilen çerez bildirimleri ve bir gecede değişen sayfa düzenleridir. Yükümlülükleri de vardır: sitenin kullanım koşulları, robots kuralları, istek sınırları ve herkese açık sayfalarla bir hesabın arkasındaki sayfalar arasındaki fark.
  • Çıkarma bu içeriği okur ve alanlar üretir. Hataları; yanlış değerler, dayanağı olmayan değerler ve tutarsız biçimlerdir.

Bu ikisini veri hattınızda ayrı tutun. Edinme anında ham içeriği kaynak adresiyle, çekildiği zamanla ve alınan içeriğin özetiyle (hash) birlikte saklayın. Böylece çıkarma her zaman bilinen bir anlık görüntü üzerinde çalışır ve her değer tam olarak geldiği metne kadar izlenebilir. Edinme tarafı için web kazıma nedir ve kazıma API'si seçimi yazılarına, özellikle temiz makale metni almak için makale çıkarma yazısına bakabilirsiniz.

Şemayı istemden önce tasarlayın

Çıkarma kalitesinin büyük kısmı, model tek bir sayfa görmeden belirlenir. İyi bir şema her alan için şu soruları yanıtlar:

  • Tür ve biçim. Tarihler ISO 8601 biçiminde, tutarlar bir sayı ve ayrı bir para birimi koduyla, ülkeler serbest metin olarak değil kod olarak.
  • İzin verilen değerler. Alan bir kategoriyse kategorileri listeleyin. "Diğer" geçerli bir seçenektir; uydurulmuş bir kategori değildir.
  • Çokluk. Tek bir değer mi, bir liste mi? Bir şirketin birkaç ofisi olabilir; bir sözleşmenin tek bir yürürlük tarihi vardır.
  • Uç durumları içeren bir tanım. "Genel merkez", en büyük ofis ya da ana şirketin adresi değil, kayıtlı ya da beyan edilen merkez ofis demektir.
  • Değerin yanında bir durum. Değerin bulunup bulunmadığı, belirtilmediği, belirsiz mi yoksa çelişkili mi olduğu.

Şemayı JSON Schema olarak yazmak, her çıktıyı mekanik olarak doğrulamanızı sağlar. Kanıt düşünülerek tasarlanmış tek bir alan şöyle görünür:

"merkez_sehir": {
  "value": "metin ya da null",
  "status": "found | not_stated | ambiguous | conflicting",
  "evidence": [
    {
      "source": "doküman kimliği ya da sayfa adresi",
      "retrieved_at": "saklanan anlık görüntünün zamanı",
      "quote": "kaynaktaki birebir pasaj",
      "location": "sayfa, bölüm ya da öğe"
    }
  ]
}

Her değer için destekleyici bir pasaj

Veri çıkarmadaki en yararlı tek kural şudur: hiçbir değer, onu destekleyen pasaj olmadan tablonuza girmez. Pasaj, incelemeyi "bu doğru mu?" sorusundan "bu cümle bunu söylüyor mu?" sorusuna çevirir; bir insan buna saniyeler içinde yanıt verebilir. Ayrıca bütün bir hata sınıfını yakalayan ucuz bir otomatik kontrolü mümkün kılar: boşluk ve noktalama normalleştirildikten sonra alıntının saklanan kaynak metinde gerçekten geçip geçmediğini doğrulayın. Bulunamayan bir alıntı uydurulmuştur; büyük olasılıkla yanındaki değer de öyledir.

Alıntının metinde bulunması gerekli ama yeterli değildir. Gerçek bir cümle de yanındaki değeri desteklemeyebilir: genel merkez alanına iliştirilmiş bir bölge ofisi alıntısı ya da aynı dosyadaki başka bir sözleşmeye ait bir tarih gibi. Değerin alıntının içinde geçtiğini ya da ondan türetilebildiğini kontrol edin (sayılar ve tarihler için bu kodla yapılabilir), geri kalanından insan incelemesi için örnek alın. Atıf kanıta işaret eder; okumanın doğru olduğunu kanıtlamaz. Bir işaretçiyi neyin güvenilir kıldığını sağlam atıflar yazısı daha derinlemesine ele alıyor.

Tahmin yerine "bilinmiyor"

Modelin içgüdüsü yardımcı olmaktır; veri çıkarmada yardımseverlik, her hücrede makul görünen bir değer demektir. Makul görünen değerler hataların en kötüsüdür, çünkü hızlı bir bakışta göze batmazlar. "Bilinmiyor"u birinci sınıf bir yanıt hâline getirin.

  • Şemada null değerine izin verin ve bunu açıklayan bir durumu zorunlu kılın.
  • Belirtilmemiş (kaynak okundu ve bir şey söylemiyor), kontrol edilmemiş (ilgili sayfa hiç çekilmedi), belirsiz (metin birden fazla okumaya izin veriyor) ve çelişkili (iki kaynak birbirini tutmuyor) durumlarını ayırın. Her birinin sonraki adımı farklıdır.
  • Kaynağın dışından çıkarım yapmayı yasaklayın: alan adı uzantısından ülke tahmin etmek ya da kuruluş yılını genel bilgiden doldurmak yok.
  • Sonraki adımlardaki kodun da buna uymasını sağlayın. Bilinmeyen bir ciro tabloda sıfıra dönüşmemeli, boş bir metin eşleşme sayılmamalıdır.
alan               değer       durum           kanıt
merkez_sehir       Rotterdam   bulundu         hakkımızda sayfası: "Genel merkezimiz Rotterdam'da"
kurulus_yili       null        belirtilmemiş   bakılan: hakkımızda, iletişim, alt bilgi
calisan_araligi    null        çelişkili       kariyer sayfası "100'ün üzerinde", hakkımızda "60 civarı"

Boşlukları dürüstçe gösteren bir tablo, eksiksiz görünen bir tablodan daha değerlidir; çünkü hangi hücrelere güvenebileceğinizi bilirsiniz. Bir boşluğun neden örtülmek yerine görünür kalması gerektiğini eksik kanıt açık bir sorudur yazısı anlatıyor.

Ölçekte işe yarayan doğrulama

Her satırı elle incelemek kısa sürede imkânsız hâle gelir. Onun yerini, her biri farklı bir hatayı yakalayan katmanlı kontroller alır.

  1. Yapı. Her kaydı şemaya göre doğrulayın: türler, izin verilen değerler, zorunlu alanlar. Sessizce onarmak yerine reddedip yeniden deneyin.
  2. Kanıt. Her alıntının saklanan kaynakta bulunduğunu, sayı ve tarih değerlerinin de kendi alıntılarının içinde geçtiğini doğrulayın.
  3. Tutarlılık. Alanlar arası kurallar (bitiş tarihi başlangıçtan sonra gelir) ve kayıtlar arası kurallar uygulayın (bir şirket, bir genel merkez; aynı varlık için yinelenen satır yok).
  4. Kayma. Her partide durumların payını izleyin. "Belirtilmemiş" payındaki ani bir artış genellikle dünyanın değiştiğini değil, edinme adımının bozulduğunu gösterir; örneğin bir site artık onay sayfası döndürmeye başlamıştır.
  5. Etiketli örneklem. Yanıtları elle kontrol edilmiş bir doküman seti tutun; şemayı, istemi ya da modeli her değiştirdiğinizde yeniden çalıştırın. Tek bir genel puanla değil, alan alan karşılaştırın.
  6. Kapsam. Elde ettiğinizin yanında neyi denediğinizi de raporlayın. Satır sayısı, kaç eşleşen varlığı kaçırdığınız hakkında hiçbir şey söylemez.

Her satıra şema sürümünü, çıkarıcı sürümünü ve kaynak özetini yazın. Bir şey değiştiğinde yalnızca etkilenen kısmı yeniden çıkarabilir, çalıştırmadan çok sonra bile herhangi bir değeri açıklayabilirsiniz.

GoCux nerede devreye girer

GoCux açık web'i taramaz; bu yüzden edinme adımı, bunun için kullandığınız araçta ve izinlerde kalır. Web malzemesi gerektiğinde yetkilendirilmiş bir tarayıcı ya da dışa aktarma adımıyla gelir ve özgün sayfanın adresi ile çekildiği tarih birlikte içe aktarılır. Oradan sonra Bilgi çıkarma, sizin sağladığınız malzeme üzerinde çalışır: her değer arkasındaki pasajla birlikte gelir; kaynağın içermediği bir değer tahminle doldurulmaz, bilinmiyor olarak bırakılır. İş, belirli ölçütleri karşılayan her adayı bulmaksa FindAll her satırın kendi kanıtını taşıdığı bir tablo döndürür ve kapsamın nerede bittiğini boşlukları yuvarlayıp gizlemeden açıkça söyler. Sonucu dışa aktarmak sonuç doğuran bir eylem sayılır; iş durur ve dışarı çıkacak dosyaları listeler. Elinizdeki malzemeyle çalışmayı kendi kanıtınızı getirin yazısı anlatıyor.

Veri çıkarma kontrol listesi

  • Ham içerik, çıkarma çalışmadan önce kaynak adresi, çekilme zamanı ve özetiyle birlikte saklanıyor mu?
  • Her alanın bir türü, izin verilen değerleri, çokluğu ve uç durumları içeren yazılı bir tanımı var mı?
  • Her değer birebir bir alıntı ve konumunu taşıyor mu?
  • Her alıntı, saklanan kaynağa karşı otomatik olarak kontrol ediliyor mu?
  • Bir alan, nedenini söyleyen bir durumla birlikte bilinmiyor olarak kalabiliyor mu?
  • Kaynağın dışından çıkarım yapmak açıkça yasaklanmış mı?
  • Yapı, kanıt ve tutarlılık kontrolleri her partide çalışıyor mu?
  • Bozulan edinmeyi yakalamak için parti başına durum paylarını izliyor musunuz?
  • Her değişiklikten sonra yeniden çalıştırdığınız etiketli bir örneklem var mı?
  • Raporlar yalnızca satır sayısını değil, kapsamı da belirtiyor mu?

Bu iş akışını çalışma alanınıza taşıyın.

Kapsamı belirleyin. Kanıtları inceleyin. Gereken adımları onaylayın.

Çalışma alanını aç

Sıradaki adım