ahmetaa / zemberek-nlp

NLP tools for Turkish.
Other
1.14k stars 207 forks source link

Add new word life-cycle and use external dictionary #212

Closed ugrozkr closed 5 years ago

ugrozkr commented 5 years ago

Selam, Net tarif edebilmek için soruyu türkçe soruyorum. Zemberek için finans terimlerini eklemek istiyoruz. Burada yeni kelime ekleyip türettiğimizde bu nereye eklenmiş oluyor nerede tutuluyor bizim bunu tekrar etmeden tek sefer yapıp daimi kullanabilmemiz gerekiyor.

Birde veritabanı tarafında tutulan bir sözlük ile zemberek kelime havuzunu mix kullanmak mümkün müdür ?

ahmetaa commented 5 years ago

Bunu bir örnekle açıklayabilir misiniz?

ugrozkr commented 5 years ago

Zemberek uygulamasını spring boot üzerinde api servis olarak açacağız jar paketi haline getirerek. Finans üzerine bir asistan yapmak istiyoruz basit anlamda fakat zemberek içerisinde yer alan türkçe kelimeler finans sektörü terimleri biraz farklı olduğu için çok eksik kalıyor. Örneğin ATM, Pos, Ekstre, Bono gibi kelimeleri mevcut sözlüğe ekleyerek daimi olarak kullanmak istiyoruz. birde bunlar dışında NER olarak eklememiz gereken tek yada iki kelimeden oluşan özel kelimeler var hepsini tek seferliğe mahsus ekleyip mevcut spring boot api üzerinde işlemi tekrar yapmaya gerek kalmadan daimi kullanabilmek istiyoruz.

ugrozkr commented 5 years ago

NER mantığı için aşağıdakiler için içerisinde tek satır kayıt bulunan örnek dosya paylaşabilirseniz dummy data içeren

Path trainPath = Paths.get("ner-train"); Path testPath = Paths.get("ner-test"); Path modelRoot = Paths.get("my-model");

Yeni kelimeleri eklediğimizde nereye save edildiği ve recycle olup kaybolmaması içinde nasıl çalıştırmamız gerektiği konusunda kısa bilgi paylaşabilirseniz süper olur @ahmetaa bey

ahmetaa commented 5 years ago

Zemberek jar içerisinde yer alan sözlükleri okumaya izin veriyor. Ama 0.16.0'dan sonra kaynak tanımlama konusunda bazı değişiklikler oldu. o nedenle aşağıdaki kod sadece trunk için çalışıyor olabilir.

Örneğin jar içerisinde size ait "resources/my_dictionary.txt" ve "resources/finance_dictionary.txt" dosyaları olsun:

        RootLexicon lexicon = RootLexicon.builder()
                .setDefaultLexicon(RootLexicon.getDefault()) // sabit zemberek sozlugunu ekler.
                .addTextDictionaryResources("resources/my_dictionary.txt","resources/finance_dictionary.txt")
                .build();

        TurkishMorphology morphology = TurkishMorphology
                .builder()
                .setLexicon(lexicon)
                .build();
ugrozkr commented 5 years ago

sözlük için bu kısım ok hocam peki NER olunca konu ?? birde örnek file paylaşabilir misiniz ? gerçek ER olmasına gerek yok tek satır dummy kayıt olsa yeter mantığını oturtmak için.

ahmetaa commented 5 years ago

https://github.com/ahmetaa/zemberek-nlp/blob/master/ner/README.md

Burada örnek var. Mesela:

<START:ORG> Enerji Verimliliği Merkezi <END> kurucu başkanı <START:PER> Bülent Yeşilata <END> , <START:LOC> Ankara'da <END> bir toplantıya katıldı.

ahmetaa commented 5 years ago

Bu örnekte OpenNLP stili annotation yapılmış. Bu arada örnekte bir hata vardı sonradan düzelttim.