COMU / zemberek-extension

LibreOffice için Türkçe imla denetimi eklentisi.
https://comu.github.io/zemberek-extension
Mozilla Public License 2.0
33 stars 1 forks source link

Bitişik yazılan kelimelerin ayrı hallerinin önerilmesi #8

Closed ahmetaa closed 6 years ago

ahmetaa commented 6 years ago

Yanlışlıkla bitişik yazılmış kelimeler için ayrı halleri önerilebilir. "yanısıra" -> yanı sıra vs.

ahmetaa commented 6 years ago

@okanozdemir bu işe bakabilir misin uygun zamanında? Kaba kuvvet çözümü uygulayabilirsin. getSuggestions metodunda normal öneri listesine bir de ayrılma durumunda olası kelimeler eklenebilir.

herşey -> h erşey, he rşey, her şey, herş ey, herşe y

şeklinde oluşa kelimeler morphology nesnesinin analyze() sonucuna bakarak ya da isCorrect metodu ile kontrol yapılabilir.

okanozdemir commented 6 years ago

"herşey" ve "yanısıra" şeklinde yanlış yazılmış kelimeler şuan isCorrect metodu tarafından doğru olarak algılanıyor. Metoda "her şey" gönderdiğim de ise yanlış cevabını alıyorum. O yüzden bunların nasıl altının çizileceğini ve kaba kuvvetle doğru halini bulmayı denerken nasıl kontrol yapacağımı anlayamadım.

ahmetaa commented 6 years ago

Bu zemberek hatası maalesef. Şimdilik başka kelimeler ile dene. Mesela "elmayedim" vs. Ben kontrol edip tekrar yazacağım

ahmetaa commented 6 years ago

Ben sorunu yanlış aktardım. Problemimiz "elmayedim" gibi yazılan bir kelime için "elma yedim" önerisinin verilmesi. Bu iş getSuggestions() içerisinde yapılacak. getSuggestions ile üretilen listeye bir de bu şekil öneriler ilave edilecek.

List bulunanOneriler...
for (i = 1'den kelime uzunluğu -2'ye)
   k1 = kelime 0..i
   k2 = kelime i..sona kadar 
   if(isCorrect(k1) ve isCorrect(k2)) 
       bulunanOnerilere k1+" "+k2 ekle.
ahmetaa commented 6 years ago

Zemberek sözlüğünde bir problemimiz var. Bu konuda #12'yi açtım.

okanozdemir commented 6 years ago

"oan", "elmayedim" gibi durumlar için doğru öneriyi üretmesine rağmen,

"oanda" için

o anda
oa nda

önerilerini sunuyor çünkü bu iki kelimeyi de doğru buluyor isCorrect() metodu. "oa" gibi bir kelime göremedim diğer işde bahsettiğiniz sözlükte farklı bir durum mu var bunlar için ?

ahmetaa commented 6 years ago

"oa" ve "nda" kısaltma kelimeleri. MorphologyConsole ile denediğimde:

oa
[Oa:Noun,Abbrv] oa:Noun+A3sg

nda
[NDA:Noun,Abbrv] nda:Noun+A3sg

Öneri verirken "Oa NDA" gibi bir şey yazması doğru olurdu. İmla denetiminde kısaltma ve özel isimlerle ilgili epey bir sorun var şu anda. Kodda ve sözlükte muhtemelen epey değişiklik gerekecek. Ama bunu da ilk alfa sürümü sonrasına bırakabiliriz. Bununla ilgili bir iş açacağım, şimdilik bu konuyu kapatabilirsin.

Bu arada @mdakin ile yıllar önce rastladığımız komik bir ayrım: "kültablası"

talhakanyilmaz commented 6 years ago

Bitişik kelimeleri ayırırken kelimeyi ikiye bölüp iki taraf da isCorrect'ten geçerse önerilere eklemek yerine, geçemeyenleri getSuggestion'a gönderip o kelimeler için de öneri alsak nasıl olur?

Yani örneğin elmayedim için elma yedim önerisi gelirken,

elmauedim için bir öneri getirilemiyor.

Böyle yaparsak öneri listesi yine çok uzayacak sanırım ama bu şekilde daha doğru sonuçlar alabiliriz diye düşündüm.

ahmetaa commented 6 years ago

@talhakanyilmaz evet, doğru bu muhtemelen daha iyi bir çözüm. Ama burada işler biraz karışabilir. Çünkü dediğin gibi ayrımlardan oluşacak kombinasyonların sayısı artıyor. Mesela: elmauedim -> elma yedim, elma dedim, elma kedim... Burada muhtemelen 2-gram bir dil modeli ile sadece yüksek olasılıklı ikililer listede bırakılabilir. Fakat iki gram bir model en az 60-70MB yük getirecektir. Ama isterseniz bu konuyu ilk sürümden sonraki bir zamanda tekrar tartışalım. Bu konuda bir issue açacağım (umuyorum akşama).

ahmetaa commented 6 years ago

@okanozdemir Yaptığım bir değişiklik çok doğru olmamış.Senin kodda ayrı yapılan öneri başa koyuluyordu, ben onu sona koymuşum ama senin yaklaşımın daha doğru idi. Neyse sonraki sürüme o şekil yaparız.