Re: [trasno] Stemmer

2008-08-21 Conversa Felipe Gil Castiñeira
Susana Sotelo Docio wrote:
> O Tuesday 12 de August de 2008, mvillarino escribiu:
> NPI. Pero eu para lematizar probaría a usar ben un tagger (freeling é
> libre e está entrenado para galego) ben dicionarios construídos con FSA
> (autómatas finitos), pero que eu saiba o que hai para galego a día de hoxe
> non é libre.
>
> Por exemplo:
>
> http://www.eti.pg.gda.pl/katedry/kiw/pracownicy/Jan.Daciuk/personal/fsa.html
>
> Este software é o que se emprega en LanguageTool
> (http://www.languagetool.org) para a lematización. Aínda non hai soporte
> para galego (e polo tanto tampouco dicionario), pero agora mesmo estou
> traballando neste tema. Conto con ter un dicionario máis ou menos
> decente en setembro/outubro.
>
>   

Ola Susana,

Non estou moi familiarizado co asunto deste fío, pero para a creación
dese dicionario creo que che pode ser útil unha ferramenta que
xustamente acaban de sacar os creadores do "Translate Toolkit" e de
"Pootle":  Spelt [1] [2], que serve para axudar a identificar e
clasificar raíces de palabras.

Saúdos.
Felipe.

[1] http://sourceforge.net/forum/forum.php?forum_id=858132
[2] http://translate.sourceforge.net/wiki/spelt/index


Re: [trasno] Stemmer

2008-08-13 Conversa mvillarino
> 2008/8/12 mvillarino :
Invirto a orden do correo

> Nacho, isto está incluido no que viria sendo o meu programa de apoio á
> localización perfecto. Pero teño que recoñecer que se non falei disto
> é porque o vexo moi complicado. Tamén debo dicir que con todo isto de
> lematizar, etc... pérdome :)
Non te jode!, e no meu tamén, por iso falo diso.

BTW: como se dí "lematizar" en inglés? Precísoo para o meterlle un RFE
a Shafforo (desenvolvente do Lokalise)

>>> Hai un tempo na Facultade de Filoloxía da USC propuxérase un proxecto de
>>> investigación que viña a facer algo similar, extraendo termos e as súas
>>> equivalencias e tratando de integrar este recurso nas ferramentas libres
>>> de axuda á localización, pero non fora aprobado.
>>
>> Vaia mágoa.
>
> E íano programar eles? Dan alí clases de programación para que despois
> nos veñan quitar o traballo ós informáticos?

Pois parece que de Perl si. E non o vexo tan raro, cando eu estudaba
oferecíanse clase de programación no cacti.


>>> Xa. Se por exemplo tes un dicionario bilingüe que diga
>>>
>>> file  ficheiro

Algo máis complicado será mellor exemplo:

ADVERTENCIA: Isto é imaxinario, non apliquei un programa real ao asunto.

Texto orixe: "By checking this box you will enable several
Pandora's boxes opening; do it under your own liability"
Texto termo: "Se sinala esta opción, permitirá a abertura da caixa de
Pandora. Fágao baixo a súa propria responsabilidade"

Glosario (máis ou menos):
   Check: sinalar
   Check: comprobar
   Check: verificar
   Enable: activar
   Enable: Verificar
   Box: Casiña
   Box: Opción [nota: non inclúo caixa como tradución de box
intencionalmente, amais de que non me parece correcto dado que é o
vocábulo común]
   Liability: pasivos [nota: conceito contábel inverso a activos]
   Pandora's box: Caixa dos tronos [nota: vale, é que precisaba dunha expresión]

Lematizamos:
Texto orixe: "By check this box you enable several Pandora box ope
do it under your own liability" ; nótese a supresión da etiquetaxe.
Texto termo: "Se sinalar esta opción, permitir o abertura de o
caixa de Pandora. Facer o baixo o seu proprio responsabilidade";
ibidem.

Claro, agora non aparece "Pandora's box" no texto orixe, pero se
lematizamos o glosario tamén:

Glosario lematixado:
   Check: sinalar
   Check: comprobar
   Check: verificar
   Enable: activar
   Enable: verificar
   Box: Casa [nota: haber que tocar o carallo]
   Box: Opción
   Liability: pasivo
   Pandora box: Caixa de o trono

Entón, se facemos unha pasada de expresións regulares (non ansiosas
(N. do. T. : "eager")), esta casará/coincidirá/poña aquí a súa
tradución de "match":
   No texto orixe: "By check this box you will enable several Pandora
box ope do it under your own liability"
   procurando por: "check", "enable", "box", "liability" e "pandora box",
   debería achar máis ou menos (en maiúsculas):
"by CHECK(1) this BOX(2) you ENABLE(3) several
PANDORA_BOX(4) ope do it under your own LIABILITY(5)"
   e para cada achádega, irá a facer as procuras
correspondentes, mediante regex no texto termo lematizado:
 por non ler arriba "Se sinalar esta opción,
permitir o abertura de o caixa de Pandora. Facer o baixo o seu proprio
responsabilidade"
 CHECK (1): sinalar (non saca erro)
 BOX (2): opción (non saca erro)
 ENABLE(3): erro (saca erro, por non conter
nen ACTIVAR nen VERIFICAR)
 PANDORA BOX (4): erro (saca erro, por non
conter "CAIXA DE O TRONO")
 LIABILITY(5): erro (saca erro, por non conter "PASIVO")

O proceso inverso: o mesmo, permutando os textos termo e orixe, e no
glosario, as componentes de cada entrada do glosario.

>>> precisarías usar freeling sobre os textos galego e inglés para verificar
>>> a equivalencia.
>>>
>>> $ analyzer -f /usr/share/FreeLing/config/en.cfg
>>> Open open NN
>>> file file NN
>>>
>>> $ analyzer -f /usr/share/FreeLing/config/gl.cfg
>>> Abrir abrir VMN01S0
>>> arquivo arquivo NCMS000
>>>
>>> A primeira columna é a forma, a segunda o lema e a terceira a etiqueta

Entón teño que concatenar a segunda coluna da saída do analyzer, nada
que non se poda facer con awk, ou outros comandos estándar, para ter
os textos lematizados.

>>> O problema vén cando non hai equivalencia palabra a palabra, senón que
>>> hai diferentes estruturas implicadas:
>>>
>>> subst + subst [en] = subst + prep + subst [gl]
>>>
>>> Network Folders = Cartafoles de rede
>>>
>>> Aquí terías que traballar con termos, por exemplo usando un extractor
>>> como
>>>
>>> http://gramatica.usc.es/~gamallo/gale-extra/index2.0.htm

Haberá que votarlle un ollo, pero deixareino por agora.


Re: [trasno] Stemmer

2008-08-13 Conversa Leandro Regueiro
2008/8/12 mvillarino :
> O Martes 12 Agosto 2008 19:15, Susana Sotelo Docio escribiu:
>> Unha broma: digo que hai que ter moito vicio para dicir que perl é
>> ilexíbel :) pero aos que somos sureños e de mar de cando en vez
>> escápasenos un "visio". Sobra dicir cal é a miña linguaxe de cabeceira
>> ;)
>
> Éche que eu son máis de kivio >:-)
>
> Perl é para cobardes: proba intercal e verás...

Non eran estes de perl os que tiñan un concurso para intentar facer o
programa máis ilexible da historia, pero que funcionara
correctamente??

>> > Nin papas. Eu o único que ando a procurar é por un sistema que permita
>> > facer a comparación bi-direccional entre as expresións e palabras
>> > contidas en dous textos face a un ficheiro de "dicionario bilingüe", e
>> > que avise cando non haxa aparición de "tradución legal"  no texto
>> > termo para unha das palabras ou expresións que estexan no texto orixe
>> > e no dicionario.
>>
>> Xa. Se por exemplo tes un dicionario bilingüe que diga
>>
>> file  ficheiro
>>
>> e os textos A e B:
>>
>> Open file
>> 
>> Abrir arquivo
>>
>> precisarías usar freeling sobre os textos galego e inglés para verificar
>> a equivalencia.
>>
>> $ analyzer -f /usr/share/FreeLing/config/en.cfg
>> Open open NN
>> file file NN
>>
>> $ analyzer -f /usr/share/FreeLing/config/gl.cfg
>> Abrir abrir VMN01S0
>> arquivo arquivo NCMS000
>>
>> A primeira columna é a forma, a segunda o lema e a terceira a etiqueta
>> (NCMS é, por exemplo, substantivo común masculino singular). Obviamente,
>> ás veces freeling erra na asignación da etiqueta (por exemplo no caso de
>> "open").
>>
>> file = ficheiro != arquivo, co que daría un aviso.
> Exactamente.
>
>>
>> O problema vén cando non hai equivalencia palabra a palabra, senón que
>> hai diferentes estruturas implicadas:
>>
>> subst + subst [en] = subst + prep + subst [gl]
>>
>> Network Folders = Cartafoles de rede
>>
>> Aquí terías que traballar con termos, por exemplo usando un extractor
>> como
>>
>> http://gramatica.usc.es/~gamallo/gale-extra/index2.0.htm
>>
>> ou tratando de detectalos dende o propio programa en base aos contidos
>> do dicionario bilingüe.
>
> Vaia, isto é máis complicado do que parece. Teño que pensalo algo mellor.

Nacho, isto está incluido no que viria sendo o meu programa de apoio á
localización perfecto. Pero teño que recoñecer que se non falei disto
é porque o vexo moi complicado. Tamén debo dicir que con todo isto de
lematizar, etc... pérdome :)

>> Hai un tempo na Facultade de Filoloxía da USC propuxérase un proxecto de
>> investigación que viña a facer algo similar, extraendo termos e as súas
>> equivalencias e tratando de integrar este recurso nas ferramentas libres
>> de axuda á localización, pero non fora aprobado.
>
> Vaia mágoa.

E íano programar eles? Dan alí clases de programación para que despois
nos veñan quitar o traballo ós informáticos?

Ata logo,
Leandro Regueiro


Re: [trasno] Stemmer

2008-08-12 Conversa mvillarino
O Martes 12 Agosto 2008 19:15, Susana Sotelo Docio escribiu:
> Unha broma: digo que hai que ter moito vicio para dicir que perl é
> ilexíbel :) pero aos que somos sureños e de mar de cando en vez
> escápasenos un "visio". Sobra dicir cal é a miña linguaxe de cabeceira
> ;)

Éche que eu son máis de kivio >:-)

Perl é para cobardes: proba intercal e verás...

>
> > Nin papas. Eu o único que ando a procurar é por un sistema que permita
> > facer a comparación bi-direccional entre as expresións e palabras
> > contidas en dous textos face a un ficheiro de "dicionario bilingüe", e
> > que avise cando non haxa aparición de "tradución legal"  no texto
> > termo para unha das palabras ou expresións que estexan no texto orixe
> > e no dicionario.
>
> Xa. Se por exemplo tes un dicionario bilingüe que diga
>
> file  ficheiro
>
> e os textos A e B:
>
> Open file
> 
> Abrir arquivo
>
> precisarías usar freeling sobre os textos galego e inglés para verificar
> a equivalencia.
>
> $ analyzer -f /usr/share/FreeLing/config/en.cfg
> Open open NN
> file file NN
>
> $ analyzer -f /usr/share/FreeLing/config/gl.cfg
> Abrir abrir VMN01S0
> arquivo arquivo NCMS000
>
> A primeira columna é a forma, a segunda o lema e a terceira a etiqueta
> (NCMS é, por exemplo, substantivo común masculino singular). Obviamente,
> ás veces freeling erra na asignación da etiqueta (por exemplo no caso de
> "open").
>
> file = ficheiro != arquivo, co que daría un aviso.
Exactamente.

>
> O problema vén cando non hai equivalencia palabra a palabra, senón que
> hai diferentes estruturas implicadas:
>
> subst + subst [en] = subst + prep + subst [gl]
>
> Network Folders = Cartafoles de rede
>
> Aquí terías que traballar con termos, por exemplo usando un extractor
> como
>
> http://gramatica.usc.es/~gamallo/gale-extra/index2.0.htm
>
> ou tratando de detectalos dende o propio programa en base aos contidos
> do dicionario bilingüe.

Vaia, isto é máis complicado do que parece. Teño que pensalo algo mellor.

> Hai un tempo na Facultade de Filoloxía da USC propuxérase un proxecto de
> investigación que viña a facer algo similar, extraendo termos e as súas
> equivalencias e tratando de integrar este recurso nas ferramentas libres
> de axuda á localización, pero non fora aprobado.

Vaia mágoa.

-- 
Best regards,
MV


Re: [trasno] Stemmer

2008-08-12 Conversa Susana Sotelo Docio
O Tuesday 12 de August de 2008, mvillarino escribiu:
> > Baahh, ilexíbel. Moito visio é o que hai :)
> 
> Mande??

Unha broma: digo que hai que ter moito vicio para dicir que perl é
ilexíbel :) pero aos que somos sureños e de mar de cando en vez
escápasenos un "visio". Sobra dicir cal é a miña linguaxe de cabeceira
;)

> Nin papas. Eu o único que ando a procurar é por un sistema que permita
> facer a comparación bi-direccional entre as expresións e palabras
> contidas en dous textos face a un ficheiro de "dicionario bilingüe", e
> que avise cando non haxa aparición de "tradución legal"  no texto
> termo para unha das palabras ou expresións que estexan no texto orixe
> e no dicionario.

Xa. Se por exemplo tes un dicionario bilingüe que diga

fileficheiro

e os textos A e B:

Open file

Abrir arquivo

precisarías usar freeling sobre os textos galego e inglés para verificar
a equivalencia.

$ analyzer -f /usr/share/FreeLing/config/en.cfg
Open open NN
file file NN

$ analyzer -f /usr/share/FreeLing/config/gl.cfg
Abrir abrir VMN01S0
arquivo arquivo NCMS000

A primeira columna é a forma, a segunda o lema e a terceira a etiqueta
(NCMS é, por exemplo, substantivo común masculino singular). Obviamente,
ás veces freeling erra na asignación da etiqueta (por exemplo no caso de
"open").

file = ficheiro != arquivo, co que daría un aviso.

O problema vén cando non hai equivalencia palabra a palabra, senón que
hai diferentes estruturas implicadas:

subst + subst [en] = subst + prep + subst [gl]

Network Folders = Cartafoles de rede

Aquí terías que traballar con termos, por exemplo usando un extractor
como 

http://gramatica.usc.es/~gamallo/gale-extra/index2.0.htm

ou tratando de detectalos dende o propio programa en base aos contidos
do dicionario bilingüe.

Hai un tempo na Facultade de Filoloxía da USC propuxérase un proxecto de
investigación que viña a facer algo similar, extraendo termos e as súas
equivalencias e tratando de integrar este recurso nas ferramentas libres
de axuda á localización, pero non fora aprobado.

-- 
Susana Sotelo Docio http://gramatica.usc.es/~sdocio
Linux User #96506  gpg-id: 0E9BEDA4

"Only after the last tree has been cut, only after the last river has
been poisoned, only after the last fish has been fished, only then you will
discover that money can not be eaten." -- Evelyn Waugh


Re: [trasno] Stemmer

2008-08-12 Conversa mvillarino
2008/8/12 Susana Sotelo Docio :
>> 1.- É isto lematizar?
>
> Si. Digamos que un lematizador, dado o texto
>
> "a nena come a mazá na rúa"
>
> devolvería
>
> "o neno comer o mazá en o rúa"
>
> Vén sendo o procedemento de normalización máis simple.
>

[...]

> Este software é o que se emprega en LanguageTool
> (http://www.languagetool.org) para a lematización. Aínda non hai soporte
> para galego (e polo tanto tampouco dicionario), pero agora mesmo estou
> traballando neste tema. Conto con ter un dicionario máis ou menos
> decente en setembro/outubro.

mmm, creo que me acabas de alegrar o día. O language tool pode
utilizarse, e está a utilizarse, dentro de _algúns_ equipos de
tradución de KDE para pasar unha corrección gramatical dos textos
termo, nomeadamente serbios, franceses e xaponeses

Para iso fai falla instalalo como programa independente (stand-alone
application), e si, tira de Java.

>> 5.- PERL é ilexíbel, hai algún en Python?
>
> Baahh, ilexíbel. Moito visio é o que hai :)

Mande??

> Coido que para o que buscas o mellor sería freeling, que é C++ e
> tamén utilizábel como biblioteca. E rápido. Mesmo se podería ver a
> posibilidade de entrenalo usando como corpus cadeas de ficheiros PO,
> aínda que levaría o seu tempo.

Nin papas. Eu o único que ando a procurar é por un sistema que permita
facer a comparación bi-direccional entre as expresións e palabras
contidas en dous textos face a un ficheiro de "dicionario bilingüe", e
que avise cando non haxa aparición de "tradución legal"  no texto
termo para unha das palabras ou expresións que estexan no texto orixe
e no dicionario.
A ver se acho algo acerca de freeling.


Re: [trasno] Stemmer

2008-08-12 Conversa Susana Sotelo Docio
O Tuesday 12 de August de 2008, mvillarino escribiu:
 
> Como nos ficheiros de glosario normalmente non se meten formas
> conxugadas/declinadas/o_que_sexa, senón a forma "base, como o
> infinitivo no caso dos verbos, e o singular masculino/neutro no dos
> substantivos e adxectivos, resulta que antes de facer 1) ou 2) debo
> reducir a palabra --por simplificar-- que aparece no texto inicial á
> forma base, e analogamente co texto termo, e despois aplicar 1) ou 2).
> 
> Despois do rollo, as perguntas:
> 
> 1.- É isto lematizar?

Si. Digamos que un lematizador, dado o texto

"a nena come a mazá na rúa"

devolvería

"o neno comer o mazá en o rúa"

Vén sendo o procedemento de normalización máis simple.

> 2.- É isto o traballo dun stemmer?

Humm, non. Un stemmer o que fai é quedarse coa raíz (stem) da palabra
de acordo con determinados criterios. Por exemplo, un lematizador
devolvería "libraría" como lema de "librarías", pero un stemmer podería
devolver "libr".

> 4.- Que tal é o stemmer ese de PERL
> (http://search.cpan.org/~xern/Lingua-PT-Stemmer-0.01/lib/Lingua/GL/Stemmer.pm)
> ?

NPI. Pero eu para lematizar probaría a usar ben un tagger (freeling é
libre e está entrenado para galego) ben dicionarios construídos con FSA
(autómatas finitos), pero que eu saiba o que hai para galego a día de hoxe
non é libre.

Por exemplo:

http://www.eti.pg.gda.pl/katedry/kiw/pracownicy/Jan.Daciuk/personal/fsa.html

Este software é o que se emprega en LanguageTool
(http://www.languagetool.org) para a lematización. Aínda non hai soporte
para galego (e polo tanto tampouco dicionario), pero agora mesmo estou
traballando neste tema. Conto con ter un dicionario máis ou menos
decente en setembro/outubro.

Isto non é Perl, nin tampouco Python. É C++, aínda que _creo_ que o
estaban a portar a Java.

> 5.- PERL é ilexíbel, hai algún en Python?

Baahh, ilexíbel. Moito visio é o que hai :)

> 6.- Python non é rápido, hay algún utilizábel como biblioteca C++?

Vid supra :) Pero non é un stemmer, só son táboas mi rápidas e
presentan o problema da ambigüidade.

paraparar
paraparir
parapara

Coido que para o que buscas o mellor sería freeling, que é C++ e
tamén utilizábel como biblioteca. E rápido. Mesmo se podería ver a
posibilidade de entrenalo usando como corpus cadeas de ficheiros PO,
aínda que levaría o seu tempo.

-- 
Susana Sotelo Docio http://gramatica.usc.es/~sdocio
Linux User #96506  gpg-id: 0E9BEDA4

"Only after the last tree has been cut, only after the last river has
been poisoned, only after the last fish has been fished, only then you will
discover that money can not be eaten." -- Evelyn Waugh