Pythonでのステミングとレマタイゼーション:どちらを使用しますか?
公開: 2021-02-09自然言語処理(NLP)は、言語から重要な機能を抽出することを含む通信処理技術です。 これは、以前の経験を持つインテリジェントエージェントの構築を含む人工知能の進歩です。 ここでのこれまでの経験は、ソーシャルメディア、Webスクレイピング、調査フォーム、およびその他の多くのデータ収集手法を含むソースからのテキストデータを含む膨大なデータセットに対して実行されるトレーニングに言及しています。
データ収集後の最初のステップは、このデータをクリーンアップし、機械が解釈できる数値形式である機械可読形式に変換することです。 変換プロセスはまったく別のものですが、クリーニングプロセスは実行する最初のステップです。 このクリーニングタスクでは、語尾変化は重要な概念であり、ステミングとレンマ化に進む前に明確に理解する必要があります。
目次
語尾変化
テキストデータは、予測に影響を与える場合と影響を与えない場合がある単語やその他の文字を含む文で構成されていることを私たちは知っています。 文は単語で構成され、is、there、、などの一般的に使用される単語はストップワードと呼ばれます。 これらはコーパスを作成することで簡単に削除できますが、同じ単語のさまざまな形式についてはどうでしょうか。
これらの単語の背後にある意図は同じままであり、両方とも同じ意味を伝えるため、マシンで「学習」と「学習」を異なる単語と見なしたくない場合があります。 このタイプのケースの処理はNLPの一般的な方法であり、これは語尾変化として知られています。 これは、さまざまなアプローチによるステミングとレンマ化の基本的な考え方です。 それらの違いを発見し、どちらを使用するのが良いかを見てみましょう。
ステミング
これは、単語のあいまいさを減らすことに焦点を当てたテキスト正規化手法の1つです。 ステミングは、単語を語幹の単語に丸めることに焦点を当てています。 これは、検討中の単語に応じて、接頭辞または接尾辞を削除することによって行われます。 この手法は、定義された一連のルールに従って単語を減らします。
結果の単語には、実際に意味のあるルート単語がある場合とない場合があります。 その主な目的は、類似した単語のグループを一緒に形成して、さらなる前処理を最適化できるようにすることです。 たとえば、play、playing、playedなどの単語はすべて、語幹の単語「play」に属します。 これは、検索エンジンでの検索時間を短縮するのにも役立ちます。これは、重要な要素により重点が置かれるようになったためです。
ステミングに関しては、2つのケース、つまり、蒸しすぎとステミング不足について説明する必要があります。 単語から接頭辞と接尾辞を削除すると、いくつかのケースが解決されますが、一部の単語は要件を超えて削除されます。
これにより、意味のないゴミの単語が増える可能性があります。 これは全体としてステミングのデメリットですが、それがより劇的に発生する場合は、オーバーステミングとして知られています。 ステミングの下は、ステミングプロセスが単語にほとんどまたは違いをもたらさない逆です。
Lemmatization
テキストを正規化し、それらをルートの意味に変換するための別のアプローチは、Lemmatizationです。 これには、類似した意図の単語を1つのグループにグループ化するという同じ動機がありますが、違いは、ここで結果の単語が意味を持つことです。
それらは事前定義されたルールで取り除かれませんが、辞書を使用して形成されるか、それを補題と呼びます。 ここでは、最初に単語が品詞と一致するため、変換のプロセスに時間がかかります。これ自体が時間のかかるプロセスです。
これにより、ルートワードが文字通りの意味を持ち、分析で良い結果を導き出すのに役立ちます。 これは、データのクリーニングに多くの時間を費やしたくない場合に役立ちます。さらに分析するには、よりクリーンなデータが必要です。 この手法の欠点の1つは、単語の文法に重点を置くため、言語が異なれば別々のコーパスが必要になり、データ処理が増えることです。
チェックアウト:初心者向けのディープラーニングプロジェクトのアイデア
どちらを使用しますか?
次に、2つのうちの1つを選択する必要があります。 ここでは、ターゲットとするユースケースが主要な役割を果たすため、誰かを選択することは非常に主観的です。
テキストのチャンクを分析したいが時間が制約である場合は、このアクションをより短い時間で実行するが成功率が低く、ステムがアルゴリズム的な方法で提供されるため、ステミングを選択できます。意味。
Lemmatizationを採用すると、さまざまな形式から意味のある正確な語根単語をクラブ化できるという追加の利点が得られます。 より多くの時間で優れたコンピューティングリソースを購入できる場合は、これがより適切な選択になる可能性があります。 これは、正確な分析が必要な場合に採用する必要があります。 また、ユーザーが望む結果を取得するのにルートワードで十分な検索エンジンでの検索手法の場合もあります。
Pythonの実装
NLTK(Natural Language Tool Kit)パッケージは、NLPに関連するタスクのPython実装です。 このライブラリには、Stemmersなどの必要なツールがすべて含まれています。 Lemmatizers、単語の削除の停止、カスタムパーサーツリーの作成など。 また、パッケージ自体に含まれている著名なソースからのコーパスデータも含まれています。
ステミング手法には多くの実装がありますが、最も一般的で最も古いものはPorterStemmerアルゴリズムです。 スノーボールステマーは、一部のプロジェクトでも使用されています。 ステミングとレンマ化の違いをより明確に理解するには、以下のコードとその出力を見てください。
nltkをインポートする
nltk.stemからPorterStemmerをインポートします
nltk.stemからWordNetLemmatizerをインポートします
word_stemmer = PorterStemmer()
lemmatizer = WordNetLemmatizer()
print(lemmatizer.lemmatize('flies'))
print(word_stemmer.stem('flies'))
出力:
飛ぶ
fli
最初の出力はレンマタイザーからのもので、2番目の出力はステマーからのものです。 レンマタイザーがルートワードを出力として提供したのに対し、ステマーはワードを最後からトリミングしただけであるという違いがわかります。
世界のトップ大学からデータサイエンスコースを学びましょう。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。
また読む:機械学習プロジェクトのアイデア
結論
NLPは日々成長しており、新しい方法は時間とともに進化しています。 それらのほとんどは、最小限の損失でテキストデータから適切な情報を効率的に抽出し、すべてのノイズを排除する方法に焦点を当てています。 どちらの手法も広く使用されています。 重要なのは、分析がクリーンなデータで実行されることです。
ドキュメントのクラスター化に使用される2種類のAIアルゴリズムは何ですか?
階層的クラスタリングと非階層的クラスタリングは、テキストのクラスタリングに使用される2種類のAIアルゴリズムです。 階層的クラスタリングアルゴリズムは、一連のルールに従ってドキュメントを分割および集約します。 次に、階層のデータ項目のクラスターのペアが相互に接続されます。 この手法は読みやすく理解しやすいものですが、非階層的クラスタリングほど効果的ではない場合があります。 データに多くの欠陥がある場合、クラスタリングは難しいかもしれません。 非階層的クラスタリングでは、既存のクラスターをマージおよび分割して、新しいクラスターを作成します。 これは、比較的高速で信頼性が高く、より安定したクラスタリングアプローチです。
感情分析にはレンマ化が好まれますか?
レマタイゼーションとステミングはどちらも非常に効果的な手順です。 ただし、ルート形式に変換すると、レンマ化によって常に辞書の意味の用語が生成されます。 用語の意味が研究にとって重要でない場合は、ステミングをお勧めします。 単語の意味が分析に不可欠な場合は、語彙化をお勧めします。 その結果、感情分析のために1つのアプローチを選択する必要がある場合は、レンマ化が適しています。
ステミングとレンマ化はドキュメントのクラスタリングにどのように使用されますか?
ドキュメントクラスタリングは、テキストクラスタリングとも呼ばれ、テキストテキストをグループ化して分析する方法です。 そのアプリケーションは、自動化されたドキュメントの配置からトピックの抽出、さらには迅速な情報検索にまで及びます。 ステミングとレンマ化は、同じ情報を通信するために必要なトークンの数を減らすために使用されるため、全体的な手法が向上します。 この前処理ステップに続いて、各トークンの頻度を測定し、次に最も効率的なクラスタリング手法を使用して、特徴を計算します。