Soy más que sólo PHP
Update: Gracias al primer feedback de Roberto Alsina (un verdadero Guru del Python), ahora siempre retorna una lista de tuplas con (idioma, porcentaje).
Este un solo un post rápido para demostrar que soy mas que solo PHP
El proyecto se relativamente simple, pero por algo se empieza. Básicamente implemento la teoría de este paper para detectar los idiomas con los N-Gramas que lo he usado bastante de forma privada para mis experimentos de Clustering (clasificación automática de textos) y para mi sitio Languess.
PY-Languess (así se llama el proyecto) está hosteado en Github, a continuación como se utiliza:
#!/usr/bin/python
#encoding: iso-8859-1
from languess import Languess
from glob import glob
def main():
# Creamos el objeto
lg = Languess()
# Cargamos los modelos de los lenguajes
# que fue entrenado por train.py
klm = {}
for lm in glob('knowledge/*.lm'):
klm[ lm[10:-3] ] = [n.strip() for n in open(lm).readlines()]
lg.load_knowledge( klm )
# Ahora a obtener los idiomas
print lg.getLang("This is just a bloody text")
print lg.getLang("Pues esto es un texto en español")
print lg.getLang("Mba'eteko chera'a mba'eichapa reiko?")
# Se me acabaron los idiomas para probar
if __name__ == "__main__":
main()
Se preguntaran porque lo he re-implementado, pues la respuesta es simple, quería hacer algo con el AppEngine, y aproveche el sábado para pelearme un poco con el Python. Ahora esta el Webservice (o intento de WS) en linea, y funciona de una manera muy simple (me encantan las cosas simples). La URL tiene la siguiente forma http://textlang.appspot.com/service?text=TEXTO_A_OBTENER_EL_IDIOMA y retorna un objeto serializado con JSON.
La URL http://textlang.appspot.com/service?text=This is just a bloody text retornaría:
{"lang":[["english",100]],"text":"This is just a bloody text"}
En caso de existir dos candidatas (existe cuando los textos son muy cortos) retornaría un vector en vez de un string en la propiedad “lang”.
Saludos y Happy hacking.








excelente Cesar