🇹🇷 Yeniden Başlatıldı! (Kasım 2025) - Project Re-started! (November 2025)
Bu yeni çalışmada, geçerliliği denetlenmiş sözcüklerin yer aldığı bir dosyayı doğrudan paylaşmak yerine, böyle bir listeyi oluşturmanın yöntemlerini tüm aşamalarıyla birlikte paylaşacağız.
Eski deponun orijinal içeriğini, eski-versiyon klasöründe bulabilirsiniz.
In this project, we're creating a list of words that are still commonly used in current Turkish. I won't share my existing 2 million-word list here. Github has strict file size restrictions. It's certainly possible to bypass this, but I don't think it's very user-friendly. So, instead of providing you with a ready-made list, I'll share tools that will allow you to create a Turkish vocabulary similar to the one I have.
It would be a good idea to create a simple "word collector" as a starting code.
To speed up the coding process, I'm using Claude, Gemini, and Grok as coding consultants. Our primary coding language will be Python. We'll use SQLite as our database manager. The latest version of the Zemberek library (zemberek-full-0.17.1.jar) will be the core of our word analysis.
- Word Collector (Completed)
- Word Collector from Wikipedia (Completed)
- Creating the database and tables (Completed)
- Downloading the updated zemberek-full.jar file (Completed)
- Obtaining yeni_kesin_turkce_adaylari.txt from tr_corpus_wiki.txt (Completed)
- Creating lexicon.db database (Completed)
- Preparing collected words to be imported into the database (Completed)
- Cloning of the AKTA Project and scanning of Turkish documents (Completed)
- Adding the sozluk (dictionary) table to the lexicon.db database (Completed)
- Adding the roots from the kelimeler (words) table to the dictionary table (Completed)
- Adding the Turkish geographical place names to the dictionary table (Completed)
- Filling in the meaning, origin, and source columns using TDK and Wiktionary resources.
- Filling in the meaning, origin, and source columns using TDK, Wiktionary, and Nisanyan resources.
- Clone this repo:
git clone https://github.com/ahmetax/derlemtr.git
cd derlemtrI recommend using a virtual environment: (The following codes are for Ubuntu 24.04. Adapt them to your own system.)
python3.12 -m venv e312
source e312/bin/activate- Install the required libraries:
pip install python-docx ebooklib beautifulsoup4 PyPDF2 tqdmor
pip install -r requirements.txt- Create a folder to place the source text:
mkdir kaynak_metnler-
Copy the desired Turkish text files into the kaynak_metnler folder.
-
Run the word collector:
python kelime_toplayici.pyWith each run, newly found words are added alphabetically to the kelimeler.txt file.
Download the file https://dumps.wikimedia.org/trwiki/latest/trwiki-latest-pages-articles.xml.bz2. (Approximately 1 GB)
Copy this file to your working folder or provide the full address in wiki_xml2txt.py.
Run the wiki_xml2txt.py script. (This may take a while. Approximately 1,580,000 articles will be processed.)
python wiki_xml2txt.pyYou should now have a file named tr_corpus_wiki.txt. It is approximately 2 GB in size. The information in this file is of no direct use to us. Therefore, we will extract word candidates from the corpus file using the yeni_kelime_tara.py script. This script requires the zemberek-full.jar file.
The Zemberek project is located at https://github.com/ahmetaa/zemberek-nlp. A Google Drive address is provided for the distribution files: https://drive.google.com/#folders/0B9TrB39LQKZWSjNKdVcwWUxxUm8. From the Drive homepage, navigate to the distributions folder and download version 0.17.1. The downloaded file should be named something like 0.17.1-20251119T073639Z-1-001.zip. Unzip this zip file. Go to the folder named 0.17.1 within the resulting folder. Copy the zemberek-full.jar file from there to your working folder.
python yeni_kelime_tara.pyYou can add the words in the file yeni_kesin_turkce_adaylari.txt to your list. We will examine these words more thoroughly later.
Note: If you want to rebuild the trigram_model.txt file:
You can use the command:
python build_trigram_model.pypython db_setup.pyThe words in the file yeni_turkce_adaylari.txt are copied to tr_lexicon.txt. If the number of words in the tr_lexicon.txt file is more than 300 thousand, It should be splitted into chunk files with splitter.py.
python splitter.py It splits the tr_lexicon.txt file into chunk_1.txt, chunk_2.txt, etc. The number of chunks is defined by NUM_CHUNKS. The number of words contained in each Chunk must be approximately 300 thousand words. Determine the NUM_CHUNKS value accordingly.
python data_loader.py Using chunk_*.txt (singular words) files, it creates the analysis_results.tsv() file. Uses jpype1 and zemberek-full.jar. The purpose of this script is to integrate file operations and database operations to ease multiprocessing processes by separating them from each other.
python db_loader.py You can view previously generated data using the analysis_results.tsv file. transfers it to the words table.
python mini_loader.py Analyzing the words in the yeni_adaylar.txt file with Zemberek, saves the results in the kelşmeler (words) table. This script is a small sized version of the integrated data_loader.py and db_loader.py scripts. Useful when using small datasets.
Clone the project at https://github.com/ahmetax/akta to your computer.
Update the INPUT_FOLDER variable in the akta_tara.py file to the project's location on your computer and run the akta_tara.py script. (This process will take hours.) The output file will be saved as akta_kesin_turkce_adaylari.txt. You can add the contents of this file to your master list (tr_lexicon.txt) to be imported into the database.
git clone https://github.com/ahmetax/akta.git
python akta_tara.pyWe obtain location names from zemberek sources. If you have a more comprehensive list, you can use that as well. Input: sozlukler/zemberek_tr/locations-tr.dict Output: cografi_adres_sozluk.json
python geocoding_adres.pyInformation scanned through the Geocoding API and saved in the cografi_adres.json file is transferred to the database in bulk using this script. Input: cografi_adres_sozluk.json
python geo_bulk_aktarim.pyThe analysis of words in the word table is primarily done with Zemberek. I had used the TRMORPH system to review words that could not be analyzed by Zemberek. Unfortunately, the results I obtained led to the creation of many records that were open to debate and ambiguous. Consequently, I saw that these results would not directly contribute to the project and I disabled TRMORPH analyses. However, I am not removing the trmorph.py application from the project. Those who wish can continue to use this tool. (December 27, 2025)
Last week I discovered two more new data sources. Claude suggested them. Both sources are part of the HuggingFace system.
Source address: https://huggingface.co/datasets/uonlp/CulturaX
A multilingual dataset.
Total size: 17.4 TB
Total number of tokens: 6.3 Trillion
Number of rows: 7,180,782,601
Number of languages: 167
Number of Turkish documents: 94,207,460
Number of Turkish tokens: 64,292,787,164
Percentage of Turkish tokens: 1.02%
Source address: https://huggingface.co/datasets/oriental-lab/CulturaX-turkish
Completely in Turkish.
Total size: 21.1 GB (Actual size 33 GB)
Total number of rows: 11,039,789
Both sources are compiled from various Turkish web sources.
Bu projede, güncel Türkçede geçerli olan ve genellikle hala kullanılan sözcüklerin bir listesini oluşturuyoruz. Elimdeki 2 milyonluk listeyi burada paylaşmayacağım. Github, dosya boyutu konusunda katı kısıtlamalara sahip. Bunu aşmak da mümkün elbette, ama, pek kullanıcı dostu değil bana göre. O yüzden size hazır bir liste sunmak yerine, sizinle, benim elimdeki gibi bir Türkçe Sözcük Dağarcığını elde etmenizi sağlayacak araçlar paylaşacağım.
Başlangıç kodu olarak basit bir "kelime toplayıcı" hazırlamak iyi olacak.
Kod çalışmalarını hızlandırmak amacıyla Claude, Gemini ve Grok'u kodlama danışmanı olarak kullanıyorum. Ana kodlama dilimiz Python olacak. Veritabanı yöneticisi olarak SQLite kullanacağız. Kelime analizlerimizin çekirdeğinde Zemberek kütüphanesinin son sürümü (zemberek-full-0.17.1.jar) bulunacak.
- Kelime Toplayıcı (Tamamlandı)
- Wikipedia'dan kelime toplayıcı (Tamamlandı)
- Veritabanı ve tabloları oluşturma (Tamamlandı)
- Güncel zemberek-full.jar dosyasının indirilmesi (Tamamlandı)
- tr_corpus_wiki.txt dosyasından yeni_kesin_turkce_adaylari.txt dosyasının elde edilmesi (Tamamlandı)
- tr_lexicon.db veritabanının oluşturulması (Tamamlandı)
- Toplanan kelimelerin veritabanına aktarılmak üzere hazırlanması (Tamamlandı)
- AKTA Projesinin klonlanması ve Türkçe belgelerin taranması (Tamamlandı)
- lexicon.db veritabanına sozluk tablosunun eklenmesi (Tamamlandı)
- kelimeler tablosundaki kelime köklerinin sozluk tablosuna eklenmei (Tamamlandı)
- Coğrafik yer adlarının sozluk tablosuna eklenmesi (Tamamlandı)
- TDK ve Wiktionary kaynaklarını kullanarak anlam, koken ve kaynak kolonlarının doldurulması
- TDK, Wiktionary ve Nisanyan kaynaklarını kullanarak anlam, koken ve kaynak kolonlarının doldurulması
-
Bu repoyu klonla:
git clone https://github.com/ahmetax/derlemtr.git cd derlemtrSanal ortam kullanmanızı öneririm: (Aşağıdaki kodlar Ubuntu 24.04 içindir. Kendi sisteminize göre uyarlayın.)
python3.12 -m venv e312 source e312/bin/activate -
Gerekli kütüphaneleri kurun:
pip install python-docx ebooklib beautifulsoup4 PyPDF2 tqdm
veya
pip install -r requirements.txt
-
Kaynak metinleri içine koyacağınız bir klasör açın:
mkdir kaynak_metnler
-
kaynak_metnler klasörünün içine istediğiniz Türkçe metin dosyalarını kopyalayın.
-
Kelime toplayıcıyı çalıştırın:
python kelime_toplayici.py
Her çalıştırmada yeni bulunan kelimeler alfabetik olarak kelimeler.txt dosyasına eklenir.
https://dumps.wikimedia.org/trwiki/latest/trwiki-latest-pages-articles.xml.bz2 dosyasını indirin. (Yaklaşık 1 GB)
Bu dosyayı çalışma klasörünüze kopyalayın veya wiki_xml2txt.py dosyasında tam adresini verin.
wiki_xml2txt.py betiğini çalıştırın. (Bu işlem biraz uzun sürebilir. Yaklaşık 1,580,000 makale işlenecek.)
python wiki_xml2txt.pyŞimdi elinizde tr_corpus_wiki.txt isimli bir dosya olmalı. Boyutu 2GB civarındadır. Bu dosyanın içindeki bilgiler doğrudan işimize yaramaz. O yüzden yeni_kelime_tara.py betiği aracılığıyla corpus dosyasından kelime adaylarını çıkaracağız. Bu betik, zemberek-full.jar dosyasına ihtiyaç duyar.
Zemberek projesi https://github.com/ahmetaa/zemberek-nlp adresinde bulunur. Dağıtım dosyaları içinse bir Google-drive adresi verilmiştir: https://drive.google.com/#folders/0B9TrB39LQKZWSjNKdVcwWUxxUm8 Bağlandığınız drive ana sayfasından distributions klasörüne geçin ve 0.17.1 sürümünü indirin. İnecek dosyanın adı 0.17.1-20251119T073639Z-1-001.zip benzeri olmalıdır. Bu zip dosyasını açın. Elde edeceğiniz klasörün altındaki 0.17.1 isimli klasöre girin. Buradaki zemberek-full.jar dosyasını çalışma klasörünüze kopyalayın.
python yeni_kelime_tara.pyyeni_kesin_turkce_adaylari.txt dosyasındaki kelimeleri listenize ekleyebilirsiniz. Bu kelimeleri daha sonra daha ayrıntılı bir denetimden geçireceğiz.
Not: trigram_model.txt dosyasını yeniden oluşturmak isterseniz:
python build_trigram_model.pybetiğini kullanabilirsiniz.
python db_setup.pyyeni_turkce_adaylari.txt dosyasındaki kelimeler tr_lexicon.txt isimli dosyaya kaydedilir. tr_lexicon.txt dosyasındaki kelime sayısı 300 binden fazlaysa, splitter.py ile chunk dosyalarına bölünmelidir.
python splitter.pytr_lexicon.txt dosyasını chunk_1.txt, chunk_2.txt, vb parçalara ayırır. Chunk (parça) sayısı NUM_CHUNKS ile tanımlanır. Her bir Chunk'ın içerdiği kelime sayısı yaklaşık 300 bin kelime civarında olmalıdır. NUM_CHUNKS değerini ona göre belirleyin.
python data_loader.pychunk_*.txt (tekil kelimeler) dosyalarını kullanarak analysis_results.tsv () dosyasını oluşturur. jpype1 ve zemberek-full.jar kullanır. Bu betiğin amacı, zemberek işlemleri ile veritabanı işlemlerini birbirinden ayırarak multiprocessing süreçlerini rahatlatmaktır.
python db_loader.pyanalysis_results.tsv dosyasını kullanarak önceden üretilmiş verileri kelimeler tablosuna aktarır.
python mini_loader.pyyeni_adaylar.txt dosyasında yer alan kelimeleri Zemberek ile analiz edip, sonuçları kelimeler tablosuna kaydeder. Bu betik, data_loader.py ve db_loader.py betiklerinin küçük boyutlu ve entegre edilmiş halidir. Küçük verisetleri kullanırken işe yarar.
https://github.com/ahmetax/akta adresindeki projeyi bilgisayarınıza klonlayın. akta_tara.py dosyasındaki INPUT_FOLDER değişkenini, projenin bilgisayarınızdaki konumuna uygun olarak güncelleyin ve akta_tara.py betiğini çalıştırın. (İşlemler, saatler boyu sürecektir.) Çıktı dosyası, akta_kesin_turkce_adaylari.txt olarak kaydedilir. Bu dosyanın içeriğini veritabanına aktarılmak üzere ana listenize (tr_lexicon.txt) ekleyebilirsiniz.
git clone https://github.com/ahmetax/akta.git
python akta_tara.pylexicon.db veritabanında bulunan kelimeler tablosunu kullanarak kökleri gruplar ve sozluk tablosuna aktarır. Temiz bir başlangıç yapmak için eski sozluk tablosunu siler (DROP), yeniden oluşturur ve kelimeler tablosundaki kökleri, tip ve detay bilgisini analiz alanından doğru şekilde aktarır. DİKKATLİ BİR ŞEKİLDE KULLANILMASI GEREKİR! BAZI ÖNEMLİ BİLGİLERİ KAYBEDEBİLİRSİNİZ!
python sozluk_initializer.pyYer adlarını zemberek kaynaklarından elde ediyoruz. Elinizde daha zengin bir liste varsa, onu da kullanabilirsiniz. Girdi: sozlukler/zemberek_tr/locations-tr.dict Çıktı: cografi_adres_sozluk.json
python geocoding_adres.pyGeocoding API'si üzerinden taranan ve cografi_adres.json dosyasına kaydedilen bilgiler, toplu işlemlerle veritabanına bu betik sayesinde aktarılmaktadır. Girdi: cografi_adres_sozluk.json
python geo_bulk_aktarim.pykelimeler tablosundaki kelimelerin analizi temel olarak Zemberek ile yapılıyor. Zemberek tarafından analizi yapılamayan kelimelerin elden geçirilmesi için TRMORPH sistemine başvurmuştum. Ne yazık ki elde ettiğim sonuçlar tartışmaya açık ve belirsiz çok sayıda kaydın oluşmasına neden oldu. Sonuç itibariyle, bu sonuçların projeye doğrudan katkı sağlamayacağını gördüm ve TRMORPH analizlerini devre dışı bıraktım. Buna rağmen, trmorph.py uygulamasını projeden çıkarmıyorum. İsteyenler bu araçtan yararlanmaya devam edebilir. (27 Aralık 2025)
Geçtiğimiz hafta 2 yeni veri kaynağı daha keşfettim. Kaynakları öneren Claude oldu. Her iki kaynak da HuggingFace sisteminde yer alıyor.
Kaynak adresi: https://huggingface.co/datasets/uonlp/CulturaX
Çok dilli bir veriseti.
Toplam büyüklük: 17.4 TB
Toplam token sayıs: 6.3 Trillion
Satır sayısı: 7,180,782,601
Dil sayısı : 167
Türkçe belge sayısı: 94,207,460
Türkçe token sayısı: 64,292,787,164
Türkçe token yüzdesi: % 1.02
Kaynak adresi: https://huggingface.co/datasets/oriental-lab/CulturaX-turkish
Tamamen Türkçe.
Toplam büyüklük: 21.1 GB (Gerçek büyük lük 33 GB)
Toplam satır sayısı: 11,039,789
Her iki kaynak da çeşitli Türkçe web kaynaklarından derlenmiş.
