Ayikla
Ayikla, Türkçe metinlerden yapılandırılmış varlıkları ayıklayan hafif bir Python kütüphanesidir. Tek çağrıda geniş bir yelpazede bilgiyi normalize eder.
Desteklenen varlık anahtarları (bul(metin)) çıktısında yer alır:
- isimler
- telefonlar
- tarihler (tarih + opsiyonel saat)
- tarih_aralik (başlangıç/bitis)
- lokasyonlar (adres benzeri tetikleyici bloklar)
- firmalar
- tckn (T.C. Kimlik No)
- iban (TR IBAN)
- emailler
- websiteler (URL)
- ip_adresleri (IPv4 / IPv6)
- uuid4
- olculer (miktar + ölçü birimi)
- kurlar (miktar + para birimi)
Seçmeli Çalıştırma (1.1.27+)
Varsayılan olarak bütün varlık çıkarıcılar çalışır. Performans veya gereksinim nedeniyle belirli anahtarları sınırlamak isterseniz:
from ayikla import bul
metin = "Ahmet 250 TL ve 3 kilo un aldı, TR33 0006 1005 1978 6457 8413 26"
# 1) sadece -> Yalnızca belirtilen anahtarlar
bul(metin, sadece=["iban","kurlar"]) # isimler vs. çalışmaz
# 2) aktif -> Çalıştırılacak alt küme
bul(metin, aktif=["isimler","telefonlar"]) # diğerleri boş listeler döner
# 3) pasif -> Bu anahtarları kapat, diğerleri çalışsın
bul(metin, pasif=["iban","uuid4"]) # iban ve uuid4 çıkarılmaz
# 4) include_meta -> Pasif kalanları görmek için
bul(metin, sadece=["kurlar"], include_meta=True)["_pasif"] # diğer tüm anahtarların listesi
Öncelik sırası: sadece > (aktif / pasif) > (varsayılan hepsi). Tanınmayan anahtarlar sessizce yok sayılır. Çıktı şeması sabit olduğundan çalıştırılmayan anahtarlar yine boş liste ([]) olarak bulunur; böylece tip beklentileri değişmez.
Kurulum
pip install ayikla
Hızlı Kullanım
from ayikla import bul
metin = "Dr. Ahmet Yılmaz beni 0532 123 45 67 numarasından yarın akşam 8'de ara, 250 TL gönder."
sonuc = bul(metin)
print(sonuc.keys())
Örnekler
İsim + Telefon + Tarih/Saat
bul("Dr. Ahmet Yılmaz beni 0532 123 4567 numarasından yarın saat 19'da ara.")
Belirli Tarih
bul("Çağrı Güngör 532 123 4567 – 18 Ocak saat 19'da görüşelim.")
Sadece Saat
bul("Sadece saat 19'da uygun olur.")
Lokasyon / Adres
bul("Toplantı salı günü saat 14'te istanbul beşiktaş çarşı mah. no:5 kat 2 daire 4 ofiste olsun.")
Tarih Aralıkları
metin = "Önümüzdeki hafta ve 3-5 Ocak 2024 ile 25 Aralık - 3 Ocak 2025 arası müsait değilim. Mart - Nisan 2025 planlayalım."
bul(metin)["tarih_aralik"]
Ölçü / Miktar (olculer)
bul("on kilo un ve 3.5 lt süt aldım, ayrıca 250gram tereyağı")['olculer']
Para Birimi (kurlar)
bul("250,5 TL ve 99$ ile 1.250,75 usd harcadım")['kurlar']
Özellikler (Özet)
- Türkçe isim / soyisim sözlükleri ve ünvan yakalama
- Telefon numarası normalizasyonu (E.164 TR varsayılan)
- Doğal dil tarih & saat: "yarın", "bugün", "akşam 8", tek başına saat
- Tarih aralıkları: relative (önümüzdeki/geçen/bugün), gün-ay aralığı (3-5 Ocak), ay-ay (Mart - Nisan), çapraz (25 Aralık - 3 Ocak)
- Lokasyon tetikleyici blokları (mahalle, cadde, sokak, no, kat, daire + sözlük)
- Firma tespiti (sözlük + sonek heuristiği: Holding, A.Ş., Ltd, Ltd Şti, Anonim Şirketi, Şirketi, Firması...)
- TCKN algoritmik doğrulama
- TR IBAN (MOD 97) doğrulama
- E-posta, URL tespiti
- IP adresleri (IPv4 / IPv6 ipaddress doğrulaması)
- UUID4 pattern
- Ölçü/miktar çıkarımı (4kg, 3.5 lt, on kilo, iki yemek kaşığı...)
- Para birimi çıkarımı (250 TL, 99$, 1.250,75 usd, 45€, 10 amerikan doları)
Detaylı Açıklamalar
1. İsim / Ünvan
isimler.txt+soyisimler.txtsözlükleri- Ünvan seti (Dr, Prof, Av vb.)
- Çoklu ad + soyad zinciri
2. Telefon
phonenumberskullanır; boşluk/tire varyantları normalize- Maskeleme ile tarih çıkarım çakışması azaltılır
3. Tarih & Saat
- Türkçe doğal ifadeler normalize: "akşam 8" -> 20:00
- Tek saat + tek tarih kombinasyonu birleştirilir
4. Tarih Aralıkları
- Relative: önümüzdeki hafta/ay/yıl, geçen, bu
- Gün aralığı: 3-5 Ocak 2024
- Ay aralığı: Mart - Nisan 2025
- Çapraz: 25 Aralık - 3 Ocak
- Çıktı: {"baslangic", "bitis"}
5. Lokasyon
- Regex tetikleyiciler +
lokasyon.txtkelimeleri - Karakter aralığına göre segment birleştirme (gap <= 8)
6. Firma
- Sözlük eşleşmesi + sonek bazlı geri genişleme
7. TCKN
- 11 hane, ilk hane ≠ 0, 10. & 11. hane algoritması
8. IBAN (TR)
- 26 karakter, TR + 24 alfanumerik
- MOD 97 parçalı hesap
9. E-posta & URL
- Basit sağlam regex kalıpları
10. IP Adresi
- Aday regex +
ipaddress.ip_addressdoğrulaması
11. UUID4
- Versiyon alanı 4, varyant bitleri 8/9/a/b
12. Ölçü / Miktar (olculer)
olculer.txtilk alias kanonik- Sayı (1, 1.5, 2,5, 250gram) & kelime sayı (on kilo)
13. Para Birimi (kurlar)
kurlar.txtilk öğe ISO kodu- 250 TL, 99$, 1.250,75 usd, 10 amerikan doları
- Karışık binlik/ondalık ayracı sezgisel normalize
Sınırlamalar (Genel)
- Yaklaşık/örnekleyici ifadeler (~, ≈, "yaklaşık") henüz işlenmiyor
- Ölçülerde ve kurlarda aralık (3-5 kg, 10-12 USD) ayrıştırılmıyor
- Çok karmaşık sayısal dil ("iki milyon yüz on üç bin") kısmen desteklenir
- Lokasyonlar tam adres ayrıştırması değildir; tetikleyici bloklar
Gelişmiş Kullanım
from ayikla.extractor import TextEntityExtractor
extr = TextEntityExtractor()
print(extr.extract_all("on kilo un 250 TL"))
Sürüm Notları (Özet)
- 1.1.17: tarih_aralik format sadeleştirme
- 1.1.18: firmalar
- 1.1.19: tckn
- 1.1.20: iban
- 1.1.21: emailler, websiteler
- 1.1.22: ip_adresleri, uuid4
- 1.1.23: olculer
- 1.1.24: kurlar
- 1.1.26: olculer performans (regex precompile)
- 1.1.27: seçmeli çalıştırma parametreleri (sadece/aktif/pasif/include_meta)
Lisans
MIT
Release files for ayikla 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ayikla-1.2.0.tar.gz | 455.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ayikla-1.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 908.5 kB
Release files / ayikla-1.2.0.tar.gz
| Download URL | ayikla-1.2.0.tar.gz |
|---|---|
| Size | 455.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
80cb0fc4c8165780802766383ed6ae57775d5aa67abb76de6f9eeeec2674f530
|
|
BLAKE2b-256 checksum How to use checksums |
e8771efb2991ad02dcc1caa064bb9a1f2b8a1aee95c2b133905474a0bd3fbcad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.13.1
|
Release files / ayikla-1.2.0-py3-none-any.whl
| Download URL | ayikla-1.2.0-py3-none-any.whl |
|---|---|
| Size | 453.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
38fac3156be6871cb34a4c10bce916107fa4a4e5000f2c1632222985d130a98e
|
|
BLAKE2b-256 checksum How to use checksums |
ee0b7b9d083fdca36ab39e5b6642de5e72fb5412afeb50612d2ea568b1a7fe4e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.13.1
|