Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Google Translate - szybkość działania, tłumaczenie pojedyńczych słów
pojas
post
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 31.03.2006

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


Witam. Staram się napisać skrypt, który będzie tłumaczyć pojedyncze słówka z danego zdania. Robiąc to w pętli będę zamulać swój i serwer Google. Trwa to zbyt długo. Kombinowałem wszystkie słówka złączyć w jeden tekst, łapie wtedy nawet kontekst, ale mam problemy z ich podzieleniem. Zwyczajne przedzielenie słówek przecinkiem się nie sprawdza. Inne znaki też różnie działają. Np. "house, named, Bleble,"->"domu, nazwanego Bleble,", a "house | named | Bleble | kick | " -> "dom | nazwie | Bleble | kick |". Możecie mnie jakoś nakierować na rozwiązanie?

  1. //http://code.google.com/intl/pl/apis/language/translate/v1/using_rest_translate.html#json_snippets_php
  2.  
  3. $start = microtime(1);
  4. $words = array(
  5. 'hello', 'world', 'i', 'need', 'to', 'figure', 'out', 'how', 'to',
  6. 'translate', 'faster', 'using', 'google', 'translate');
  7.  
  8. $ch = curl_init();
  9. for($i = 0, $k = 0; $k < 14; $i++, $k++)
  10. {
  11. if($i == count($words)) $i = 0;
  12. $url = "https://ajax.googleapis.com/ajax/services/language/translate".
  13. "?v=1.0&q=$words[$i]&langpair=en%7Cpl";
  14.  
  15. curl_setopt($ch, CURLOPT_URL, $url);
  16. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  17. $body = curl_exec($ch);
  18. $json = json_decode($body);
  19.  
  20. echo($words[$i].' - '.$json->responseData->translatedText)."<br>\n";
  21. }
  22. curl_close($ch);
  23. echo('czas: '.($x = (microtime(1) - $start)). ', na słowo '.($x/$k));


Powyżej pewnej liczby strasznie zamula. Do kilkunastu słówek na każde zabiera np. ~ 0.05s. Czasem nawet 10 dłużej na każdym słowie + w niektórych nie tłumaczy. Ograniczenie Google?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
pablo89pl
post
Post #2





Grupa: Zarejestrowani
Postów: 143
Pomógł: 19
Dołączył: 7.09.2009
Skąd: Rzeszów

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


a zrób sobie to na ajaxie, stronka sie laduje i js pobiera dane z api google...
http://api.jquery.com/jQuery.ajax/
Go to the top of the page
+Quote Post
kiler129
post
Post #3





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Kto tłumaczy słówka? Przecież to nie ma wtedy żadnego sensu!
Podaj mu całe zdanie, jeśli chcesz pojedyńcze słowa to wypisz je po enterach to ładnie ci zwróci.
Go to the top of the page
+Quote Post
pojas
post
Post #4





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 31.03.2006

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


Cytat
Kto tłumaczy słówka?
Ten kto chce się uczyć pojedynczych słówek.

Cytat
Podaj mu całe zdanie, jeśli chcesz pojedyńcze słowa to wypisz je po enterach to ładnie ci zwróci.
Nie bardzo sobie z tym radzę. Wydaje mi się, że translator w okienku na stronie działa trochę inaczej na stroni i przez API. Możliwe też, że źle konstruuje zapytanie.

  1. //http://code.google.com/intl/pl/apis/language/translate/v1/using_rest_translate.html#json_snippets_php
  2.  
  3. $ch = curl_init();
  4.  
  5. $words = "house\nnamed\nBleble\nkick\nhealthcare\n";
  6. $url = "https://ajax.googleapis.com/ajax/services/language/translate".
  7. "?v=1.0&q=".rawurlencode($words)."&langpair=en%7Cpl";
  8.  
  9. curl_setopt($ch, CURLOPT_URL, $url);
  10. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  11. $body = curl_exec($ch);
  12. $json = json_decode($body);
  13. var_dump($words);
  14. var_dump($json->responseData->translatedText);
  15. curl_close($ch);
  16. /* taki mam efekt, którego nie da się ogarnąć
  17. string(35) "house
  18. named
  19. Bleble
  20. kick
  21. healthcare
  22. "
  23. string(42) "dom opieki zdrowotnej o nazwie Bleble kick"
  24. */
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #5





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Cytat
Ten kto chce się uczyć pojedynczych słówek.

O słownikach nie słyszałeś?
Go to the top of the page
+Quote Post
pojas
post
Post #6





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 31.03.2006

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


Cytat
O słownikach nie słyszałeś?
No to mi pomogłeś.
Chcę to robić automatycznie, z danego źródła. Nie mogę znaleźć nic darmowego z API oprócz Google Translate.
Dla Google mam np. takie wyniki
1) 200 słówek, czas: 4.1468420028687 sekundy, tj. 0.020734210014343 sekundy/słówko
a następnie
2) 200 słówek, czas: 94.22466301918 sekundy, tj. 0.4711233150959 sekundy/słówko, gdzie większość słówek jest nieprzetłumaczona...

Ten post edytował pojas 30.11.2010, 10:23:47
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #7





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Google API mają limity, pisze o tym w konsoli:
Cytat
Default limit: 100,000 characters/day
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 23:31