Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Prosty sposób na wykrywanie języka, Jak stworzyć prosty skrypt, któwy wykryje język i wypisze komunikat?
AmyLokmart
post 3.12.2021, 10:52:15
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 28.11.2021

Ostrzeżenie: (0%)
-----


Czy istnieje prosty sposób na wykrywanie języka przez funkcje PHP?
Nie chodzi mi o gotowce, które wykorzystują API np: google, yandex i inne oraz skomplikowane biblioteki czy GEO.
Chciałabym wykryć język prostym skryptem.

Skrypt najlepiej jakby wykrywał popularne języki: angielski, hiszpański, niemiecki, rosyjski, chiński, arabski, francuski, włoski, polski, czeski itd (google wykrywa 164 języki)

Szukałam rozwiązania,ale wszędzie podają skrypty, które wymagają różnych pakietów albo API sad.gif

Zastanawiam się czy nie spróbować zrobić tego od podstaw. No wiecie prosty skrypt smile.gif

Jakich funkcji musiałabym na początek użyć?

A może ktoś ma gotowy skrypt?

Jeśli ktoś coś znalazł, albo wie jak to ugryźć to Proszę o odpowiedź smile.gif

Dziękuję i pozdrawiam.

PS: oczywiście jak coś znajdę, albo stworzę to od razu kliknę na to forum smile.gif
Go to the top of the page
+Quote Post
Pyton_000
post 3.12.2021, 11:33:13
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Słabo szukałaś smile.gif https://github.com/landrok/language-detector

Ten post edytował Pyton_000 3.12.2021, 11:33:29
Go to the top of the page
+Quote Post
AmyLokmart
post 3.12.2021, 17:39:32
Post #3





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 28.11.2021

Ostrzeżenie: (0%)
-----


Nie chodzi mi o gotowce, które wykorzystują API np: google, yandex i inne oraz skomplikowane biblioteki czy GEO.

Jak pisałam na początku chciałabym wykrywać język prostym skryptem.
"Pyton_000" podał mi gotowca i nie opisał jak z niego korzystać. Trudno było mi go zainstalować (bo jestem dziewczyną i dopiero w tych tematach początkuje)
Ale udało mi się jednak zainstalować "Language/detector" i okazało się, że jest to skomplikowany pakiet z użyciem bibliotek z autoload.php, do którego trzeba było podpiąć index i określić wykonanie.
Kiedy to zrobiłam to okazało się, że w zmiennej "$text" prawidłowo wykrywa język angielski a polski w wynikach miał: es, pt, sw, hr czasami pl sad.gif

Panie "Pyton_000" czy znasz prostszy sposób na wykrywanie języka? Chciałabym stworzyć skrypt, który nie będzie korzystał z bibliotek i będzie to jeden prosty moduł (skrypt może na początek wykrywać język angielski i polski, potem się będę zastanawiać jak dodać kilka języków).
A może ktoś ma inne rozwiązanie? Albo też chciałby stworzyć to co ja? smile.gif

Czekam na kolejne propozycje chłopaki smile.gif Pozdrawiam
Go to the top of the page
+Quote Post
viking
post 3.12.2021, 17:45:12
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Jeśli chcesz ręcznie wykryć język klienta to musisz przeparsować ten nagłówek https://developer.mozilla.org/en-US/docs/We...Accept-Language. Ale rozumiem że chodzi jednak o wykrywanie języka tekstu a nie języka domyślnego. Jaki problem dać composer require pakiet, potem dołączyć vendor/autoload.php? Musisz się tego nauczyć jeśli chcesz programować bo to podstawa.

Ten post edytował viking 3.12.2021, 17:53:38


--------------------
Go to the top of the page
+Quote Post
AmyLokmart
post 3.12.2021, 18:40:26
Post #5





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 28.11.2021

Ostrzeżenie: (0%)
-----


Jak już napisałam wyżej uporałam się z pakietem i już wiem jak używać "composer require nazwa_pakietu".
Wykrywanie języka w przeglądarce już umiem, np w JS:

  1. var AmyLangBrows = "Język przeglądarki: " + navigator.language;
  2. document.write(AmyLangBrows);


W PHP napisałam tak:

  1. $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
  2. $AmyLang = ['pl'];
  3. $lang = in_array($lang, $AmyLang) ? $lang : 'en'; // jeśli inny pokaż "en"
  4. print $lang;


Masz rację "viking" chcę rozpoznawać tekst string'u w kategorii "jaki to język" prostym skryptem.
Rozpoznawanie języka przeglądarki mi nic nie da (to ma sens jeśli chciałabym pokazywać użytkownikom treści w odpowiednim języku dla ich lokalizacji)

W dalszym ciągu chciałabym dowiedzieć się czy można stworzyć prosty skrypt do detekcji języka na podstawie podanego tekstu.

Jeśli nie to nie będę Was męczyć chłopaki.
Gdzieś na boku jak będzie mi się nudzić i przypomnę sobie to spróbuje sama coś wykombinować smile.gif
Go to the top of the page
+Quote Post
gino
post 3.12.2021, 19:46:31
Post #6





Grupa: Zarejestrowani
Postów: 319
Pomógł: 52
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


Chcesz próbować sama to ok, ale musisz umieć zrozumieć podstawy jak to zrobić. Mając wiedzę możesz zacząć tworzyć algorytm jak to oprogramować. Poszukaj informacji o identyfikacji języków, czytaj jak te zasady ewaluowały i jak to przenieś na dany język programowania.Zacznij od tego artykułu. W nim znajdziesz odwołania do oryginalnych opracowań tzw. N-gramów.
Możesz też zrobić to w najbardziej prosty sposób, czyli utworzyć tablice/zapisać w bazie danych słowa kluczowe dla każdego języka (np. en=['the', 'be', 'to', 'of', 'and', 'a', 'in', 'that', 'have'] itd) i na ich podstawie szukaj ich w badanym tekście. Ale tam metoda jest dla skończonej liczby języków.
Tak więc powodzenia.

edit
poprawa literówek smile.gif

Ten post edytował gino 3.12.2021, 19:48:58
Go to the top of the page
+Quote Post
AmyLokmart
post 3.12.2021, 22:10:14
Post #7





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 28.11.2021

Ostrzeżenie: (0%)
-----


Dziękuję Tobie Ślicznie "Gino" za Twoją wiadomość i naprowadzenie mnie na to od czego zacząć smile.gif

"Pyton_000" podsunął rozwiązanie wykrywania języka ze string'u pod adresem: https://github.com/landrok/language-detector, niestety nie jest to dobre rozwiązanie, bo zawiera wiele błędów (niepoprawnie interpretuje teksty, dla języka polskiego kiedy pisałam różne frazy pokazywał, że jest to język: hr (chorwacki), sw (suahili), pt (portugalski), es (hiszpański) i czasami pl (polski), poprawnie interpretował teksty w języku angielskim "en")

Znalazłam lepsze rozwiązanie: https://github.com/pear/Text_LanguageDetect (lepiej pobrać PearText_LanguageDetect niż Landrok/Language-Detector, ponieważ jest, o wiele mniej błędów - sprawdzałam wiele fraz i Pear podało błędnie tylko jedno wykrycie dla języka: Somali (so) we frazie: "Madonna - La Isla Bonita" - przyznam się, że nie wiem dlaczego smile.gif). Po za tym Pear jest mniej rozbudowane i nie korzysta z dodatkowych bibliotek, typów czy rozwiązań jak Landrok/Language-Detector+Webmozart+Symfony do działania.

Zainstalowałam sobie Pear/Text_LanguageDetect i na razie z niego będę korzystać.

Jak coś ciekawego zacznę tworzyć dla prostego skryptu wykrywającego w string'u jaki to język to na pewno napiszę tutaj.
I oczywiście czekam na kolejne podpowiedzi smile.gif
Go to the top of the page
+Quote Post
Pyton_000
post 4.12.2021, 20:34:56
Post #8





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Brawo że udało Ci się zainstalować paczkę.
Detekcja jezyka jest tak dobra jak dobre są słowniki z których czerpie skrypt.

Pokaż tekst dla którego próbowałaś zrobić detekcją i wyszedł ci taki "zonk".
Go to the top of the page
+Quote Post
AmyLokmart
post 4.12.2021, 22:24:06
Post #9





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 28.11.2021

Ostrzeżenie: (0%)
-----


Dla detektora języka: https://github.com/landrok/language-detector (Landrok/Language-Detector)
Dla (Landrok/Language-Detector) Trudna była fraza: "To jest zdanie po polsku. Ciekawe czy detektor sobie z tym poradzi.", którą uznał za język hiszpański: "es"

Dla detektora języka: https://github.com/pear/Text_LanguageDetect (Pear/Text_LanguageDetect)
Dla (Pear/Text_LanguageDetect) fraza: "To jest zdanie po polsku. Ciekawe czy detektor sobie z tym poradzi.", nie była problemem i od razu wskazał język polski "pl"

To tylko jeden z wielu przykładów, dlatego wybrałam (Pear/Text_LanguageDetect), a ten drugi pakiet skasowałam.
Go to the top of the page
+Quote Post
Pyton_000
post 4.12.2021, 23:27:57
Post #10





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Zerknąłem na obie libki. Obie bazują na tym samych schemacie. Wzięto N wyrazów i wygenerowano z nich set danych 1, 2 i 3 literowych na podstawie teksów i przypisano im ilość powtórzeń w zestawie danych.
Potem sprawdzany tekst również dzielony na 3-znakowe ciągi i dopasowywane. Potem sprawdzane jest ile wspólnych dopasowań jest w danym słowniku z tekstem.

Wynika z tego że wszystko zależy jak duży i jak dobre źródło znajdziesz do nakarmienia skryptów. Tutaj wypadł lepiej drugi skrypt ale oba bazują na tym samym koncepcie.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 02:28