text_similarity_comparison

Public
Created Aug 5, 2025

Bu proje, iki farklı Transformer modeli kullanarak metinler arasındaki anlamsal benzerliği hesaplayan bir Python betiği içerir. Metinler önce vektör temsillerine (embedding) dönüştürülür ve ardından bu vektörler arasındaki benzerlik **Kosinüs Benzerliği (Cosine Similarity)** metriği ile ölçülür. ✨

1
Stars
0
Forks
1
Watchers
0
Issues

Repository Details

Primary Language
Python
Repository Size 0 MB
Default Branch main
Created August 5, 2025
Last Update August 19, 2025
View on GitHub
Download ZIP

README.md

Elbette, aşağıda `README.md` dosyasının içeriğini bulabilirsiniz. Bu içeriği kopyalayıp projenizin ana dizininde `README.md` adıyla bir dosyaya yapıştırabilirsiniz. ````markdown # Metin Benzerliği Hesaplayıcı (Text Similarity Calculator) Bu proje, iki farklı Transformer modeli kullanarak metinler arasındaki anlamsal benzerliği hesaplayan bir Python betiği içerir. Metinler önce vektör temsillerine (embedding) dönüştürülür ve ardından bu vektörler arasındaki benzerlik **Kosinüs Benzerliği (Cosine Similarity)** metriği ile ölçülür. ✨ Proje, hem önceden tanımlanmış metinlerle bir demo sunar hem de kullanıcıların kendi metinlerini girebilecekleri interaktif bir mod içerir. --- ## 🚀 Özellikler - **İki Farklı Model:** Metin gömme işlemleri için iki popüler model kullanır: 1. `sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2` 2. `dbmdz/bert-base-turkish-cased` - **Kosinüs Benzerliği:** Vektörler arasındaki anlamsal yakınlığı `-1` ile `1` arasında bir skorla hesaplar. - **Demo Modu:** Betiğin nasıl çalıştığını gösteren örnek metinlerle hızlı bir başlangıç sunar. - **İnteraktif Mod:** Kullanıcıların kendi metin çiftlerini veya listelerini karşılaştırmasına olanak tanır. - **GPU Desteği:** Eğer sistemde uyumlu bir GPU varsa (`CUDA` destekli), hesaplamaları hızlandırmak için otomatik olarak onu kullanır. --- ## 🔧 Kurulum Projeyi yerel makinenizde çalıştırmak için aşağıdaki adımları izleyin. 1. **Projeyi Klonlayın:** ```bash git clone [https://github.com/kullanici-adiniz/proje-adiniz.git](https://github.com/kullanici-adiniz/proje-adiniz.git) cd proje-adiniz ``` 2. **Sanal Ortam Oluşturun (Önerilir):** ```bash python -m venv venv ``` * **Windows:** ```powershell .\venv\Scripts\Activate.ps1 ``` * **macOS / Linux:** ```bash source venv/bin/activate ``` 3. **Gerekli Kütüphaneleri Yükleyin:** Proje için gerekli olan kütüphaneler `requirements.txt` dosyasında listelenmiştir. ```bash pip install -r requirements.txt ``` `requirements.txt` dosyanızın içeriği aşağıdaki gibi olmalıdır: ```txt numpy torch sentence-transformers transformers scikit-learn ``` --- ## 💻 Kullanım Kurulum tamamlandıktan sonra betiği komut satırından çalıştırabilirsiniz. ```bash python main.py ```` *(Betiğinizin adının `main.py` olduğunu varsayarak)* Betiği çalıştırdığınızda: 1. Önce `main()` fonksiyonu çalışır ve önceden tanımlanmış test metinleri için her iki modelin benzerlik skorlarını hesaplayıp ekrana yazdırır. 2. Demo tamamlandıktan sonra, interaktif moda geçmek isteyip istemediğiniz sorulur. `y` veya `evet` yazarak devam edebilirsiniz. ### İnteraktif Mod İnteraktif modda iki seçeneğiniz vardır: 1. **Metin çiftini karşılaştır:** İki adet metin girerek aralarındaki benzerlik skorunu doğrudan öğrenirsiniz. 2. **Metin listesini analiz et:** İkiden fazla metin girerek bu metinlerin kendi aralarındaki tüm kombinasyonlarının benzerlik skorlarını içeren bir matris elde edersiniz. ----- ## 📝 Örnek Çıktı (Demo Modu) Betiği ilk çalıştırdığınızda alacağınız demo çıktısı aşağıdaki gibi olacaktır: ``` Metin Embedding ve Cosine Similarity Hesaplama ============================================================ Models loading... Loading Sentence Transformer model... ✓ Sentence Transformer model loaded Loading BERT model... ✓ BERT model loaded ✓ Device: cpu -------------------------------------------------- Sentence Transformer ile embedding hesaplanıyor... ✓ Sentence Transformer tamamlandı BERT ile embedding hesaplanıyor... ✓ BERT tamamlandı Sentence Transformer (Multilingual MiniLM) - Cosine Similarity Sonuçları: ============================================================ Metin 1 - Metin 2: 0.9388 'Merhaba, nasılsın? Bugün hava çok güzel.'... 'Selam, nasıl gidiyor? Bugün hava gerçekten harika.'... ---------------------------------------- Metin 3 - Metin 4: 0.9501 'Yapay zeka teknolojileri hızla gelişiyor ve hayatı...' 'AI teknolojileri çok hızlı gelişiyor ve yaşamımızı...' ---------------------------------------- Metin 5 - Metin 6: 0.9392 'Spor yapmak sağlık için çok önemlidir.'... 'Düzenli egzersiz sağlığımız için gereklidir.'... ---------------------------------------- ... (diğer kombinasyonlar) ... BERT (Turkish Cased) - Cosine Similarity Sonuçları: ============================================================ Metin 1 - Metin 2: 0.9859 'Merhaba, nasılsın? Bugün hava çok güzel.'... 'Selam, nasıl gidiyor? Bugün hava gerçekten harika.'... ---------------------------------------- Metin 3 - Metin 4: 0.9822 'Yapay zeka teknolojileri hızla gelişiyor ve hayatı...' 'AI teknolojileri çok hızlı gelişiyor ve yaşamımızı...' ---------------------------------------- Metin 5 - Metin 6: 0.9866 'Spor yapmak sağlık için çok önemlidir.'... 'Düzenli egzersiz sağlığımız için gereklidir.'... ---------------------------------------- ... (diğer kombinasyonlar) ... Embedding Bilgileri: ============================== Sentence Transformer embedding boyutu: (6, 384) BERT embedding boyutu: (6, 768) İnteraktif modu başlatmak ister misiniz? (y/n): ``` ----- ## 🧠 Kodun Açıklaması ### `TextEmbeddingCalculator` Sınıfı Bu sınıf, tüm ana mantığı içerir: - **`__init__()`**: Gerekli olan `SentenceTransformer` ve `BERT` modellerini Hugging Face'den indirir ve belleğe yükler. - **`get_sentence_transformer_embeddings()`**: `sentence-transformers` kütüphanesinin optimize edilmiş `encode()` metodunu kullanarak metin listesinden embedding vektörleri oluşturur. Bu model, cümle düzeyinde anlamsal benzerlik için özel olarak eğitilmiştir. - **`get_bert_embeddings()`**: Standart bir BERT modeli kullanarak embedding vektörleri oluşturur. Her cümlenin başına eklenen özel `[CLS]` token'ının çıktı vektörünü cümlenin temsili olarak kullanır. Bu genel amaçlı bir yöntemdir. - **`calculate_cosine_similarity()`**: `scikit-learn` kütüphanesini kullanarak verilen embedding vektör setleri arasında kosinüs benzerliği matrisini hesaplar. - **`compare_texts()`**: Ana iş akışını yönetir; metinleri alır, seçilen modele göre embedding'leri hesaplar ve benzerlik skorlarını döndürür. ### Modeller Hakkında - **`paraphrase-multilingual-MiniLM-L12-v2`**: Farklı dillerdeki cümleleri anlamsal olarak karşılaştırmak için tasarlanmış, hızlı ve etkili bir modeldir. Embedding boyutu `384`'tür. - **`bert-base-turkish-cased`**: Türkçe metinler üzerinde eğitilmiş, genel amaçlı bir BERT modelidir. Metin sınıflandırma, soru-cevap gibi birçok görev için kullanılabilir. Bu betikte cümle temsili için kullanılmıştır. Embedding boyutu `768`'dir. ``` ```

Quick Setup & Commands

Clone Repository

HTTPS
git clone https://github.com/canuzlas/text_similarity_comparison.git
SSH
git clone git@github.com:canuzlas/text_similarity_comparison.git

Essential Commands

Navigate to project
cd text_similarity_comparison
Install dependencies
pip install -r requirements.txt
Run application
python main.py

Related Repositories