使用PostgreSQL中的数据进行语言检测

Ren*_*ani 8 java language-agnostic postgresql r language-detection

我在PostgreSQL中有一个表,其中列是文本.我需要一个库或工具,可以识别每个文本的语言以用于测试目的.

不需要PostgreSQL代码,因为我在安装语言时遇到问题,但是任何可以连接到数据库,检索文本并识别它的语言都是受欢迎的.

Lingua::Identify在Perl脚本中的答案中使用了建议,它有效,但结果不准确.

我想要识别的文本来自网络,大多数都是葡萄牙语,但是Lingua::Identify将法语,意大利语和西班牙语分类为类似的语言.

我需要更精确的东西.

我添加了javar标签,因为我在系统中使用的语言和使用它们的解决方案将很容易实现,但欢迎使用任何语言的解决方案.

fil*_*rem 7

您可以将PL/Perl()与Lingua :: Identify CPAN模块一起使用.CREATE FUNCTION langof(text) LANGUAGEplperluAS ...

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";
Run Code Online (Sandbox Code Playgroud)

功能:

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$;
Run Code Online (Sandbox Code Playgroud)

适合我:

filip@filip=# select langof('Pójd?, ki?-?e t? chmurno?? w g??b flaszy');
 langof
--------
 pl
(1 row)

Time: 1.801 ms
Run Code Online (Sandbox Code Playgroud)

Windows上的PL/Perl

PL/Perl语言库(plperl.dll)预装在postgres的最新Windows安装程序中.

但是要使用PL/Perl,您需要Perl解释器本身.具体来说,Perl 5.14(撰写本文时).最常见的安装程序是ActiveState,但它不是免费的.免费的一个来自StrawberryPerl.确保你有PERL514.DLL位置.

安装Perl后,登录到postgres数据库并尝试运行

CREATE LANGUAGE plperlu;
Run Code Online (Sandbox Code Playgroud)

语言识别库

如果您关注质量,您可以选择:您可以改进Lingua ::识别自己(它是开源的)或者您可以尝试另一个库.我找到了这个,它是商业的,但看起来很有希望.


Gau*_*rav 5

试试这些:

这篇博文分享了一些测试,以比较2个库(以及第3个 - Apache Tika的语言识别模块,它实际上是一个完整的文本分析工具包).