自然言語処理(NLP)は、特に英語の場合、「完璧な」レンマタイザーが存在する場合にステミングが古風な技術になる段階に進化しました。これは、ステマーがWord/tokenの表面形式をいくつかの意味のないステムに変更するためです。
また、「完全な」レンマタイザーの定義には疑問があります。これは、異なるNLPタスクが異なるレベルのレンマタイゼーションを必要としたためです。例えば。 動詞/名詞/形容詞の間で単語を変換する 。
ステマー
[in]: having
[out]: hav
補題
[in]: having
[out]: have
質問は、今日の英語のステマーはまったく役に立ちますか?英語用の補題ツールがたくさんあるので
そうでない場合は、nounify
、verbify
、adjectify
、およびadverbify
の前処理を実行できる堅牢なレンマタイザーを構築するために、どのように移動する必要がありますか?
見出し語化タスクは、英語と同様の形態構造を持つ他の言語にどのように簡単に拡張できますか?
Q1:「[..]英語のステマーは今日でも役に立ちますか?英語用の補題ツールがたくさんあるので」
はい。 ステマーは、レンマタイザーよりもはるかに単純で、小さく、通常は高速であり、多くのアプリケーションでは、結果は十分です。そのためにレンマタイザーを使用すると、リソースが無駄になります。たとえば、情報検索の次元削減を検討してください。検索されたドキュメントとクエリの両方で、すべてのdrive/drivingをdrivに置き換えます。 driveかdrivかx17a $かは気にしません屈折的に関連する単語をまとめている限り。
Q2:「[..]どのように前処理の名詞化、冗長化、形容詞化、副詞化を行うことができる堅牢なレンマタイザーを構築する必要がありますか?
あなたの補題の定義は何ですか、それは派生を含みますか(drive-driver)またはinflection(drive-drives)-drove)?セマンティクスを考慮していますか?
derivation(ほとんどの人は動詞の名詞などを含むと言います)を含めたい場合は、派生がはるかに多いことに注意してください変則よりも不規則。多くの同一性、ギャップなどがあります。本当にを変えたいですか(change trains)andchange(コインとして)同じ補題を持つように?そうでない場合、どこで境界を描きますか? nerve-unnerve、earth-unearth-earthling、...それは本当にアプリケーションに依存します。
semantics(bankをbankとラベル付けすると) -moneyまたはbank-riverコンテキストに応じて)、あなたはどのくらい深く行きますか(区別しますかbank-institutionbank-building)から?これをまったく気にしないアプリもあれば、基本的なセマンティクスを区別したいアプリもあれば、きめ細かくしたいアプリもあります。
Q3:「英語と同様の形態構造を持つ他の言語に、どのようにレンマタイゼーションタスクを簡単にスケーリングできますか?」
「英語と同様の形態構造」とはどういう意味ですか?英語の語形変化はほとんどありません。他の形態学的なタイプの言語(真に屈折、凝集、テンプレートなど)に適した補題機能があります。
凝集言語の可能性のある例外を除き、ルックアップテーブル(圧縮トライなど)が最良のソリューションであると主張します。 (おそらく、固有名詞などの未知の単語のバックアップ規則がいくつかあります)。ルックアップの後には、ある種の曖昧性解消が続きます(些細なことから、最初のものを取得するか、POSタグという単語と一致する最初のものをより高度に取得します)。機械学習と手動で作成されたルールの組み合わせも行われていますが、より洗練された曖昧性解消は通常、教師付き確率的アルゴリズム(例 TreeTagger または Faster )です(例 this )。
明らかに、ほとんどの言語では、ルックアップテーブルを手動で作成するのではなく、その言語の形態の記述からルックアップテーブルを生成します。屈折言語の場合、チェコ語のHajicまたはロシア語のMikheevのエンジニアリング方法を使用できます。また、大胆な場合は、2レベルの形態を使用できます。または、 Hana (myself)のように、その間に何かを行うことができます(これらはすべて、見出し語化を含む完全な形態素解析ツールであることに注意してください)。または、 Yarowsky and Wicentowski の監視なしの方法でレンマタイザーを学習することもできます。場合によっては、後処理を手動で行い、最も頻繁な単語を修正します。
あまりにも多くのオプションがあり、それは本当にあなたが結果で何をしたいかに依存します。
ステミングまたは見出し語化の古典的な用途の1つは、検索エンジンの結果の改善です。 「含む」を含む結果を検索します。
(ほとんどの検索クエリでは動詞はやや珍しいですが、特に名詞の形態が豊富な言語では、同じ原則が名詞に適用されます。)
検索結果を改善するために、語幹(または補題)が意味を持つ(「持っている」)か、意味がない(「hav」)かは実際には重要ではありません。問題の単語とそのすべての屈折形を表すことができれば十分です。実際、一部のシステムでは、語幹または補題(または基本形式または呼び出されるもの)の代わりに、数字またはその他の種類のid文字列を使用します。
したがって、これは、ステムマーが(定義により)レンマタイザーと同等のアプリケーションの例です。
ただし、「暗黙」の「ステマー」および「レンマタイザー」の定義が一般に受け入れられているとは、私は確信していません。これらの用語の一般に受け入れられている定義があるかどうかはわかりませんが、それらを定義する方法は次のとおりです。
ステマー:規則と既知の接尾辞のリストを使用して、屈折形を語幹または基本形に減らす機能。
Lemmatizer:同じリダクションを実行する機能。ただし、不規則なフォームを処理できるように包括的なフルフォーム辞書を使用します。
これらの定義に基づいて、レンマタイザーは本質的にステマーの高品質(およびより高価な)バージョンです。
答えは、私たちが話している自然言語処理(NLP)内のタスクまたは特定の研究分野に大きく依存しています。
Sentiment Analysis(NLPのお気に入りのサブフィールド)などの特定のタスクでは、以下を使用することが証明されていることを指摘する価値があります。システムの開発(機械学習モデルのトレーニング)の機能としてのStemmerまたはLemmatizerは、どんなに優れていてもモデルの精度に顕著な影響を与えませんツールです。パフォーマンスは少し良くなりますが、Dependency parsingのようなより重要な機能があり、そのようなシステムで作業する可能性がかなりあります。
私たちが取り組んでいる言語の特性も考慮に入れる必要があることに言及することが重要です。