June 21st, 2008

Detectar lenguajes usando Google AJAX Language API

Usando el API de Google es muy simple detectar el lenguaje de un texto. Para hacerlo más simple se puede crear un componente CakePHP y reutilizarlo.

El código sería el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
< ?php
class LanguageComponent extends Object {
 
	function initialize() {
 
	}
 
	function startup(&$controller) {
		$this->controller = $controller;
	}
 
	function detect($text){
		App::import("Core", "HttpSocket");
		$conn = new HttpSocket();
 
		$url = "http://ajax.googleapis.com/ajax/services/language/detect?v=1.0&q=";
		$url .= urlencode($text);
 
		$result = $conn->get($url);
 
		if (!$result){
			return false;
		}
 
		$result = json_decode($result, true);
 
		if (!$result || $result["responseStatus"]!=200 || 
			!isset($result["responseData"]))
		{
			return false;
		}
 
		return $result["responseData"];
	}
}

En caso de exito retorna una estructura del tipo (en caso de fallo retorna false):

Array
(
    [language] => en
    [isReliable] => 1
    [confidence] => 0.9945003
)

Requiere CakePHP 1.2 (testeado con la rev 7125), y json_decode (PHP 5 >= 5.2.0, PECL json:1.2.0-1.2.1 [1])

Se puede ver una demo del componente en http://projects.pviojo.net/lang/main/detect

[1] http://cl2.php.net/json-decode

Tags: , , ,

3 Comments Add your own

  • Fabian Ramirez | June 26th, 2008 at 12:35


    Excelente concepto estimado, felicitaciones!

    Mi consulta es:
    ¿Realmente es necesario utilizar la API de Google para realizar esto?

    Yo hize algo parecido para suggests de Keywords, y se me viene automaticamente a la cabeza el concepto que hiciste, y para hacerme una api propia lo resolveria de la siguiente manera:

    - Cada lenguaje tiene sus Preposiciones + Articulos y hacer una lista con cada una en ingles, español y francés es realmente facil.

    - Cada lenguaje tiene verbos basicos, que podrían darle un puntaje a la frase.

    - El lenguaje que cumpla con mas puntaje, es el correcto :)

    Saludos

  • pviojo | June 29th, 2008 at 12:01


    Si, se podría, pero implicaría construir esas listas que no siempre es tan simple y confiable. Por otra parte, Google, por el volumen de información que maneja, es muy confiable en este sentido.

  • Martin Bavio | July 24th, 2008 at 1:55


    Interesantisima, e inteligentisima aplicacion. Felicitaciones. Da gusto ver cosas utiles en tan pocas lineas de codigo.

  • Leave a Reply

    XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

    (required)

    (required)

About

Mi nombre es Pablo Viojo y tengo 26 años. Nací en el Uruguay el 7 de agosto de 1981. Actualmente vivo en Santiago, Chile

Aparte de esto me interesa todo lo que tenga que ver con Internet y las nuevas tecnologías. Más info aquí, mi hCard, en formato FOAF

View Pablo Viojo's profile on LinkedIn



Recent Comments

Pages

Feeds

Posts by tags

Posts by month