9

列がテキストであるPostgreSQLにテーブルがあります。テスト目的で、各テキストの言語を識別できるライブラリまたはツールが必要です。

言語のインストールに問題があるため、PostgreSQL コードは必要ありませんが、データベースに接続してテキストを取得し、それを識別することができる任意の言語を歓迎します。

Perlスクリプトの回答で提案されたものを使用Lingua::Identifyしましたが、うまくいきましたが、結果は正確ではありません。

私が特定したいテキストは Web からのもので、ほとんどがポルトガルLingua::Identify語ですが、類似言語であるフランス語、イタリア語、スペイン語に分類されています。

もっと正確なものが必要です。

javaおよびタグを追加したのrは、システムで使用している言語であり、それらを使用したソリューションは簡単に実装できるためですが、どの言語のソリューションも大歓迎です。

4

6 に答える 6

10

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";

そして機能:

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$;

私のために働く:

filip@filip=# select langof('Pójdź, kiń-że tę chmurność w głąb flaszy');
 langof
--------
 pl
(1 row)

Time: 1.801 ms

Windows 上の PL/Perl

PL/Perl 言語ライブラリ (plperl.dll) は、postgres の最新の Windows インストーラーにプリインストールされています。

ただし、PL/Perl を使用するには、Perl インタープリター自体が必要です。具体的には、Perl 5.14 (この記事の執筆時点)。最も一般的なインストーラーは ActiveState ですが、無料ではありません。無料のものはStrawberryPerlから来ています。整っていることを確認してくださいPERL514.DLL

Perl をインストールしたら、postgres データベースにログインして実行してみます。

CREATE LANGUAGE plperlu;

言語識別ライブラリ

品質が気になる場合は、いくつかのオプションがあります: Lingua::Identify yourself (オープンソース) を改善するか、別のライブラリを試すことができます。これは商用ですが、有望に見えます

于 2012-01-21T22:34:12.767 に答える
6

これらを試してください:

このブログ投稿では、2つのライブラリを比較するためのいくつかのテストを共有しています(3つ目はApache Tikaの言語識別モジュールです。これは実際にはテキスト分析用の完全なツールキットです)。

于 2012-01-28T19:08:02.007 に答える
4

単純ベイズ分類器は、言語の識別に非常に優れています。すべての主要な言語で実装を見つけるか、自分で実装することができます。それほど難しいことではありません。ウィキペディアのエントリも興味深いです: https://en.wikipedia.org/wiki/Naive_Bayes_classifier .

于 2012-01-21T20:25:48.837 に答える
2

LGPLで利用できるTextCatというライブラリを見つけました。身分証明書の品質はわかりませんが、オンラインデモフォームがあるので、ダウンロードする価値があるかどうかを判断する前に、テキストを投げることができます。

これもPerlで書かれているので、もしあなたがそれを使いたいのなら、filipremの答えのアプローチは良い出発点になるでしょう。

于 2012-01-25T22:49:41.757 に答える
0

また、 http: //detectlanguage.comには、無料サービスとプレミアムサービスの両方を提供する言語検出Webサービスがあります。

RubyおよびPHPクライアントがありますが、任意の言語の単純なWeb要求からアクセスできます。出力はJSONです。

于 2013-01-21T21:58:07.627 に答える