Skip to content

Commit

Permalink
klasor yapisi degisikligi
Browse files Browse the repository at this point in the history
  • Loading branch information
ogun committed Mar 29, 2024
1 parent d585743 commit 27ab857
Show file tree
Hide file tree
Showing 26 changed files with 323 additions and 176,169 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# .DS_Store
.DS_Store

# VS Code
.vscode/*

Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
Türk Dil Kurumu'nun yayınladığı Güncel Türkçe Sözlük'ü yazılımcıların kullanabileceği bir hale getirmek. Şu anda proje içerisinde 99.236 adet madde en güncel haliyle bulunmaktadır.

Sözlüğü üç farklı türde indirebilirsiniz.
1. JSON dosyası olarak: [gts.json.tar.gz](sozluk/gts.json.tar.gz)
2. MongoDB archive dosyası olarak: [gts.mongo7.gzip.archive](sozluk/gts.mongo7.gzip.archive)
3. SQLite veritabanı olarak: [gts.sqlite3.db](sozluk/gts.sqlite3.db)
1. JSON dosyası olarak: [v12.gts.json.tar.gz](sozluk/v12/v12.gts.json.tar.gz)
2. MongoDB archive dosyası olarak: [v12.gts.mongo7.gzip.archive](sozluk/v12/v12.gts.mongo7.gzip.archive)
3. SQLite veritabanı olarak: [v12.gts.sqlite3.db](sozluk/v12/v12.gts.sqlite3.db)

## JSON
İndirdiğiniz dosya GZIP ile sıkıştırılmıştır. Sıkıştırmayı açtıktan sonra içeriğini herhangi bir text editörle görüntüleyebilirsiniz.
Expand All @@ -16,13 +16,13 @@ Sözlüğü üç farklı türde indirebilirsiniz.

## SQLite
İndirdiğiniz dosyayı herhangi bir SQLite görüntüleyici ile görüntüleyebilirsiniz ve kullanabilirsiniz. Veritabanının şeması aşağıdaki gibidir.
![alt text](static/schema.png "SQLite Schema")
![alt text](sozluk/v12/v12.schema.png "SQLite Schema")

# Güncel Türkçe Sözlük, 11. Baskı
TDK'nın 2023 yılı öncesinde yayınladığı Güncel Türkçe Sözlük'ün 11. baskısına [sozlük/v11 klasörü](sozluk/v11) altındaki dosyalardan ulaşabilirsiniz. On birinci baskı içerisinde 92.406 adet madde bulundurmaktadır.

# TDK 2007 Sözlüğü
TDK'nın 2007 yılında yayınladığı sözlüğe ise old klasöründeki [TDK-2007.rar](old/TDK-2007.rar) dosyasından ulaşabilirsiniz. Eski sözlük içerisinde 73.707 adet madde bulundurmaktadır.
TDK'nın 2007 yılında yayınladığı sözlüğe [sozlük/backup-2007 klasörü](sozluk/backup-2007) altındaki dosyalardan ulaşabilirsiniz. Eski sözlük içerisinde 73.707 adet madde bulundurmaktadır.

# Güncel Türkçe Sözlük
Türk Dil Kurumunun 1945'ten beri yayımlanan Türkçe Sözlük'ünün 2023 yılında yapılan 12. baskısının gözden geçirilip güncellenmiş olarak genel ağdan sunulan sürümüdür. Türkçe Sözlük dilimizde yaşanan gelişmelere bağlı olarak sürekli güncellenmektedir.
Expand Down
102,456 changes: 0 additions & 102,456 deletions old/TDK-2007/sqlite/sql/SENSES.sql

This file was deleted.

73,707 changes: 0 additions & 73,707 deletions old/TDK-2007/sqlite/sql/WORDMULT.sql

This file was deleted.

17 changes: 17 additions & 0 deletions sozluk/backup-2007/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Güncel Türkçe Sözlük, 2007 yılı baskısı
Proje içerisinde 73.707 adet madde bulunmaktadır.

Sözlüğü iki farklı türde indirebilirsiniz.
1. RAR dosyası olarak: [TDK-2007](TDK-2007.rar)
2. SQLite veritabanı olarak: [backup-2007.sqlite3.db](backup-2007.sqlite3.db)

## RAR
İndirdiğiniz RAR dosyasını açtıktan sonra içinden çıkan "Büyük Türkçe Sözlük.exe" dosyası yardımıyla Windows üzerinde sözlüğü görüntüleyebilir ya da "Sözlük.mdb" dosyasını herhangi bir Microsoft Access Database görüntüleyici ile açabilirsiniz.

## SQLite
İndirdiğiniz dosyayı herhangi bir SQLite görüntüleyici ile görüntüleyebilirsiniz ve kullanabilirsiniz. Veritabanının şeması aşağıdaki gibidir.
![alt text](backup-2007.schema.png "SQLite Schema")

# Güncel Türkçe Sözlük
Türk Dil Kurumunun 1945'ten beri yayımlanan Türkçe Sözlük'ünün 2007 yılında yapılan baskısının sürümüdür.
http://www.sozluk.gov.tr/
File renamed without changes.
Binary file added sozluk/backup-2007/backup-2007.schema.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion sozluk/v11/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Türk Dil Kurumu 11. Baskı
# Güncel Türkçe Sözlük, 11. Baskı
Proje içerisinde 92.406 adet madde bulunmaktadır.

Sözlüğü üç farklı türde indirebilirsiniz.
Expand Down
212 changes: 212 additions & 0 deletions sozluk/v11/src/convert_to_sqlite.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,212 @@
""" MongoDB icerisindeki kayitlari SQLite veritabanina aktarir """
from pymongo import MongoClient
import sqlite3

CLIENT = MongoClient()
MONGO_TOPICS = CLIENT.gts.maddeler


def create_connection(db_file):
"""sqlite connectionu olusturur"""
try:
conn = sqlite3.connect(db_file)
return conn
except Exception as e:
print(e)

return None


def insert_anlam(conn, anlam):
"""anlami veritabanina ekler"""
sql = """INSERT INTO anlam(anlam_id,madde_id,anlam_sira,fiil,tipkes,anlam,gos)
VALUES (?,?,?,?,?,?,?)"""
arr = (
anlam["anlam_id"],
anlam["madde_id"],
anlam["anlam_sira"],
anlam["fiil"],
anlam["tipkes"],
anlam["anlam"],
anlam["gos"],
)
cur = conn.cursor()
cur.execute(sql, arr)

if "ozelliklerListe" in anlam:
insert_ozellikler(conn, anlam["anlam_id"], anlam["ozelliklerListe"])

if "orneklerListe" in anlam:
insert_ornekler(conn, anlam["orneklerListe"])

return cur.lastrowid


def insert_anlamlar(conn, madde):
"""anlamlari veritabanina ekler"""
if "anlamlarListe" not in madde:
return None

anlamlar = madde["anlamlarListe"]
for anlam in anlamlar:
insert_anlam(conn, anlam)


def insert_anlam_ozellik(conn, anlam_id, ozellik_id):
"""anlam_ozellik ilisiklisini veritanina ekler"""
sql = """INSERT INTO anlam_ozellik(anlam_id, ozellik_id)
VALUES (?,?)"""
arr = (anlam_id, ozellik_id)
cur = conn.cursor()
cur.execute(sql, arr)


def insert_atasozu(conn, atasozu):
"""atasozunu veritabanina ekler"""
sql = """INSERT OR REPLACE INTO atasozu(madde_id,madde)
VALUES (?,?)"""
arr = (atasozu["madde_id"], atasozu["madde"])
cur = conn.cursor()
cur.execute(sql, arr)


def insert_atasozleri(conn, madde):
"""atasozlerini veritabanina ekler"""
if "atasozu" not in madde:
return None

atasozleri = madde["atasozu"]
for atasozu in atasozleri:
insert_atasozu(conn, atasozu)
insert_madde_atasozu(conn, madde["madde_id"], atasozu["madde_id"])


def insert_madde(conn, madde):
"""maddeyi veritabanina ekler"""
sql = """INSERT INTO madde(madde_id,kac,kelime_no,cesit,anlam_gor,on_taki,madde,cesit_say,anlam_say,taki,cogul_mu,ozel_mi,lisan_kodu,lisan,telaffuz,birlesikler,font,madde_duz,gosterim_tarihi)
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"""
arr = (
madde.get("madde_id"),
madde.get("kac"),
madde.get("kelime_no"),
madde.get("cesit"),
madde.get("anlam_gor"),
madde.get("on_taki"),
madde.get("madde"),
madde.get("cesit_say"),
madde.get("anlam_say"),
madde.get("taki"),
madde.get("cogul_mu"),
madde.get("ozel_mi"),
madde.get("lisan_kodu"),
madde.get("lisan"),
madde.get("telaffuz"),
madde.get("birlesikler"),
madde.get("font"),
madde.get("madde_duz"),
madde.get("gosterim_tarihi"),
)
cur = conn.cursor()
cur.execute(sql, arr)
return cur.lastrowid


def insert_madde_atasozu(conn, madde_id, atasozu_madde_id):
"""madde_atasozu iliskisini kurar"""
sql = """INSERT INTO madde_atasozu(madde_id, atasozu_madde_id)
VALUES (?,?)"""
arr = (madde_id, atasozu_madde_id)
cur = conn.cursor()
cur.execute(sql, arr)


def insert_ornek(conn, ornek):
"""ornegi veritabanina ekler"""
if "yazar" in ornek:
insert_yazarlar(conn, ornek["yazar"])

sql = """INSERT INTO ornek(ornek_id,anlam_id,ornek_sira,ornek,kac,yazar_id)
VALUES (?,?,?,?,?,?)"""

yazar_id = None
if ornek["yazar_id"] and ornek["yazar_id"] != "0":
yazar_id = ornek["yazar_id"]

arr = (
ornek["ornek_id"],
ornek["anlam_id"],
ornek["ornek_sira"],
ornek["ornek"],
ornek["kac"],
yazar_id,
)
cur = conn.cursor()
cur.execute(sql, arr)


def insert_ornekler(conn, ornekler):
"""ornekleri veritabanina ekler"""
if not ornekler:
return None

for ornek in ornekler:
insert_ornek(conn, ornek)


def insert_ozellik(conn, ozellik):
"""ozelligi veritabanina ekler"""
sql = """INSERT OR REPLACE INTO ozellik(ozellik_id,tur,tam_adi,kisa_adi,ekno)
VALUES (?,?,?,?,?)"""
arr = (
ozellik["ozellik_id"],
ozellik["tur"],
ozellik["tam_adi"],
ozellik["kisa_adi"],
ozellik["ekno"],
)
cur = conn.cursor()
cur.execute(sql, arr)


def insert_ozellikler(conn, anlam_id, ozellikler):
"""ozellikleri veritabanina ekler"""
if not ozellikler:
return None

for ozellik in ozellikler:
insert_ozellik(conn, ozellik)
insert_anlam_ozellik(conn, anlam_id, ozellik["ozellik_id"])


def insert_yazar(conn, yazar):
"""yazari veritabanina ekler"""
sql = """INSERT OR REPLACE INTO yazar(yazar_id,tam_adi,kisa_adi,ekno)
VALUES (?,?,?,?)"""
arr = (yazar["yazar_id"], yazar["tam_adi"], yazar["kisa_adi"], yazar["ekno"])
cur = conn.cursor()
cur.execute(sql, arr)


def insert_yazarlar(conn, yazarlar):
"""yazarlari veritabanina ekler"""
if not yazarlar:
return None

for yazar in yazarlar:
insert_yazar(conn, yazar)


def execute():
"""ana method"""
for madde in MONGO_TOPICS.find():
conn = create_connection("guncel-turkce-sozluk.db")

insert_madde(conn, madde)
insert_anlamlar(conn, madde)
insert_atasozleri(conn, madde)

conn.commit()


if __name__ == "__main__":
execute()
Binary file added sozluk/v11/src/guncel-turkce-sozluk.db
Binary file not shown.
79 changes: 79 additions & 0 deletions sozluk/v11/src/guncel-turkce-sozluk.db.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
BEGIN TRANSACTION;
CREATE TABLE IF NOT EXISTS "ornek" (
"ornek_id" INTEGER NOT NULL,
"anlam_id" INTEGER NOT NULL,
"ornek_sira" INTEGER NOT NULL,
"ornek" TEXT,
"kac" INTEGER NOT NULL,
"yazar_id" INTEGER,
PRIMARY KEY("ornek_id"),
FOREIGN KEY("anlam_id") REFERENCES "anlam"("anlam_id"),
FOREIGN KEY("yazar_id") REFERENCES "yazar"("yazar_id")
);
CREATE TABLE IF NOT EXISTS "anlam" (
"anlam_id" INTEGER NOT NULL,
"madde_id" INTEGER NOT NULL,
"anlam_sira" INTEGER NOT NULL,
"fiil" INTEGER NOT NULL,
"tipkes" INTEGER NOT NULL,
"anlam" TEXT NOT NULL,
"gos" INTEGER NOT NULL,
PRIMARY KEY("anlam_id"),
FOREIGN KEY("madde_id") REFERENCES "madde"("madde_id")
);
CREATE TABLE IF NOT EXISTS "anlam_ozellik" (
"anlam_id" INTEGER NOT NULL,
"ozellik_id" INTEGER NOT NULL,
FOREIGN KEY("ozellik_id") REFERENCES "ozellik"("ozellik_id"),
FOREIGN KEY("anlam_id") REFERENCES "anlam"("anlam_id")
);
CREATE TABLE IF NOT EXISTS "atasozu" (
"madde_id" INTEGER NOT NULL,
"madde" TEXT NOT NULL,
PRIMARY KEY("madde_id"),
FOREIGN KEY("madde_id") REFERENCES "madde"("madde_id")
);
CREATE TABLE IF NOT EXISTS "madde" (
"madde_id" INTEGER NOT NULL,
"kac" INTEGER NOT NULL,
"kelime_no" INTEGER NOT NULL,
"cesit" INTEGER NOT NULL,
"anlam_gor" INTEGER NOT NULL,
"on_taki" TEXT,
"madde" TEXT NOT NULL,
"cesit_say" INTEGER NOT NULL,
"anlam_say" INTEGER NOT NULL,
"taki" TEXT,
"cogul_mu" INTEGER NOT NULL,
"ozel_mi" INTEGER NOT NULL,
"lisan_kodu" INTEGER NOT NULL,
"lisan" TEXT,
"telaffuz" TEXT,
"birlesikler" TEXT,
"font" TEXT,
"madde_duz" TEXT NOT NULL,
"gosterim_tarihi" TEXT,
PRIMARY KEY("madde_id")
);
CREATE TABLE IF NOT EXISTS "ozellik" (
"ozellik_id" INTEGER NOT NULL,
"tur" INTEGER NOT NULL,
"tam_adi" TEXT NOT NULL,
"kisa_adi" TEXT NOT NULL,
"ekno" INTEGER NOT NULL,
PRIMARY KEY("ozellik_id")
);
CREATE TABLE IF NOT EXISTS "yazar" (
"yazar_id" INTEGER NOT NULL,
"tam_adi" TEXT NOT NULL,
"kisa_adi" TEXT NOT NULL,
"ekno" INTEGER NOT NULL,
PRIMARY KEY("yazar_id")
);
CREATE TABLE IF NOT EXISTS "madde_atasozu" (
"madde_id" INTEGER NOT NULL,
"atasozu_madde_id" INTEGER NOT NULL,
FOREIGN KEY("madde_id") REFERENCES "madde"("madde_id"),
FOREIGN KEY("atasozu_madde_id") REFERENCES "atasozu"("madde_id")
);
COMMIT;
File renamed without changes.
File renamed without changes.
File renamed without changes
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
6 changes: 6 additions & 0 deletions sozluk/v12/src/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
certifi
chardet
idna
pymongo
requests
urllib3
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes

0 comments on commit 27ab857

Please sign in to comment.