PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Detecção de idioma com dados no PostgreSQL


Você pode usar PL/Perl (CREATE FUNCTION langof(text) LANGUAGE plperlu AS ... ) com Lingua::Identify Módulo CPAN.

script Perl:
#!/usr/bin/perl
use Lingua::Identify qw(langof);
undef $/;
my $textstring = <>;  ## warning - slurps whole file to memory
my $a = langof( $textstring );    # gives the most probable language
print "$a\n";

E a função:
create or replace function langof( text ) returns varchar(2)
immutable returns null on null input
language plperlu as $perlcode$
    use Lingua::Identify qw(langof);
    return langof( shift );
$perlcode$;

Funciona para mim:
[email protected]=# select langof('Pójdź, kiń-że tę chmurność w głąb flaszy');
 langof
--------
 pl
(1 row)

Time: 1.801 ms

PL/Perl no Windows


A biblioteca de idiomas PL/Perl (plperl.dll) vem pré-instalada no instalador mais recente do Windows do postgres.

Mas para usar PL/Perl, você precisa do próprio interpretador Perl. Especificamente, Perl 5.14 (no momento da redação deste artigo). O instalador mais comum é o ActiveState, mas não é gratuito. O gratuito vem de StrawberryPerl . Certifique-se de ter PERL514.DLL no lugar.

Após instalar o Perl, faça login no seu banco de dados postgres e tente executar
CREATE LANGUAGE plperlu;

Biblioteca de identificação de idiomas


Se a qualidade é sua preocupação, você tem algumas opções:Você pode melhorar o Lingua::Identify (é de código aberto) ou você pode tentar outra biblioteca. Encontrei este , que é comercial, mas parece promissor.