2009-03-25 2 views
8

私はドイツ語の形態素解析を行うことができるライブラリを探しています。つまり、任意の単語をそのルート形式に変換し、解析された単語についてのメタ情報を提供します。例えばドイツ語の形態素解析のための無料のライブラリはありますか?

gegessen -> essen 
wurde [...] gefasst -> fassen 
Häuser -> Haus 
Hunde -> Hund 

マイウィッシュリスト:

  • それは名詞と動詞の両方で動作するように持っています。
  • ドイツ語の複雑さを考えると、これは非常に難しい作業であることを知っています。したがって、近似値のみを提供するか、または80%正確である可能性のあるライブラリを探しています。
  • 私は辞書では動作しないライブラリが好きですが、やはり状況を考慮して妥協することはできません。
  • 私はC/C++/DelphiのWindowsライブラリも好んでいます。これは.NET、Java、...などの統合が容易になるためです。
  • 無料のライブラリである必要があります。 (L)GPL、MPL、...

EDIT:私はので、不規則な言葉で、まったく辞書なし形態素解析を実行する方法がないことを承知しています。私が言うとき は、私はそれぞれ、すべての単語をマップこれらの本格的な辞書を意味辞書なしでライブラリを好む:

arbeite -> arbeiten 
arbeitest -> arbeiten 
arbeitet -> arbeiten 
arbeitete -> arbeiten 
arbeitetest -> arbeiten 
arbeiteten -> arbeiten 
arbeitetet -> arbeiten 
gearbeitet -> arbeiten 
arbeite -> arbeiten 
... 

これらの辞書は巨大なサイズと未知語を処理できないことを含む、いくつかの欠点を持っています。

もちろん、すべての例外は、唯一の辞書で扱うことができます。

esse -> essen 
isst -> essen 
eßt -> essen 
aß -> essen 
aßt -> essen 
aßen -> essen 
... 

(私の心は:)今回っている)

答えて

7

私はあなたが "ステミングアルゴリズム"を探していると思います。

Martin Porterのアプローチは、言語学者によく知られています。 Porterステマーは、基本的に接辞除去アルゴリズムであり、これらの特殊なケースに対していくつかの置換ルールが組み合わされています。

ほとんどのステマーは、言語的に「間違っている」ステムを提供します。たとえば、「美しい」と「美しい」の両方がステム「beauti」になることがありますが、これはもちろん実際の言葉ではありません。ただし、情報検索システムの検索結果を向上させるためにこれらのステムを使用している場合は、これは問題ではありません。 Luceneには、たとえばPorterステマーがサポートされています。

ポーターはまた、スノーボールと呼ばれるステマーを開発するための簡単なプログラミング言語を考案しました。

スノーボールにはドイツ語のステムマーもあります。 Snowballのソースから生成されたCバージョンも、アルゴリズムのプレーンテキストの説明と共に、Webサイトで入手できます。

ここでスノーボールでドイツステマです:あなたは品詞の情報と一緒に、辞書でそれを見つけると同じように単語の対応幹を探しているなら、あなたがグーグル、http://snowball.tartarus.org/algorithms/german/stemmer.html

必要があります"lemmatization"。

2

私はこの辞書なしで行うことができることはないと思います。正解: - >エッセン
gegangen - > angen

(ドイツ語話せない人に注意

ルール・ベースのアプローチは常に

gegessenのようなものの上にトリップします2番目のケースでは "gehen"です)。

+0

あなたは部分的に正しいですが、私は私の質問を更新しました。 –

1

Leoをご覧ください。 彼らはあなたが後になっているデータを提供します、それはあなたにいくつかのアイデアを与えるかもしれません。

3

あなたはこれまでにこの質問をしましたが、まだmorphistoで試してみるかもしれません。ここで

は、Ubuntuの中でそれを行う方法についての例です:

  1. シュトゥットガルトの有限状態トランスデューサツールをインストール

    $ sudoをSFST

  2. をインストールapt-getをmorphisto形態をダウンロード、例えばモルフィスト-02022011.a

  3. $ FST-コンパクトmorphisto-02022011.a morphisto-02022011.ac

  4. それを使用してください!以下はいくつかの例です:

    $ echo Hochzeit | FST-PROC morphisto-02022011.ac ^ Hochzeit/hohZeit < + NN>/hohZeit < + NN>/hohZeit < + NN>/hohZeit < + NN>/HochZeit < + NN>/HochZeit < + NN>/HochZeit < + NN>/HochZeit < + NN>/Hochzeit < + NN>/Hochzeit < + NN>/Hochzeit < + NN>/Hochzeit < + NN> $

    $エコーgearbeitet | FST-PROC morphisto-02022011.ac ^ gearbeitet/arbeiten < + ADJ>/arbeiten < + ADJ>/arbeiten < + V> $

5

(免責事項:私はここに私自身のオープンソースプロジェクトをリンクしています)からの出力を明確にすることを意味する言葉のリストの形でこのデータはhttp://www.danielnaber.de/morphologie/で利用可能である

。これは、リストに含まれていない複合名詞をカバーするために、単語スプリッタライブラリ(jwordsplitterなど)と組み合わせることができます。

LanguageTool from Javaは、単語リストがコンパクトな有限状態マシンの形で埋め込まれています(プラス複合分割も含まれます)。

+2

あなたの答えを投稿してくれてありがとう! [自己プロモーションに関するよくある質問](http://stackoverflow.com/faq#promotion)をよく読んでください。また、自分のサイト/製品にリンクするたびに免責条項を掲示することが必須*であることにも注意してください。 –

3

lemmatisationのための標準化されたオープンソースの多言語プラットフォームを提供することを目的とするプロジェクトであるLemmaGen(http://lemmatise.ijs.si/)を見てください。それはあなたが望むものを正確にやっています。

1

モーフのように使用できるツールがいくつかあります。 Matetools、Morphistoなどのコンポーネントですが、ツールチェーンにそれらを統合するのが苦痛です。非常に多くのこれらの言語ツールの非常に優れたラッパーは、UIMAを使用するフレームワークであるDKpro(https://dkpro.github.io/dkpro-core/)です。これにより、異なるリソースからの異なる言語ツールを使用して、コンピュータ上で自動的にダウンロードされ、お互いに話すことによって、独自の前処理パイプラインを作成することができます。 JavaやGroovy、あるいはJythonを使っても使えます。 DKProを使用すると、MateMorphTaggerとSfstAnnotatorという2つの形態素解析ツールに簡単にアクセスできます。

あなたはPorterのような形容詞を使いたくないので、言語的に意味をなさない方法で単語の形を減らし、あなたが記述した振舞いを持たないようにします。基本形だけを見つけたい場合は、不等号となる名詞の動詞と名詞の単数形を検索するには、除名詞を使用する必要があります。ドイツ語のリーマタイマのリストhereを見つけることができます。 Treetaggerは広く使われています。また、SMORSのような形態学的分析器によって提供されるより複雑な分析を使用することもできます。

そして、ここではprefixation、接尾辞と>グラデーションを示す "unübersetzbarstes" の分析である: 国連< PREF>übersetzen< V>バー< SUFFそれはあなたにこの(SMORSウェブサイトからの例)のようなものを与えます> < + ADJ> < SUP> < NEUT> <ノム> < Sgは> <セント>