Closed alihaydargol closed 4 years ago
Duplicate of #https://github.com/ahmetaa/zemberek-nlp/issues/244
Isletim sistemi Windows mu?
Bunun nedeni model kaydedilirken String.format kullanilmasi. Burada noktali sayilarda varsayilan Locale kullaniliyor.
Weights sinifi saveAsText() icerisindeki
try (PrintWriter pw = new PrintWriter(file.toFile(), "utf-8")) {
for (String s : data.getKeyList()) {
pw.println(String.format("%.3f %s", data.get(s), s));
}
}
Bunu duzeltmek icin
try (PrintWriter pw = new PrintWriter(file.toFile(), "utf-8")) {
for (String s : data.getKeyList()) {
pw.println(String.format(Locale.ENGLISH, "%.3f %s", data.get(s), s));
}
}
Gerekiyor.
Windows'ta aşağıdaki ayarları yaptığımda düzeldi:
Control Panel -> Change date,time, or number formats -> Additional Settings ekranında ağadaki gibi yaptım
Windows -> Settings -> Time & Language -> Date, time, & regional formatting ekranında ise aşağıdakiler yapıldı
Sorun muhtmelen işletim sistemini İnglizce kullanıp bölgesel format olarak Türkçe kullanmamdan kaynaklı.
Garantiye almak icin gerekli degisikligi yapacagim.
NER için oluşturulan modeli kullanmaya çalıştığımda şu şekilde hata alıyordum:![image](https://user-images.githubusercontent.com/43875069/81073594-88677c00-8ef0-11ea-8188-c4a8af97076a.png)
Exception in thread "main" java.lang.NumberFormatException: For input string: "-0,097" at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2054) at java.base/jdk.internal.math.FloatingDecimal.parseFloat(FloatingDecimal.java:122) at java.base/java.lang.Float.parseFloat(Float.java:461) at zemberek.core.data.Weights.loadFromLines(Weights.java:48) at zemberek.core.data.Weights.loadFromFile(Weights.java:42) at zemberek.ner.PerceptronNer$ClassModel.load(PerceptronNer.java:254) at zemberek.ner.PerceptronNer.loadModel(PerceptronNer.java:78) at app.App.Predict(App.java:47) at app.App.main(App.java:62)
modelin klasör yapısı ise şu şekilde:O.ner.model dosyasının ilk iki satırı: -0,097 CWLongLemma:yönetim -0,162 CW+NW+2NW:testsüreçlerikonusunda
ilk satırdaki "-0,097" sayısı float a cast edilemediği için kod hata fırlatıyor. bunu "-0.097" şeklinde değiştirirsek ilk satırı düzgün okuyup yukarıdaki hatayı bu sefer 2. satır için veriyor.
Exception in thread "main" java.lang.NumberFormatException: For input string: "-0,162" at