Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 73 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# [Deflog](https://github.com/sbruno/deflog)


## Description

This program tries to eliminate several characteristics of the language flogger, like repetition of letters, alternation of uppercase and lowercase, abbreviations of sms, etc. for spanish. It is presented in a number of versions:


### Web Versions

* [PHP](./php/)
* [Javascript](./javascript/)
* [Python w/ cherrypy](./python-cherrypy/)

### Desktop Versions

* [PyQT4](./pyqt/)
* [CLI](./deflog.py)
* Others
- [Plugin for Messenger Plus! Live](./msnlive_plugin/)
- [Python module](./pylibdeflog/)


## Screenshots

### Online version:

![Online version](http://bananabruno.googlepages.com/deflog-javascript-screenshot-small.jpg)

### Messenger Plus! Live Plugin:

![Plugin for Messenger PLus! Live](http://bananabruno.googlepages.com/deflog-msnlive-screenshot-small.jpg)


## Download

The latest stable versions can be downloaded from http://code.google.com/p/deflog/downloads/list

The plugin for Messenger Plus! Live was available through their website : http://www.msgpluslive.net/scripts/view/404-DeFlog/


## Try it !

[PHP Version](http://www.santiagobruno.com.ar/php/desfotologuear.php)

[JS Version](http://www.santiagobruno.com.ar/javascript/desfotologuear.html)


## Description of the methods

Most of the method are made for spanish.

§ = The method is language independant.

All methods can be applied selectively

* **Desmultiplicar §**: Removes letters repetition (holaaaaa -> hola)

* **Deszezear**: Transforms \'z\' in \'s\' (Deactivated by default because it creates more harm than good)

* **Des-k-ar**: Transforms \'k\' in \'q\' (ki -> qui)

* **DesSMSar**: Replace SMS abbreviations (xq -> por que, dsp -> después)

* **Desestupidizar**: (toi -> estoy, i -> y, lemdo -> lindo)

* **Desalternar §**: Convert mixed lowercase uppercase words to lowercase and keeps uppercased word (Letra DE UnA CaNcIoN -> letra DE una cancion)

* **Desporteñar**: Removes finals \'s\'s in words ending in \'istes\' (lo vistes y me dijistes -> lo viste y me dijiste)

* **Deleet §**: Convert l33t 5p34k to standard speak (3s7o e5 un 73x70 f30 -> esto es un texto feo)

* **Fix missing vowels**: Add missing vowels (it doesn\'t work english words) (stamos -> estamos, spero -> espero, dcile -> decile, nterado -> enterado, vrdad -> verdad, comprart, comprarte)
69 changes: 69 additions & 0 deletions README_orig.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# [Deflog](https://github.com/sbruno/deflog)

## Descripción

Este programa intenta eliminar varias de las características del lenguaje flogger, como repetición de letras, alternación de mayúsculas y minúsculas, abreviaturas de sms, etc. Se presenta en un varias versiones:

### Versiones web

* PHP
* Javascript
* Python usando cherrypy

### Versiones desktop

* PyQT4
* CLI
* Otres
- Como un plugin para Messenger Plus! Live.
- Módulo python con las funciones utilizadas.

## Capturas de pantalla

### Captura de la versión online:

![Online version](http://bananabruno.googlepages.com/deflog-javascript-screenshot-small.jpg)

### Captura del plugin para Messenger Plus! Live:

![Plugin for Messenger PLus! Live](http://bananabruno.googlepages.com/deflog-msnlive-screenshot-small.jpg)

## Descargas

Las descargas recomendadas para las cuatro variantes del programa son las que aparecen en Featured Downloads.

El plugin puede ser descargado también desde el sitio de Messenger Plus! Live : http://www.msgpluslive.net/scripts/view/404-DeFlog/

Pero esa puede no ser la última versión. Para descargar la última versión, hacerlo desde http://code.google.com/p/deflog/downloads/list

O para ver alguna novedad experimental (?), el trunk del repositorio: http://deflog.googlecode.com/svn/trunk/msnlive_plugin/package/deflog.plsc

DISCLAIMER: El plugin solo puede aplicar todos los métodos correctamente a los mensajes salientes. Es una limitación del messenger como se dice en mi página o la página del plugin en el sitio de Messenger Plus! Live

## Probar Online

[Versión en PHP](http://www.santiagobruno.com.ar/php/desfotologuear.php)

[Versión en Javascript](http://www.santiagobruno.com.ar/javascript/desfotologuear.html)

## Descripción de los métodos aplicables al texto

* **Desmultiplicar**: Elimina repeticiones de letras (holaaaaa -> hola)

* **Deszezear**: Transforma zetas en eses (Desactivado por defecto ya que no es nada inteligente, y si el texto está relativamente bien escrito generará más errores de ortografía de los que solucionará)

* **Des-k-ar**: Similar a Deszezear pero para k -> c. Además transforma ki en qui.

* **DesSMSar**: Elimina abreviaturas SMS (xq -> por que, dsp -> después)

* **Desestupidizar**: (toi -> estoy, i -> y, lemdo -> lindo)

* **Desalternar**: Convierte palabras con mezcla de mayúsculas y minúsculas a minúscula (LeTrA dE uNa CaNcIoN -> letra de una cancion)

* **Desporteñar**: Elimina las eses finales en palabras que terminan en istes (lo vistes y me dijistes -> lo viste y me dijiste)

* **Deleet**: Convierte a letra los números que se usan como letra (3s7o e5 un 73x70 f30 -> esto es un texto feo)

* **Fix missing vowels**: Arega vocales omitidas el final de las palabras (va a fallar en palabras en inglés, porque se supone que en español muy pocas palabras finalizan por ejemplo en 't', entonces se asume que se le debe agregar una e) (stamos -> estamos, spero -> espero, dcile -> decile, nterado -> enterado, vrdad -> verdad, comprart, comprarte)

Todos los métodos pueden aplicarse selectivamente
120 changes: 120 additions & 0 deletions deflog.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author: Santiago Bruno
# License: GPL v3
# Web pages: http://www.santiagobruno.com.ar/programas.html
# http://code.google.com/p/deflog/

import re
import sys
import argparse
from pylibdeflog.libdeflog import *


"""
Categorization of the different treatments

Lang independant
"deleet" : l33t 5p34k -> leet speak (no transliteration 2morrow -> twomorrow)
"desalternar" : keep all lowercase or uppercase
"desmultiplicar" : olaaaaa -> ola (no language model to disambiguate gooood -> {good, god}

Spanish
"dessmsar" : using a dictionnary
"desestupidizar" : using a dictionnary
"deszezear" : replace s by z
"deskar" : replace k by c
"desporteniar" : remove s at the end of word ending in 'istes'
"fixmissingvowels" : add vowels where they are missing following spanish language rules
"""

ordinate_operations = ['deleet', 'desalternar', 'desmultiplicar', 'dessmsar', 'desestupidizar', 'deszezear', 'deskar', 'desporteniar', 'fixmissingvowels']

func_of_operation = {
"deleet": deleet,
"desalternar": desalternar,
"desmultiplicar": desmultiplicar,
"dessmsar": lambda x: desms(x, format='plain'),
"desestupidizar": lambda x: desestupidizar(x, format='plain'),
"deszezear": deszezear,
"deskar": desk,
"desporteniar": desporteniar,
"fixmissingvowels": fixmissingvowels
}

words_re = re.compile(u"([\\w\\d+]+)", re.UNICODE)

def translate(origText, opt=None):
if opt is None:
opt = dict()

text = dessimbolizar(origText)
words = words_re.split(text)

print(words)

for operation in ordinate_operations:
try:
if opt[operation] is True:
words = map(func_of_operation[operation], words)
except KeyError as e:
()

return ''.join(words)


def main():

def arguments():
parser = argparse.ArgumentParser(description='Translator of Spanish Fotolog and SMS language to Spanish. By default all the rules are applied. Choose the one yu want to apply using the arguments.')

parser.add_argument('--desmultiplicar', action='store_true', help='Removes letters repetition (holaaaaa -> hola)')
parser.add_argument('--deszezear', action='store_true', help='Transforms \'z\' in \'s\' (Deactivated by default because it creates more harm than good)')
parser.add_argument('--deskar', action='store_true', help='Transforms \'k\' in \'q\' (ki -> qui)')
parser.add_argument('--dessmsar', action='store_true', help='Replace SMS abbreviations (xq -> por que, dsp -> después)')
parser.add_argument('--desestupidizar', action='store_true', help='(toi -> estoy, i -> y, lemdo -> lindo)')
parser.add_argument('--desalternar', action='store_true', help='Convert mixed lowercase uppercase words to lowercase and keeps uppercased word (Letra DE UnA CaNcIoN -> letra DE una cancion)')
parser.add_argument('--desporteniar', action='store_true', help='Removes finals \'s\'s in words ending in \'istes\' (lo vistes y me dijistes -> lo viste y me dijiste)')
parser.add_argument('--deleet', action='store_true', help='Convert l33t 5p34k to standard speak (3s7o e5 un 73x70 f30 -> esto es un texto feo)')
parser.add_argument('--missing-vowels', action='store_true', help='Add missing vowels (it doesn\'t work english words) (stamos -> estamos, spero -> espero, dcile -> decile, nterado -> enterado, vrdad -> verdad, comprart, comprarte)')

parser.add_argument('--lang-independant', action='store_true', help='Shortcut for --deleet --desalternar --desmultiplicar')
return parser.parse_args()

args = arguments()

default_opt = {
"deleet": True,
"desalternar": True,
"desmultiplicar": True,
"dessmsar": True,
"desestupidizar": True,
"deszezear": args.deszezear,
"deskar": True,
"desporteniar": True,
"fixmissingvowels": True
}

lang_independant = {
"deleet": True,
"desalternar": True,
"desmultiplicar": True
}

opt = dict()

for key, value in vars(args).items():
if value and key == 'lang_independant':
opt.update(lang_independant)
elif value:
opt[key] = True

if not (opt.keys() - {'deszezear'}):
opt.update(default_opt)

for line in sys.stdin:
print(translate(line, opt))


if __name__ == '__main__':
main()
Loading