Closed ahmetaa closed 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.
"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.
Bu zemberek hatası maalesef. Şimdilik başka kelimeler ile dene. Mesela "elmayedim" vs. Ben kontrol edip tekrar yazacağım
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.
Zemberek sözlüğünde bir problemimiz var. Bu konuda #12'yi açtım.
"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 ?
"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ı"
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.
@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).
@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.
Yanlışlıkla bitişik yazılmış kelimeler için ayrı halleri önerilebilir. "yanısıra" -> yanı sıra vs.