Ana içeriğe geç

Öznitelikler

Her öznitelik çıkarıcı, yöntemlerin tükettiği ortak sayısal zarf olan bir FeatureMatrix döndürür.

FeatureMatrix

@dataclass
class FeatureMatrix:
    X: np.ndarray            # (n_docs, n_features)
    document_ids: list[str]
    feature_names: list[str]
    feature_type: str
    extractor_config: dict[str, Any]
    provenance_hash: str

Temel özellikler:

  • fm.n_features, n_docs için len(fm)
  • fm.as_dataframe()document_ids ile indekslenmiş pandas DataFrame
  • fm.concat(other) — aynı satır kimliklerine sahip iki matrisi sütun bazında birleştirir

Mevcut çıkarıcılar

tamga'dan içe aktarın:

Çıkarıcı Girdi Çıktı
MFWExtractor(n=..., scale=..., lowercase=...) Corpus en sık n sözcüğün göreli frekansları (z-puanlı, L1, L2 veya ham)
CharNgramExtractor(n=..., include_boundaries=...) Corpus karakter n-gramı sayımları (sklearn CountVectorizer'a devredilir)
WordNgramExtractor(n=..., lowercase=...) Corpus sözcük n-gramı sayımları
PosNgramExtractor(n=..., coarse=...) Corpus spaCy sözcük türü (POS) n-gramları
DependencyBigramExtractor() Corpus (head_lemma, dep, child_lemma) üçlüleri
FunctionWordExtractor(wordlist=...) Corpus paketlenmiş İngilizce işlev sözcüğü frekansları
PunctuationExtractor() Corpus ASCII noktalama frekansları
ReadabilityExtractor() Corpus altı okunabilirlik indeksi (Flesch, FK-grade, Gunning Fog, Coleman-Liau, ARI, SMOG)
SentenceLengthExtractor() Corpus cümle başına belirteç sayısının ortalama, standart sapma ve çarpıklığı
LexicalDiversityExtractor() Corpus TTR, MATTR, MTLD, HD-D, Yule's K/I, Herdan's C, Simpson's D
SentenceEmbeddingExtractor(model=...) Corpus sentence-transformers havuzlanmış gömmesi (ek: tamga[embeddings])
ContextualEmbeddingExtractor(model=..., pooling=...) Corpus HF dönüştürücü gizli durum vektörleri (ek: tamga[embeddings])

Öznitelik çıkarıcı ayrıntısı

Yukarıdaki her çıkarıcı çağrılabilir bir nesnedir; fit_transform(corpus) bir FeatureMatrix döndürür.

MFWExtractor

MFWExtractor(n=200, scale="zscore", lowercase=True)

Şu durumda kullanın: kanonik stilometrik özniteliği — en sık sözcüklerin (MFW) göreli frekanslarını — istediğinizde. Delta-ailesi atıf çalışmaları için varsayılan seçimdir. Şu durumda kullanmayın: derleminiz çok küçükse (<200 benzersiz belirteç) ya da soru konudan bağımsızsa (MFW konuya duyarlıdır; bkz. CategorizedCharNgramExtractor). Beklenen sonuç: (n_docs, n) boyutlu kayan noktalı matris; scale="l1" altında satırlar ~1'e, scale="zscore" altında sıfır merkezli birim varyansa eşittir.

CharNgramExtractor

CharNgramExtractor(n=3, include_boundaries=True)

Şu durumda kullanın: alt sözcük stilini (ön ekler, son ekler, noktalama bitişikliği) yakalayan ve OOV sözcükler ya da yazım hatalarıyla başa çıkabilen öznitelikler istediğinizde. Şu durumda kullanmayın: dillerin yazı sistemleri karışıyorsa (yazı sistemleri arasındaki n-gramlar gürültü üretir) ya da sözcük düzeyinde anlamsal duyarlılık gerekiyorsa. Beklenen sonuç: sklearn'ın CountVectorizer bileşenine devredilmiş seyrek sayım matrisi.

WordNgramExtractor

WordNgramExtractor(n=1, lowercase=True)

Şu durumda kullanın: unigramlar (MFW eşdeğeri) ya da kısa bigram ifadeler istediğinizde ve z-puanlama istemediğinizde. Bigramlar sabit ifadeleri saptamak için kullanışlıdır. Şu durumda kullanmayın: küçük derlemlerde n ≥ 3 — seyreklik baskın gelir. Unigramlar için ham sayımlar gerekmiyorsa MFWExtractor kullanın. Beklenen sonuç: seyrek sayım matrisi; sözcük dağarcığı n ile hızla büyür.

PosNgramExtractor

PosNgramExtractor(n=2, coarse=False)

Şu durumda kullanın: sözdizimsel stil öznitelikleri — sözcük türü (POS) etiketi dizileri — istediğinizde; içerik sözcüklerine duyarsız, kayıt ve sözdizimsel kayda duyarlıdır. Şu durumda kullanmayın: spaCy ardışık düzeniniz bir etiketleyici içermiyorsa (çoğu _trf modeli içerir) ya da belgeler çok kısaysa. Beklenen sonuç: POS n-gramları üzerinde seyrek sayım matrisi. coarse=True UD kaba etiketlerini kullanır (daha az boyut, daha sağlam).

DependencyBigramExtractor

DependencyBigramExtractor()

Şu durumda kullanın: sözdizimsel stil öznitelikleri — özellikle spaCy tarafından çözümlenen (head-lemma, bağımlılık-ilişkisi, child-lemma) üçlüleri — istediğinizde. Şu durumda kullanmayın: ayrıştırıcı bir darboğazsa; bağımlılık çözümlemesi spaCy ardışık düzeninin en yavaş adımıdır ve POS n-gramlarıyla ikame edilebilir. Beklenen sonuç: bağımlılık üçlüleri üzerinde seyrek sayım matrisi.

FunctionWordExtractor

FunctionWordExtractor(wordlist=None)

Şu durumda kullanın: belgenin dili için kısa, konudan bağımsız işlev sözcüğü listesini — stilometrinin klasik konu karşıtı sinyali — istediğinizde. Şu durumda kullanmayın: derleminiz belge başına dil etiketi olmaksızın dilleri karıştırıyorsa — dile özgü sözcük listesi uygulanmaz. Beklenen sonuç: (n_docs, |wordlist|) göreli frekans matrisi. Varsayılanlar paketlenmiş dile özgü listeden gelir (bkz. Languages).

PunctuationExtractor

PunctuationExtractor()

Şu durumda kullanın: neredeyse konudan bağımsız saf stil öznitelikleri istediğinizde — noktalama kullanımı dikkat çekici biçimde yazara özgü ve derlem açısından sağlamdır. Şu durumda kullanmayın: kaynak metin normalleştirilmişse veya noktalama işaretleri çıkarılmışsa (örn. düzeltme yapılmamış OCR çıktısı). Beklenen sonuç: ASCII noktalama göreli frekanslarından oluşan (n_docs, ~20) matris.

ReadabilityExtractor

ReadabilityExtractor()

Şu durumda kullanın: okunabilirliği bir stil özniteliği olarak — Flesch, FK-grade, Gunning Fog vb. — MFW ile birleştirmek istediğinizde. Şu durumda kullanmayın: okunabilirlik bizzat sorunun kendisiyse (bu durumda metriği doğrudan okuyun; Delta'ya dahil etmeyin). Türkçe dışı diller için dile özgü yerel formül varyantını kullanın — bkz. concepts/languages.md. Beklenen sonuç: (n_docs, 6) okunabilirlik indeksleri matrisi (İngilizce varsayılanlar: Flesch, FK-grade, Gunning Fog, Coleman-Liau, ARI, SMOG).

SentenceLengthExtractor

SentenceLengthExtractor()

Şu durumda kullanın: cümle ritmi imzasını — cümle başına belirteç sayısının ortalama, standart sapma ve çarpıklığını — istediğinizde. Küçük ama güçlü bir stilistik sinyal. Şu durumda kullanmayın: metinde yoğun cümle sınırı hataları varsa (örn. BÜYÜK HARFLE yazılmış hukuki metin çoğu cümle bölücüyü bozar). Beklenen sonuç: (n_docs, 3) matris: [mean, std, skew].

LexicalDiversityExtractor

LexicalDiversityExtractor()

Şu durumda kullanın: sözcüksel çeşitlilik öznitelikleri — TTR, MATTR, MTLD, HD-D, Yule'ün K/I'sı, Herdan'ın C'si, Simpson'ın D'si — istediğinizde. Sekiz indeks duyarlılıkları karşılaştırmanıza olanak tanır. Şu durumda kullanmayın: belgeler çok kısaysa (<200 belirteç); çoğu indeks kararsız hale gelir. Beklenen sonuç: (n_docs, 8) matris; sütunlar 8 indekse karşılık gelir.

SentenceEmbeddingExtractor

SentenceEmbeddingExtractor(model="paraphrase-MiniLM-L6-v2")

Şu durumda kullanın: modern sinirsel gömme öznitelik kümesi — belge başına havuzlanmış sentence-transformer çıktısı — istediğinizde. Sınıflandırma ve kümelemede güçlü; orta büyüklükteki derlemler için yeterince hızlı. Şu durumda kullanmayın: donanımınızda GPU / MPS yoksa ve derleminiz büyükse (CPU çıkarımı yavaştır) ya da yorumlanabilirlik önemliyse (bu vektörler opaktır). Beklenen sonuç: (n_docs, embedding_dim) yoğun matris. tamga[embeddings] gerektirir.

ContextualEmbeddingExtractor

ContextualEmbeddingExtractor(model="bert-base-multilingual-cased", pooling="mean")

Şu durumda kullanın: belge başına toplanmış HuggingFace model gizli durumları — yapılandırılabilir havuzlama ile dile özgü gömmeler (örn. Türkçe için dbmdz/bert-base-turkish-cased) — istediğinizde. Şu durumda kullanmayın: belirli bir modelin temsilini gerektirmiyorsanız — daha hafif ve hızlı bir varsayılan için SentenceEmbeddingExtractor kullanın. Beklenen sonuç: (n_docs, hidden_dim) yoğun matris. tamga[embeddings] gerektirir.

Öznitelikleri birleştirme

Çok öznitelikli matris oluşturmanın iki yolu:

Python

from tamga import MFWExtractor, PunctuationExtractor

mfw = MFWExtractor(n=200, scale="zscore").fit_transform(corpus)
punct = PunctuationExtractor().fit_transform(corpus)
combined = mfw.concat(punct)  # (n_docs, n_mfw + n_punct)

study.yaml

features:
  - id: mfw
    type: mfw
    n: 200
    scale: zscore
  - id: punct
    type: punctuation

Yöntemler öznitelik kimliklerine başvurabilir; çalıştırıcı her matrisi bir kez oluşturur ve yeniden kullanır.

Adli dilbilim öznitelik çıkarıcıları

Konu-değişmez iki çıkarıcı tamga.forensic altında yer alır:

CategorizedCharNgramExtractor

CategorizedCharNgramExtractor(n=4, categories=("prefix","suffix","punct"))

Şu durumda kullanın: adli doğrulama için konudan bağımsız karakter düzeyinde öznitelikler istediğinizde — n-gramlar sözcükteki konuma göre sınıflandırılır; böylece yalnızca stili taşıyan kategorileri (ekler, noktalama) tutup konuya duyarlı tam sözcük kategorisini düşürebilirsiniz. Şu durumda kullanmayın: konu sağlamlığı hedef değilse — düz bir CharNgramExtractor daha hızlı ve boyut başına daha fazla sinyal taşır. Beklenen sonuç: seçilen n-gram kategorileriyle kısıtlanmış seyrek sayım matrisi.

Sapkota ve ark. 2015; categories=("prefix","suffix","punct") konular arası en iyi genellemeyi sağlayan ek odaklı tariftir.

distort_corpus

distort_corpus(corpus, mode="dv_ma")

Şu durumda kullanın: Stamatatos (2013) konu maskeleme istediğinizde — içerik sözcüklerini yer tutucularla değiştirirken işlev sözcüklerini ve noktalamayı korur. Konudan bağımsız bir ardışık düzen için herhangi bir çıkarıcıyla eşleştirin. Şu durumda kullanmayın: analiziniz içerik sözcüğü sinyaline ihtiyaç duyuyorsa (örn. ayırt edici sözcük dağarcığını arayan Zeta). Beklenen sonuç: mevcut herhangi bir çıkarıcıya beslediğiniz yeni bir Corpus nesnesi. Modlar: "dv_ma" tüm içerik sözcüklerini maskeler, "dv_sa" seçici maskeler.

Bkz. Konu-değişmez öznitelikler.

Ölçekleme

Çoğu çıkarıcı scale ∈ {"none", "zscore", "l1", "l2"} parametresini kabul eder:

  • none — ham sayımlar. Bayesian Wallace–Mosteller için kullanın.
  • l1 — göreli frekanslar (satır toplamı 1'e eşit). Zeta-benzeri karşıtlık yöntemleri için kullanın.
  • l2 — birim normlu satırlar. Kosinüs tabanlı uzaklıklar için kullanın.
  • zscore — eğitim ortalamaları / standart sapmalarına göre sütun bazında z-puanı (Stylo kuralı). Burrows Delta için zorunludur.

Z-puanı ortalaması / standart sapması fit aşamasında öğrenilir ve transform sırasında uygulanır; dolayısıyla görülmemiş belgeler üzerindeki puanlar eğitim dağılımını kullanır.

Sonraki adım

  • Methods — FeatureMatrix'i alıp Result üretmek.