Öğretici: Federalist Papers¶
Mosteller & Wallace'ın (1964) 85 Federalist Papers üzerindeki klasik yazar tespiti çalışmasının yeniden üretimi.
Arka plan¶
Federalist Papers (1787–1788), ABD Anayasası'nın onaylanması için Publius takma adıyla yayımlandı. 73 makalenin yazarlığı bilinmektedir (Hamilton, Madison, Jay); geri kalanlar ya ortak çalışmadır ya da Hamilton ile Madison arasında tartışmalıdır. Mosteller & Wallace (1964), sözcük sıklığı Bayesian çıkarımını kullanarak tartışmalı makaleleri Madison'a atadı — sonraki stilometrik çalışmalar bu sonucu genel olarak desteklemiştir.
Literatür genellikle 12 tartışmalı makale sayar (49–58, 62, 63). bitig ile gelen derlem 58 numaralı makaleyi Madison olarak etiketler; bu nedenle derlemde 11 tartışmalı makale (49–57, 62, 63) ve 3 ortak Hamilton–Madison makalesi (18–20) bulunur.
Bu öğretici, bitig'yı kullanarak çalışmanın özünü iki adımda yeniden üretir:
- 71 tek yazarlı makaleyi Burrows Delta, PCA, Ward dendrogramı ve Craig's Zeta ile inceleyen
bildirimsel bir
study.yaml. Tartışmalı makaleler bu adımın dışında tutulur: PCA'ya yansıtılmazlar ve şekillerinde görünmezler. - Bilinen makaleler üzerinde eğitip her tartışmalı makaleyi bir adaya atayan ayrı bir yazar
tespiti adımı (
--test-filterilebitig delta/bitig bayesian).
Ne oluşturacaksınız¶
Sonunda şunlara sahip olacaksınız:
- 85 Federalist Paper aktarılmış bir proje iskeleti.
- Dört analiz tanımlayan bir
study.yaml: Burrows Delta, PCA, Ward kümeleme, Hamilton ile Madison arasında Craig's Zeta karşıtlığı. - Yöntem başına
ResultJSON'ları ve oluşturulmuş şekilleri içeren birresults/demo/dizini. - Her şeyi bir araya getiren tek bir HTML raporu.
1. Projeyi başlatın¶
Bu komut, boş bir corpus/ ve başlangıç study.yaml içeren bir proje dizini oluşturur.
2. Makaleleri ekleyin¶
Deponun examples/federalist/
dizininde 85 makalenin tamamı ayrı .txt dosyaları olarak ve hazır bir metadata.tsv ile
mevcuttur. corpus/ ile metadata.tsv dosyalarını kopyalayın ya da örnekteki kendi
README.md dosyasını takip ederek Project Gutenberg'den oluşturun. Her dosya yalnızca deneme
metnini içerir ve "To the People of the State of New York" hitabıyla başlar: Project Gutenberg
başlığı (makale numarası, başlık, gazete ve tarih, yazar imzası) çıkarılmıştır; böylece buradaki
yazar adları özniteliklere sızamaz.
metadata.tsv'de her makale için şu sütunlar bulunur: filename, author, role, notes.
role, 71 tek yazarlı makale için train, 11 tartışmalı makale için test (author =
Disputed) ve 3 ortak makale için excluded (author = Joint_HM) değerini alır. Aşağıdaki
çalışma dosyayı corpus/metadata.tsv konumundan okur; bu yüzden onu corpus/ içine kopyalayın.
3. study.yaml dosyasını düzenleyin¶
name: federalist
seed: 42
output:
dir: results
timestamp: false
corpus:
path: corpus
metadata: corpus/metadata.tsv
filter:
role: [train] # tartışmalı makaleleri eğitimden dışla
features:
- id: mfw200
type: mfw
n: 200
scale: zscore
lowercase: true
methods:
- id: burrows
kind: delta
variant: burrows
features: mfw200
group_by: author
- id: pca
kind: reduce
features: mfw200
params: { n_components: 2 }
- id: ward
kind: cluster
features: mfw200
params: { n_clusters: 3, linkage: ward }
- id: zeta_hamilton_madison
kind: zeta
group_by: author
params:
top_k: 50
group_a: Hamilton
group_b: Madison
filter: role: [train] satırı, çalışmadaki her yöntem için yalnızca 71 tek yazarlı makaleyi
(Hamilton, Madison, Jay) tutar. Tartışmalı ve ortak makaleler hiç yüklenmez; dolayısıyla hiçbir şey
geri yansıtılmaz: Delta burada yalnızca örneklem içi (yeniden ikame) doğruluğunu raporlar, PCA ve
dendrogram da yalnızca yazarı bilinen makaleleri gösterir. Tartışmalı makalelerin yazar tespiti
5. adımdadır.
4. Çalışmayı çalıştırın¶
results/demo/ altında yöntem başına dizinler beklenir:
results/demo/
├── resolved_config.json
├── burrows/
│ ├── result.json
│ └── confusion_matrix.png
├── pca/
│ ├── result.json
│ ├── scatter.png
│ └── pca_biplot.png
├── ward/
│ ├── result.json
│ └── dendrogram.png
└── zeta_hamilton_madison/
├── result.json
├── table_0.parquet # Hamilton'ın tercih ettiği sözcük dağarcığı
├── table_1.parquet # Madison'ın tercih ettiği sözcük dağarcığı
└── zeta.png
Her result.json kendi köken bilgisi bloğunu (derlem özeti, seed, çözümlenmiş yapılandırma)
taşır. Bir yöntem başarısız olursa dizininde bunun yerine bir error.txt bulunur ve bitig run
1 durum koduyla çıkar.
5. Tartışmalı makaleleri atayın¶
Bildirimsel çalışma henüz bir alt küme üzerinde eğitip başka birini puanlayamaz; bu yüzden yazar
tespiti, --test-filter ile bitig delta ve bitig bayesian komutlarını kullanır:
bitig delta corpus --method burrows --mfw 200 \
--metadata corpus/metadata.tsv --group-by author --test-filter role=test
bitig bayesian corpus --mfw 200 \
--metadata corpus/metadata.tsv --group-by author --test-filter role=test
Her iki komut da --test-filter ile seçilmeyen her makale üzerinde eğitilir: 71 tek yazarlı
makale ve Hamilton, Madison ve Jay'in yanında dördüncü bir Joint_HM sınıfı oluşturan 3 ortak
makale. Hiçbir komut ortak makaleleri dışarıda bırakamaz; bunun için onları verdiğiniz derlem
dizininden çıkarın.
bitig bayesian bir max p(author) sütunu yazdırır. Bunlar her sözcük geçişini bağımsız sayan
Naive Bayes sonsal değerleridir; bu nedenle 0'a ya da 1'e itilirler ve kalibre edilmiş
olasılıklar değildir. Bunları bir kesinlik ölçüsü olarak değil, adayların sıralaması olarak
okuyun.
6. Şekilleri oluşturun¶
bitig run yukarıda listelenen varsayılan şekilleri zaten yazar, ancak PCA dağılım grafiği yazara
göre renklendirilmez. Örnek, PCA dağılım grafiğini yazara göre renklendirerek yeniden çizen, ayrıca
dendrogramı ve Zeta grafiğini üreten bir render_figures.py içerir:
Bu komut ilgili yöntem dizinlerine pca.png, ward.png ve zeta.png üretir. Betik örneğin kendi
study.yaml dosyası için yazıldığından şekil başlıklarında "MFW=500" yazar.
7. Rapor¶
HTML'yi tarayıcıda açın — yöntem bölümleri, gömülü şekiller ve bir köken bilgisi bölümü içeren tek sayfalık bir rapor elde edersiniz.
Beklenen sonuç¶
Yukarıdaki adımlar, gelen derlem üzerinde çalıştırıldığında şu sayıları verir:
- PCA (71 makale, MFW 200): ilk iki bileşen varyansın %7,4'ünü ve %5,9'unu açıklar (toplam %13,3). PC1 esas olarak Jay'in beş denemesini diğer tüm makalelerden ayırır. Hamilton ve Madison büyük ölçüde örtüşür: Madison makaleleri PC2'de ortalamada daha yukarıda yer alır, ancak temiz bir ayrım yoktur. Örneğin kendi MFW 500 çalışmasında iki bileşen %5,6 ve %4,5 açıklar.
- Ward (3 küme): Madison makaleleri kendi başına bir küme oluşturmaz. Dokuzu, 45 Hamilton ve 2 Jay makalesiyle birlikte en büyük kümede yer alır; diğer altısı 6 Hamilton makalesiyle ikinci bir küme oluşturur. Kalan 3 Jay makalesi üçüncü kümeyi oluşturur.
- Çalışmadaki Burrows Delta: yeniden ikame doğruluğu 1,0. Bu bir yazar tespiti sonucu değil, örneklem içi bir ayrışabilirlik denetimidir.
- Zeta: Hamilton'ın tercih ettiği sözcükler listesinin başında
upon,kind,community,intendedvemen; Madison'ın listesinin başındafew,consequently,whilst,proceedingsveparticularlyyer alır.uponvewhilst, Mosteller & Wallace'ın dayandığı belirteçler arasındadır. - Yazar tespiti (5. adım):
bitig delta(MFW 200) 11 tartışmalı makalenin tamamını Madison'a atar.bitig bayesianda 11 makalenin hepsi için Madison'ı seçer ve her biri içinmax p(author)= 1.000 yazdırır. Yukarıda açıklandığı gibi bu 1.000 kalibre edilmiş bir olasılık değildir.--mfw 500ile (örnek dizinindekiREADME.mdkomutları)bitig bayesianyine 11 makalenin hepsi için Madison'ı seçer, ancakbitig delta50 numaralı makaleyi dördüncü sınıf olanJoint_HM'ye, diğer 10 makaleyi Madison'a atar. İki ayarda da hiçbir tartışmalı makale Hamilton'a atanmaz.
Madison ataması Mosteller & Wallace'ın 1964 sonucuyla örtüşür.
Bu öğreticinin hızlı başlangıç mini sürümü önce yalnızca 9 makale üzerinde işlem hattını
çalıştırmak isteyenler için
examples/quickstart/
adresindedir.