Skocz do zawartości

Witaj!

Zaloguj lub Zarejestruj się aby uzyskać pełny dostęp do forum.

Zdjęcie
- - - - -

[2.0 Release] Autokorekta bez polskich znaków


  • Zaloguj się, aby dodać odpowiedź
85 odpowiedzi w tym temacie

#1 M4v3R

M4v3R
  • 2 043 postów
  • Skąd/usr/pl/Konin

Napisano 26 lipca 2008 - 15:34

Zapewne nie tylko mnie ucieszył fakt, że w wersji 2.0 oprogramowania iPhone pojawiła się natywnie autokorekta. Jednak radość moja szybko zwiędła gdy okazało się, że zawiera ona polskie znaki, co nie jest dobrą wiadomością szczególnie dla tych, którzy często piszą SMS - wydatki na nie mogą znacząco wzrosnąć. Już wtedy na początku odgrażałem się, że zamierzam coś z tym zrobić. Tym bardziej, że w odróżnieniu od polskiej lokalizacji polska autokorekta wydaje się być przygotowana bardzo starannie.

I oto po kilku godzinach bojów przedstawiam Wam poprawioną wersję polskiej autokorekty bez polskich znaków. Ponieważ nie miałem czasu żeby ją dogłębnie przetestować więc oddaję ją Wam jako wersję testową, do ręcznego wgrania. Gdy będę pewny, że iPhone'y podczas jej używania nie wybuchają to postaram się o repozytorium dla niej.

Aktualizacja!
Paczkę z poprawioną autokorektą można pobrać również za pośrednictwem programu Cydia z repozytorium i-apps.pl.
Znajdziecie ją w kategorii Localization.

Link: [LINK USUNIĘTY Z POWODU USZKODZENIA PACZKI]

Jak wgrać (patrz wyżej - prościej wgrać poprzez program Cydia)
1. Rozpakuj pobrane archiwum
2. Połącz się z iPhone (sposób dowolny, nie będę się nad tym rozwodził, jest dział Tutoriale od tego)
3. Wgraj rozpakowany plik do katalogu: /System/Library/TextInput/TextInput_pl.bundle/
4. Upewnij się, że masz ustawioną polską klawiaturę w Ustawieniach narodowych
5. Ustawienia -> ogólne -> ustawienia fabryczne -> Wymaż słownik klawiatury

Pytania (wyłączając te głupie) i sugestie mile widziane :).

PS. To nie jest całkowicie nowa wersja autokorekty. Nie zostały dodane żadne nowe słowa, napisałem po prostu specjalny skrypt, który zamienił wszystkie polskie znaki (w standardzie Unicode) na normalne litery, a następnie poprawił wpisy dot. długości słów. Dla ciekawskich, skrypt jest dostępny tutaj: http://iphone.artdstract.pl/depl.phps

#2 bebas13

bebas13
  • 106 postów

Napisano 26 lipca 2008 - 15:40

Jest możliwość wyłączenia autokorekty??

#3 Qbik

Qbik
  • 891 postów
  • SkądWarszawa

Napisano 26 lipca 2008 - 15:42

ok wgrałem i w czasie pisania jak dochodzę do końca linii to nie działa mi ani backspace ani spacja :( ale litery mogę wpisać. Dziwne wcześniej było ok

#4 M4v3R

M4v3R
  • 2 043 postów
  • Skąd/usr/pl/Konin

Napisano 26 lipca 2008 - 15:50

@bebas: Oczywiście jak wolisz sobie utrudniać życie to możesz ją wyłączyć, wystarczy zmienić nazwę katalogowi do którego kazałem ten plik wgrać na jakąś inną i po bólu. @Qbik: Hm... nie zaobserwowałem takiego zachowania. Może tylko na jakimś konkretnym słowie tak się dzieje? Tak jak już mówiłem - nie jestem pewien w 100% że wszystko będzie ok, bo nie miałem czasu żeby dostatecznie to wszystko przetestować, a ponieważ format plików autokorekty się zmienił, być może doszło coś co pominąłem. Miej ten temat na oku, jak będą jakieś update'y to dam o nich znać.

#5 Qbik

Qbik
  • 891 postów
  • SkądWarszawa

Napisano 26 lipca 2008 - 15:52

ok, dzięki kawał dobrej roboty ;) przy pierwszych dwóch SMSach coś takiego się działo teraz wygląda na to, że jest już ok wysłałem już kilka testowo, różnej długości i jak na razie działa

#6 bebas13

bebas13
  • 106 postów

Napisano 26 lipca 2008 - 16:01

Ja też potwierdzam, wszystko działa jak należy. Dzięki

#7 M4v3R

M4v3R
  • 2 043 postów
  • Skąd/usr/pl/Konin

Napisano 26 lipca 2008 - 16:01

Hm... Mi na początku jak wgrałem sobie gotowe pliki też działy się jakieś dziwne rzeczy (właśnie też nie mogłem skasować słowa), ale potem już tego nie zauważyłem. Może po prostu iPhone miał załadowany stary słownik w pamięci i dlatego takie cyrki wychodziły.

#8 dliwski

dliwski


  • 15 306 postów
  • SkądWarszawa

Napisano 26 lipca 2008 - 18:48

Wgrałem, działa jak należy. :)

#9 a-l-e-x

a-l-e-x
  • 514 postów
  • SkądWarszawa

Napisano 27 lipca 2008 - 19:16

@M4v3R - pomysl genialny! wykonanie rowniez super, wszystko swietnie dziala. cale szczescie, ze sie za to wzial bo mnie szlag trafiał z tymi polskimi znakami :)

#10 Hexx

Hexx
  • 127 postów
  • SkądWołów, Wrocław

Napisano 27 lipca 2008 - 23:13

jak sie polaczyc cuteftp przez wifi mając soft 2.0 ? cos do zainstalowania z cydii?

#11 M4v3R

M4v3R
  • 2 043 postów
  • Skąd/usr/pl/Konin

Napisano 28 lipca 2008 - 07:12

Musisz zainstalować OpenSSH w Cydii.

---- Dodano 28-07-2008 o godzinie 13:28 ----
Aktualizacja!
Paczkę z poprawioną autokorektą można pobrać również za pośrednictwem programu Cydia z repozytorium i-apps.pl.
Znajdziecie ją w kategorii Localization.

#12 PGC

PGC
  • 1 023 postów

Napisano 28 lipca 2008 - 14:14

Zainstalowałem w Cydi podane źródło i widzę dwie paczki: 1) "Poprawiona autokorekta" (1.0-2) 2) "iPolish 2.0 beta 2" (2.0.6-5) Zainstalowałem 2), ustawiłem chyba co trzeba, restart iP zrobiłem i wprowadzając tekst podpowiada mi słowa z polskimi znakami. N ie ta paczka czy coś źle zrobiłem?

#13 mls

mls

  • 1 313 postów
  • SkądWarszawa

Napisano 28 lipca 2008 - 14:17

Nie ta paczka ;) iPolish to poprawione tłumaczenia aplikacji i systemu. Właściwa od autokorekty jest ta pierwsza.

#14 Darrarski

Darrarski
  • 469 postów
  • SkądWarszawa / Piastów

Napisano 28 lipca 2008 - 23:07

Dzięki M4v3R za szybką reakcje na (między innymi moje) prośby o poprawę autokorekty. Zainstalowałem przez Cydie (stamtąd się dowiedziałem o releasie) i działa bez problemów, chociaż pierwsze moje wrażenie było takie że zawiera mniej wyrazów. Po prostu wcześniej korekta podpowiadała mi praktycznie każde słowo (z polskimi znakami), a teraz jakby uaktywnia się rzadziej, no ale skoro bazowałeś na oryginalnym słowniku jedynie usuwając polskie znaki, to prawdopodobnie to tylko moje prywatne złudzenie ;-)

#15 Darrarski

Darrarski
  • 469 postów
  • SkądWarszawa / Piastów

Napisano 30 lipca 2008 - 18:25

Jednak nie myliłem się, po dłuższym testowaniu stwierdzam że gdzieś musi być błąd w tej paczce, bo autokorekta działa zauważalnie gorzej niż oryginalnie. Występuje też problem o którym pisał Qbik. Jeśli podpowiadany wyraz koryguje się na końcu linii, przestaje działać backspace (a właściwie działa, ale wygląda to tak, jakby kasował jakieś znaki których nie widać, dopiero po użyciu go kilkanaście razy zaczyna kasować to co widać na ekranie). Poza tym zauważyłem jeszcze że jeśli zaczynam nowe zdanie od wyrazu "Chce" to jest to zamieniany na "chce" (z małej litery), chociaż wprowadzony jest bezbłędnie (korekta polega tylko na zmianie pierwszej litery na małą, co jest błędne, bo jest to początek zdania). Czekam na update.

#16 mls

mls

  • 1 313 postów
  • SkądWarszawa

Napisano 30 lipca 2008 - 18:42

Bo fakt faktem sama konwersja plików słownika z unicode na ascii to nie jest najlepszy pomysł. Nie należy zapominać, że w unikodzie większość polskich znaków składa się z dwóch a nie jednego bajtu, więc po konwersji np. słowa "łódź" na "lodz" tekst skróci się z 7 bajtów do 4, pozostając jednak na zagospodarowanych 7 bajtach - co daje 3 puste znaki...

#17 M4v3R

M4v3R
  • 2 043 postów
  • Skąd/usr/pl/Konin

Napisano 30 lipca 2008 - 19:43

@mls: Oczywiście wziąłem to pod uwagę. Założyłem jednak, że plik z indeksem (.idx) poprawnie pokazuje offsety rozpoczynające słowa, dlatego niezagospodarowane miejsce nie powinno być problemem. Tym bardziej, że uaktualniłem flagi długości wyrazów przy zmienionych wyrazach. Problem który opisuje Darrarski jest mi znany. Chodzi tu o słowa, które mają flagę typu nr 0x82, jednak nie odgadłem na razie co ona oznacza. Próba zmiany tej flagi na inną (np. 0x00, którą ma większość słów) zdawała się naprawić problem, jednak wtedy słownik stawał się niestabilny pod innymi względami. Gdy będę miał czas postaram się zgłębić te problemy i wypuścić aktualizację.

#18 dziobek

dziobek
  • 5 postów

Napisano 30 lipca 2008 - 21:08

u mnie dziala bez problemu, dzieki M4v3R! well done.

#19 M4v3R

M4v3R
  • 2 043 postów
  • Skąd/usr/pl/Konin

Napisano 30 lipca 2008 - 21:26

Dziobek: Można łatwo sprawdzić że ten błąd występuje. Napisz na początku zdania (żeby była automatycznie duża litera) słówko "Jakos". Autokorekta zasugeruje zmianę na "jakos" (z małej litery). Gdy zaakceptujesz tę zmianę, przy próbie skasowania tego słowa możesz się zdziwić :). Trzeba będzie chwilkę przytrzymać "x" by je skasować. To właśnie jest problem który usiłuję obecnie rozwiązać.

#20 loopez

loopez
  • 250 postów

Napisano 30 lipca 2008 - 23:03

a czy jak odinstaluje pakiet w cydii to wroca ogonki? Jak przywrocic stare ustawienia slownika bez restore?

#21 a-l-e-x

a-l-e-x
  • 514 postów
  • SkądWarszawa

Napisano 31 lipca 2008 - 16:20

@M4v3R pospieszylem sie jednak z ocena tej paczki, oprocz problemow z wielkoscia i liter i kasowaniem, mam jeszcze inny problem nie do zaakceptowania, iphone wysyla mi wadliwe sms - z pozjadanymi literkami, bez niektorych wyrazow - mimo ze wszystko bylo wspisane prawidlowo. nie wiem czym to jest spowodowane, ale mam nadzieje ze to naprawisz

#22 benedetti

benedetti
  • 459 postów

Napisano 31 lipca 2008 - 19:37

Potwierdzam podobne problemy. np. SMS o tresci: "Na dzisiaj skonczylem" pisany polska klawiatura (w domysle uzywajacy polskiej autokorekty) przychodzi jako: "Na dzisiaj ⌷⌷⌷⌷skonczylem" Wszystko gra w przypadku uzywania angielskiej klawiatury. Sprawdzone na kilku odbiorcach.

#23 mls

mls

  • 1 313 postów
  • SkądWarszawa

Napisano 31 lipca 2008 - 21:03

@mls: Oczywiście wziąłem to pod uwagę. Założyłem jednak, że plik z indeksem (.idx) poprawnie pokazuje offsety rozpoczynające słowa, dlatego niezagospodarowane miejsce nie powinno być problemem. Tym bardziej, że uaktualniłem flagi długości wyrazów przy zmienionych wyrazach.

Problem który opisuje Darrarski jest mi znany. Chodzi tu o słowa, które mają flagę typu nr 0x82, jednak nie odgadłem na razie co ona oznacza. Próba zmiany tej flagi na inną (np. 0x00, którą ma większość słów) zdawała się naprawić problem, jednak wtedy słownik stawał się niestabilny pod innymi względami. Gdy będę miał czas postaram się zgłębić te problemy i wypuścić aktualizację.


Mam nadzieję, że wziąłeś pod uwagę format zapisu długości słowa w słowniku, czyli to trochę przekombinowane 16 (lub więcej!) bitów. Przy zmianie długości należy odpowiednio zmodyfikować taki nagłówek słowa i nie jest to takie hop siup...

#24 M4v3R

M4v3R
  • 2 043 postów
  • Skąd/usr/pl/Konin

Napisano 01 sierpnia 2008 - 01:37

Wziąłem wziąłem. Tutaj akurat się nic nie zmieniło od 1.1.1. Nadal to 16 bitów oblicza się wg algorytmu: 0x400 + (0x421 * ilość_liter).

Problem który opisuje a-l-e-x to ten sam problem o którym wspominałem wcześniej - ze słowami typu 0x82. Najgorsze jest to, że tak jak a-l-e-x wspomniał problemu tego na pierwszy rzut oka nie widać, póki się nie wyśle sms'a. Prace w toku, jak naprawię to dam znać :).

Edit: Pozwólcie że zapiszę sobie tu wynik moich badań nad typami wyrazów, co bym tych informacji nie zgubił.

Typ wyrazu określa się jednym bajtem. Numerując bity od LSB do MSB, mamy

0 [1] - nieużywane
1 [2] - ?
2 [4] - nazwa własna
3 [8] - nieużywane
4 [16] - nieużywane
5 [32] - nieużywane
6 [64] - nieużywane
7 [128] - ?

Rodzaje typów występujące w polskim słowniku: 0x00, 0x02, 0x04, 0x82, 0x86. Aktualnie wiem jedynie, że 0x00 to zwykłe słowo i 0x04 to nazwa własna. Funkcje bitów nr 1 i 7 pozostają tajemnicą jak na razie.

PS. Ciekawostka: autokorekta od Apple zawiera 149992 słowa.

#25 mls

mls

  • 1 313 postów
  • SkądWarszawa

Napisano 01 sierpnia 2008 - 09:49

Ke?
Co to za 0x400 + (0x421 * ilosc_liter)? A niby skad wiesz jaka jest ilosc liter? :)
Cytując ze strony DictionaryFormat - iphoneshop - Google Code - iPhone keyboard dictionary file binary formats

unigrams.dat

h1 wh wbytes wh wbytes wh wbytes ...

h1 - file header

Size 4 bytes, Value - number of words in file

wh - word header Size 4 or 8 bytes

16 bits for word length - all comments why some company needs such a funny encoding?

u = unicodeLen
r = rawBytesLen
C = crasy Len, rawBytesLen + 1 + (extra). // numbers +1, letters and '¾' neutral, others -1
format = 16 bits.
u3 u2 u1 r5 r4 r3 r2 r1 C6 C5 C4 C3 C2 C1 u5 u4
8 bits for word weight

bigger value - more frequent word
values bellow 10 - incorrect words, must be replaced something from database
8 extra bits. (en_US, en_GB, fr_FR are using only 2 bits, 0th and 1th bits)

bit 1 - unknown bit 0 - case sensitive word
if extrabit 0 is true then addidional 4 bytes (32 bits) in header showing upper and lower cases.

wbytes - word bytes UTF-8 encoded strings, terminated with %00


Według powyższego opisu za pomocą php nagłówek słowa można odczytać tak:
$block = unpack('SwordHead/CwordImp/CwordExtra', fread($f_dat, 4));
	$block['wordLength'] 		= ($block['wordHead']) >> 13;
	$block['wordRawLength'] 	= ($block['wordHead'] & 0x1fff) >> 8;
	$block['wordCrasyLength'] 	= ($block['wordHead'] & 0x00ff) >> 2;
	$block['wordExtraCase']		= $block['wordExtra'] & 0x0001 == 0x01 ? true : false;
	$block['wordImpError']		= $block['wordImp'] < 10 ? true : false;
	if ($block['wordExtraCase'] == true)
		$block['wordCase'] 		= fread($f_dat, 4);
	if ($block['wordLength'] > 0)
		$block['word']				= fread($f_dat, $block['wordLength'] + 1);
Gdzie $f_dat jest wskaźnikiem do pliku Unigrams-*.dat




Użytkownicy przeglądający ten temat: 1

0 użytkowników, 1 gości, 0 anonimowych