2011-08-09 16 views
0

A-Za-z0-9正規表現を使用して英語の文字と数字を抽出できることがわかりました。他の言語から単語を抽出する正規表現

アラビア語などの他の言語から単語を抽出するにはどうすればいいですか?スクリプト内の文字と数字のみを許可する方法はありますか?

私が使用した方法の1つは、テキストから欲しがらないものをすべて除外して、ただの言葉で残しておきますが、この方法はCPU時間がかかり、大規模アプリケーションでは効率的ではありません。

私は他のどのメソッドが使用されていたのか、他の言語のテキストを分析するために使用できることが分かっていました。

中国語、日本語など、単語間のスペースを使用しない言語からどのように単語を抽出できますか?私が言葉を区別するために取った1つのアプローチは、スタイルや改行を異なる作業でなければならないことを認識する方法として見ていますが、人々が改行や書式設定をして別の言葉。

したがって、要約すると、正規表現を使用して他の言語をどのように分析できますか?

答えて

1

一般に、正規表現は、単語区切り文字(スペースなど)を使用しない言語の単語を抽出するのに十分強力ではありません。

中国語から単語を抽出するには、既知の単語の巨大な辞書が必要です。既知の単語に基づいて文章を分割し、より長い辞書エントリを優先します(それぞれの文字は有効な単語です)。

日本語から単語を抽出するには、文章のスタイルによって異なります。テキストが完全に仮名ならば、上記の辞書のアプローチを使用してください。テキストが漢字と仮名の標準ミックスに含まれている場合、かな漢字変換がほぼ確実に新しい単語の始まりであることを少なくとも知ることができます。

+0

笑、今私は私がどんな中国語の単語辞書を見つけることができないとして取るべきアプローチを知らないとして私をbogglesのthats。たぶんあなたはいくつかのリンクで私を助けることができます。 – Vish

+0

無料の中国語辞書ファイルをGoogleで検索すると、次のようになります。http://www.mdbg.net/chindict/chindict.php?page=cedict私は中国語で単語を分割する方法に関する別の答えを追加します。 – Nayuki

0

高次の言語構造ではなく文字でフィルタリングしたい場合は、ほとんどの言語で全く同じことができます。ユニコードをサポートする正規表現ライブラリが必要です。リストhereを見つけ、それらの範囲に基づいてフィルタリングすることができます。

0

英語のテキスト(大体)に使用できるのは[A-Za-z0-9]なので、アラビア語のテキストには[\p{Script=Arabic}0-9]を使用できます(おおよそ)。

1

は、私たちが手元に中国の辞書を持っていると我々はこのようなフレーズを分割するとします:中國是位於亞洲東部的一個廣大地域或國度

一つのアプローチは、左からスキャンして、できるだけ多くの手紙をつかむためにありますできるだけ辞書の中に単語を残しながら。それから私たちはその数多くの手紙と繰り返しを進めます。貪欲法と呼ばれるこのアプローチは、この言葉の分割を私たちに与えてくれるでしょう:[中國] [是] [位] [亞洲] [東部] [的] [一] [個] [廣] [地域] [或る] [國度]

これは唯一のアプローチではない場合があります。たとえば、辞書{A、B、C、D、AB、BCD}とテキストABCDがある場合、テキストを[AB] [C] [D]または[A] [BCD] 。後者の方が前者よりも好ましい場合があります。

便利なことに、このWebページには、実際には単語の分割を発揮することができますhttp://www.mdbg.net/chindict/chindict.php

+0

複数の短い単語を長い単語にまとめて実行することが含まれるため、正しい構文解析が1つもない中国語の言葉遣いがあると、驚くことはありません。 – porges

+0

私の例のフレーズは、1文字と2文字の単語を示していますが、より長い技術的な文脈ではより長い単語が見つかります。文学的には、4文字のイディオムがたくさんあります。技術的なことについては、碳水化合物=炭水化物のようなものがあります。 – Nayuki

関連する問題