Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.programming > #33620 > unrolled thread

Detekcja strony kodowej (Bayes?)

Started byBorneq <borneq@antyspam.hidden.pl>
First post2019-12-27 14:53 +0100
Last post2020-01-09 00:45 -0800
Articles 7 — 3 participants

Back to article view | Back to pl.comp.programming


Contents

  Detekcja strony kodowej (Bayes?) Borneq <borneq@antyspam.hidden.pl> - 2019-12-27 14:53 +0100
    Re: Detekcja strony kodowej (Bayes?) Mateusz Viste <mateusz@xyz.invalid> - 2019-12-27 15:27 +0100
      Re: Detekcja strony kodowej (Bayes?) Borneq <borneq@antyspam.hidden.pl> - 2019-12-27 17:29 +0100
        Re: Detekcja strony kodowej (Bayes?) Mateusz Viste <mateusz@xyz.invalid> - 2019-12-27 20:34 +0100
          Re: Detekcja strony kodowej (Bayes?) Borneq <borneq@antyspam.hidden.pl> - 2019-12-28 09:10 +0100
            Re: Detekcja strony kodowej (Bayes?) "M.M." <mmarszik@gmail.com> - 2020-01-08 04:19 -0800
            Re: Detekcja strony kodowej (Bayes?) "M.M." <mmarszik@gmail.com> - 2020-01-09 00:45 -0800

#33620 — Detekcja strony kodowej (Bayes?)

FromBorneq <borneq@antyspam.hidden.pl>
Date2019-12-27 14:53 +0100
SubjectDetekcja strony kodowej (Bayes?)
Message-ID<5e060cd2$0$511$65785112@news.neostrada.pl>
Mam strony kodowe 8859-*, CP12?? oraz KOI8-R.
Jak rozpoznać po tekście, np. za pomocą Bayesa, która to strona kodowa?
Jak mam język polski (tu musi być dodatkowa wiedza, jaki to język) to 
używam tylko kilku znaków ośmiobitowych (reszta to Ascii 7-bitowe) więc 
sprawdzam aby 8-bitowe były z tego zbioru.
A jak jest z takimi językami jak rosyjski, grecki, hebrajski, arabski, 
które mają cały alfabet zdefiniowany w wyższym Ascii?
Tu potrzebna była by nauka na tekstach - bo niektóre znaki występują 
rzadziej i niektóre częściej, a poza tym kontekst znaków w sylabach.
Jak zdetektować UTF8? Można próbować konwertować, i czy przekonwertuje 
się bez błędów lub z bardzo małą ilością błędów. Ale zastanawiam się nad 
stronami kodowymi.

[toc] | [next] | [standalone]


#33621

FromMateusz Viste <mateusz@xyz.invalid>
Date2019-12-27 15:27 +0100
Message-ID<20191227152725.50c0c2f8@mateusz>
In reply to#33620
2019-12-27 o 14:53 +0100, Borneq napisał:
> Mam strony kodowe 8859-*, CP12?? oraz KOI8-R.
> Jak rozpoznać po tekście, np. za pomocą Bayesa, która to strona
> kodowa? Jak mam język polski (tu musi być dodatkowa wiedza, jaki to
> język) to używam tylko kilku znaków ośmiobitowych (reszta to Ascii
> 7-bitowe) więc sprawdzam aby 8-bitowe były z tego zbioru.

To takie sobie, bo w tekście może występować wszelkiego rodzaju
semigrafika.

> A jak jest z takimi językami jak rosyjski, grecki, hebrajski,
> arabski, które mają cały alfabet zdefiniowany w wyższym Ascii?

Moja propozycja: Wybierz losowo kilkanaście słów z tekstu. Każde słowo
przekonwertuj do UTF-8 zakładając wszystkie możliwe strony kodowe dla
tego języka, a następnie znajdź w słowniku czy to słowo istnieje.

Wygrywa wariant strony kodowej o najwyższej ilości istniejących słów.

> Jak zdetektować UTF8?

Dokładnie tym samym sposobem - tyle że nie potrzeba tego konwertować,
wystarczy bezpośredni wgląd do słownika dla danego języka.

Mateusz

[toc] | [prev] | [next] | [standalone]


#33622

FromBorneq <borneq@antyspam.hidden.pl>
Date2019-12-27 17:29 +0100
Message-ID<5e06316a$0$17346$65785112@news.neostrada.pl>
In reply to#33621
W dniu 2019-12-27 o 15:27, Mateusz Viste pisze:
> Moja propozycja: Wybierz losowo kilkanaście słów z tekstu. Każde słowo
> przekonwertuj do UTF-8 zakładając wszystkie możliwe strony kodowe dla
> tego języka, a następnie znajdź w słowniku czy to słowo istnieje.

Muszę mieć słowniki dla poszczególnych języków.
W każdym razie, muszę mieć niestety wiedzę jaki to język.
Gdy mam, tablicę [256] częstotliwości i porównuję Bayesem zgodność. To 
zadziała dobrze dla takich języków jak polski czy norweski dla których 
tylko niektóre są z ogonkami.
Czy zadziała dla rosyjskiego? Może trzeba będzie tablicy [256*256] lub 
choćby [128*128] dla dwuznaków, wtedy będą większe różnice w 
częśtotliwościach.

[toc] | [prev] | [next] | [standalone]


#33623

FromMateusz Viste <mateusz@xyz.invalid>
Date2019-12-27 20:34 +0100
Message-ID<20191227203426.75e401f5@mateusz>
In reply to#33622
2019-12-27 o 17:29 +0100, Borneq napisał:
> W dniu 2019-12-27 o 15:27, Mateusz Viste pisze:
> > Moja propozycja: Wybierz losowo kilkanaście słów z tekstu. Każde
> > słowo przekonwertuj do UTF-8 zakładając wszystkie możliwe strony
> > kodowe dla tego języka, a następnie znajdź w słowniku czy to słowo
> > istnieje.  
> 
> Muszę mieć słowniki dla poszczególnych języków.

Da się znaleźć, mnóstwo tego obecnie.

> W każdym razie, muszę mieć niestety wiedzę jaki to język.

To już większy problem. Szczególnie jeśli kodowanie nieznane.

> Gdy mam, tablicę [256] częstotliwości i porównuję Bayesem zgodność.
> To zadziała dobrze dla takich języków jak polski czy norweski dla
> których tylko niektóre są z ogonkami.

To może dałoby się załatwić oba problemy jednym podejściem? Wygenerować
sobie dla każdego języka zestaw tablic częstotliwości - po jednej na
każde dopuszczalne kodowanie, i sprawdzać swój plik na tej podstawie -
jeśli szczęście dopisze, to mamy wykrywanie język+strona. Tylko do
tego, jeśli to w ogóle ma statystyczną szansę zadziałać, trzeba mieć
sporą próbkę materiału.

Mateusz

[toc] | [prev] | [next] | [standalone]


#33624

FromBorneq <borneq@antyspam.hidden.pl>
Date2019-12-28 09:10 +0100
Message-ID<5e070e04$0$17363$65785112@news.neostrada.pl>
In reply to#33623
W dniu 2019-12-27 o 20:34, Mateusz Viste pisze:
> To może dałoby się załatwić oba problemy jednym podejściem? Wygenerować
> sobie dla każdego języka zestaw tablic częstotliwości - po jednej na
> każde dopuszczalne kodowanie, i sprawdzać swój plik na tej podstawie -
> jeśli szczęście dopisze, to mamy wykrywanie język+strona. Tylko do
> tego, jeśli to w ogóle ma statystyczną szansę zadziałać, trzeba mieć
> sporą próbkę materiału.
> 
> Mateusz
> 

sprawdze czy zadziala

[toc] | [prev] | [next] | [standalone]


#33701

From"M.M." <mmarszik@gmail.com>
Date2020-01-08 04:19 -0800
Message-ID<6fd958b4-6dec-4278-b882-f92eb4d55ee1@googlegroups.com>
In reply to#33624
On Saturday, December 28, 2019 at 9:15:02 AM UTC+1, Borneq wrote:
> W dniu 2019-12-27 o 20:34, Mateusz Viste pisze:
> > To może dałoby się załatwić oba problemy jednym podejściem? Wygenerować
> > sobie dla każdego języka zestaw tablic częstotliwości - po jednej na
> > każde dopuszczalne kodowanie, i sprawdzać swój plik na tej podstawie -
> > jeśli szczęście dopisze, to mamy wykrywanie język+strona. Tylko do
> > tego, jeśli to w ogóle ma statystyczną szansę zadziałać, trzeba mieć
> > sporą próbkę materiału.
> > 
> > Mateusz
> > 
> 
> sprawdze czy zadziala

Z częstotliwościami pomysł wydaje się dobry. Jeśli danych jest dużo, to można
ustawić 'dziurkę od klucza' na trzy bajty, a następnie przesuwać dziurkę od
klucza od jeden bajt. Z każdego pliku powstanie N-2 trójek, gdzie N to rozmiar
pliku w bajtach. Jeśli danych jest mało, to dziurkę od klucza lepiej ustawić
na 2 bajty. Tak zebrane częstotliwości można wrzucić na do sieci neuronowej.
Zapewne częstotliwości warto będzie normalizować przed uczeniem sieci.
Może wystarczyć najprostsza sieć z jednym liniowym neuronem, czytaj jedna
sieć na jedno kodowanie. Takie sieci błyskawicznie się uczą przy zastosowaniu
kwadratowej funkcji błędu. 

Pozdrawiam

[toc] | [prev] | [next] | [standalone]


#33702

From"M.M." <mmarszik@gmail.com>
Date2020-01-09 00:45 -0800
Message-ID<2044874e-9745-4bcb-bb2a-b47e637f1747@googlegroups.com>
In reply to#33624
On Saturday, December 28, 2019 at 9:15:02 AM UTC+1, Borneq wrote:
> W dniu 2019-12-27 o 20:34, Mateusz Viste pisze:
> > To może dałoby się załatwić oba problemy jednym podejściem? Wygenerować
> > sobie dla każdego języka zestaw tablic częstotliwości - po jednej na
> > każde dopuszczalne kodowanie, i sprawdzać swój plik na tej podstawie -
> > jeśli szczęście dopisze, to mamy wykrywanie język+strona. Tylko do
> > tego, jeśli to w ogóle ma statystyczną szansę zadziałać, trzeba mieć
> > sporą próbkę materiału.
> > 
> > Mateusz
> > 
> 
> sprawdze czy zadziala

Zobacz jeszcze to:
https://softwareengineering.stackexchange.com/questions/187169/how-to-detect-the-encoding-of-a-file

Cytat:
[
Files generally indicate their encoding with a file header. There are many examples here. However, even reading the header you can never be sure what encoding a file is really using.

For example, a file with the first three bytes 0xEF,0xBB,0xBF is probably a UTF-8 encoded file. However, it might be an ISO-8859-1 file which happens to start with the characters . Or it might be a different file type entirely.
]

Pozdrawiam

[toc] | [prev] | [standalone]


Back to top | Article view | pl.comp.programming


csiph-web