Ren*_*ani 8 java language-agnostic postgresql r language-detection
我在PostgreSQL中有一个表,其中列是文本.我需要一个库或工具,可以识别每个文本的语言以用于测试目的.
不需要PostgreSQL代码,因为我在安装语言时遇到问题,但是任何可以连接到数据库,检索文本并识别它的语言都是受欢迎的.
我Lingua::Identify在Perl脚本中的答案中使用了建议,它有效,但结果不准确.
我想要识别的文本来自网络,大多数都是葡萄牙语,但是Lingua::Identify将法语,意大利语和西班牙语分类为类似的语言.
我需要更精确的东西.
我添加了java和r标签,因为我在系统中使用的语言和使用它们的解决方案将很容易实现,但欢迎使用任何语言的解决方案.
您可以将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)
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 ::识别自己(它是开源的)或者您可以尝试另一个库.我找到了这个,它是商业的,但看起来很有希望.
试试这些:
这篇博文分享了一些测试,以比较2个库(以及第3个 - Apache Tika的语言识别模块,它实际上是一个完整的文本分析工具包).
| 归档时间: |
|
| 查看次数: |
1879 次 |
| 最近记录: |