ahmetaa / zemberek-nlp

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

TurkishSentenceNormalizer combineNecessaryWords() java.lang.ArrayIndexOutOfBoundsException: -1 #237

Open kaansonmezoz opened 4 years ago

kaansonmezoz commented 4 years ago

Merhaba,

normalize() fonksiyonunu çalıştırdığımda combineNecessaryWords() fonksiyonu içerisinde java.lang.ArrayIndexOutOfBoundsException: -1 exception'ını alıyorum. Kodu incelediğimde

        if (!combined) {
            result.add(((Token)tokens.get(tokens.size() - 1)).getText());
        }

buradaki tokens.size()'ın olmasından kaynaklandığını ve boolean combined = false; olarak ilklendirildiğinden ve size 0 iken for döngüsüne girmediğini ve combined'ın değerinin değişmemesinden kaynaklanıyor.

kaansonmezoz commented 4 years ago

Sadace rakamlardan oluşan bir inputum vardı. Normalizasyon işlemi öncesinde sayıları temizleyip o şekilde parametre geçmemden kaynaklı olmuş gibi gözüküyor. İşlem sırasını değiştirerek bu durumdan cok kolay bir şekilde kurtulabilirim ama ilgili yerdeki if'te de bir kontrol olması daha iyi olabilir diye düşünüyorum

kaansonmezoz commented 4 years ago

Ya da daha öncesinde yapılabilecek bir kontrole ihtiyaç duyulabilir.

mdakin commented 4 years ago

@kaansonmezoz Hata olusturan giris tam olarak nedir? bu hatayi tetikleyen kod orneginizi verirseniz hatayi tekrarlayabiliriz ve cozumu bulmak daha kolay olur.

kaansonmezoz commented 4 years ago

1111 000 gibi sadece binaryden oluşan bir inputu alıyorum ve rakamları empty string ile replace ediyorum. Dolayısıyla normalize fonksiyonuna gönderilen string empty string oluyor. Bu durumun kontrolu developera bırakilabilir tabii neden empty string geçsin ki diye düşünülüp, ama bu fonksiyonu çağıran kişi farkında olmayabilir bazı işlemleri uygulayıp bir sonuç alıp normalize'i çağırabilir

ahmetaa commented 4 years ago

@kaansonmezoz iki hafta icinde bir bugfix release cikarmayi umit ediyorum. Bunu orada duzeltiriz insallah.

kaansonmezoz commented 4 years ago

Açık olan issueları alıp contribution yapabilir miyiz peki ?