自然言語処理におけるチャンキングとは何ですか?

ソースノード: 1878431

親愛なる読者、

このブログでは、Python でのチャンク化について理論的および実践的に説明します。

では、始めましょう…

注意: 実装では、出力が別のウィンドウにポップアップ表示されるツリーの描画であるため、Python IDLE を使用することをお勧めします。

議題

  • チャンク化とは何ですか?
  • チャンキングはどこで使用されますか?
  • チャンク化の種類
  • Python でのチャンキングの実装
  • 結果

チャンク化とは何ですか?

チャンキングは、特定の文内に存在する品詞や短いフレーズを識別するために使用される自然言語処理のプロセスとして定義されます。

学校の古き良き英語文法の授業を思い出してください。名詞、動詞、形容詞、副詞、前置詞、接続詞、代名詞、間投詞という XNUMX つの品詞があることに注意してください。 また、上記のチャンキングの定義において、短いフレーズとは、これらの品詞のいずれかを含むことによって形成されるフレーズを指します。

たとえば、チャンク化は、名詞句または名詞のみ、形容詞または形容詞句などを識別し、グループ化するために実行できます。 以下の文を考えてみましょう。

「朝食にハンバーガーとペストリーを食べました。」

この場合、名詞句をグループ化またはチャンクしたい場合、文の名詞または名詞グループである「ハンバーガー」、「ペストリー」、「ランチ」が得られます。

チャンキングはどこで使用されますか?

それがどこで広く使用されているかを知らずに、なぜそれを学びたいと思うのでしょうか? ブログのこのセクションで説明するアプリケーションを見れば、最後まで興味を持ち続けることができます。

チャンキングは、特定の文から必要なフレーズを取得するために使用されます。 ただし、POS タグ付けは、文のすべての単語が属する品詞を特定するためにのみ使用できます。

特定の単語や興味のあるフレーズの周囲に大量の説明や変更がある場合、チャンクを使用して必要なフレーズだけを取得し、周囲の残りの部分は無視します。 したがって、チャンク化により、必要なフレーズをグループ化し、分析に必要のない周囲の修飾子をすべて除外する方法が開かれます。 要約すると、チャンク化は、長い説明から重要な単語だけを抽出するのに役立ちます。 したがって、チャンク化は情報抽出のステップです。

興味深いことに、NLP でのこのチャンク化プロセスは、他のさまざまなアプリケーションに拡張されています。 たとえば、タンパク質が豊富な果物をグループとして、ビタミンが豊富な果物を別のグループとして、特定のカテゴリの果物をグループ化します。 さらに、チャンク化を使用して、同様の車をグループ化することもできます。たとえば、オートギアをサポートする車を XNUMX つのグループに、マニュアルギアをサポートするその他の車を別のグループに分けるなどです。

チャンクの種類

チャンク化には、大まかに XNUMX つのタイプがあります。

  • チャンクアップ
  • チャンクダウン

チャンクアップ:

ここでは、深くは掘り下げません。 代わりに、情報の概要だけでも十分です。 これは、与えられたデータについて簡単に理解するのに役立ちます。

チャンクダウン:

以前のタイプのチャンクとは異なり、チャンクダウンは詳細な情報を取得するのに役立ちます。

したがって、単に洞察が必要な場合は「チャンクアップ」を検討し、それ以外の場合は「チャンクダウン」を検討してください。

Python でのチャンキングの実装

分析のために指定されたテキストからすべての動詞を抽出したい状況を想像してください。 したがって、この場合、動詞句のチャンク化を考慮する必要があります。 これは、与えられたテキストからすべての動詞句を抽出することが目的だからです。 チャンク化は正規表現を使用して行われます。

「正規表現」という用語に初めて遭遇しても心配する必要はありません。 以下の表を参考にしてください。

シンボル

意味

*

前の文字は XNUMX 回以上出現する可能性があり、前の文字が存在する場合と存在しない可能性があることを意味します。

ab* は、ab で始まり、その後に XNUMX 個以上の b が続くすべての入力と一致します。 パターンは ab、abb、abbb などに一致します。

+

前の文字は少なくとも XNUMX 回出現する必要があります。

a+ は、a、aa、aaa などに一致します。

?

前の文字はまったく出現しないか、または XNUMX 回だけ出現する場合があります。つまり、前の文字はオプションです。

アブ? ab、abb には一致しますが、abb には一致しません。

上の表には、使用される最も一般的な正規表現が含まれています。 正規表現は、コマンド ラインで特にファイルの削除、検索、名前変更、移動を行うときに非常に役立ちます。

とにかく、この実装では * のみを使用します。 上の表を参照して、記号についてよく理解してください。

最も人気のある NLP ライブラリである nltk を使用してチャンク化を実行します。 ということで、まずはインポートしてみましょう。

nltkをインポートする

私が独自に作成した以下のサンプルテキストを考えてみましょう。 チャンキングを実装するために、以下を任意のサンプル テキストに自由に置き換えてください。

Sample_text=""" ラーマはランカからシータを救うためにラーヴァナを殺しました。ラーマーヤナの伝説は最も人気のあるインドの叙事詩です。ここインドでは、ラーマーヤナに基づいてすでに多くの映画や連続ドラマが複数の言語で撮影されています。"""

明らかに、先に進む前に、データを文でトークン化してから単語でトークン化する必要があります。 トークン化は、与えられたテキストを、文のトークン化の場合は文、単語のトークン化の場合は単語など、より小さな単位に分解するプロセスに他なりません。

トークン化に続いて、単語ごとに POS (品詞) タグ付けが行われ、すべての単語の品詞が識別されます。 ここで、動詞の品詞だけに興味があり、それを抽出したいと考えています。

したがって、次のように必要な正規表現を使用して、対象の品詞を指定します。

VB: {}

tokenized=nltk.sent_tokenize(sample_text) for i in tokenized:words=nltk.word_tokenize(i) # print(words) tagged_words=nltk.pos_tag(words) # print(tagged_words) chunkGram=r"""VB: {}" "" chunkParser=nltk.RegexpParser(chunkGram) chunked=chunkParser.parse(tagged_words) chunked.draw()

正規表現 (RE) は山括弧 () で囲まれ、さらに中括弧 ({ と }) で囲まれます。

注意: 必要なPOSに応じてREを指定します

VB は動詞 POS の略です。 VB に続くドットは、VB に続く任意の文字と一致することを意味します。 ドットの後の疑問符は、B の後の文字が XNUMX 回だけ出現するか、まったく出現してはならないことを指定します。 ただし、前に見た表から、この文字はオプションです。 NLTK では動詞句に次の POS タグが含まれるため、正規表現をこのように構成しました。

POS

意味

VB

動詞の原形

VBD

動詞の過去形

GBV

動詞の現在形

VBN

動詞の過去分詞形

VBP

動詞は現在形ですが三人称単数ではありません

VBZ

動詞は現在形で三人称単数です

したがって、動詞句は上記のどの POS にも属すことができます。 正規表現が VB.? としてフレーム化されているのはそのためです。 これには上記のカテゴリがすべて含まれます。 RegexpParser パッケージは、RE を使用して前述した必要なパターンを POS が満たしているかどうかをチェックするために使用されます。

コード全体は次のようになります。

import nltk nltk.download('averaging_perceptron_tagger') sample_text=""" ラーマはシータをランカから救うためにラーヴァナを殺しました。ラーマヤの伝説は最も人気のあるインドの叙事詩です。ここではすでに多くの映画や連続ドラマが複数の言語で撮影されています。インドではラーマーヤナに基づいています。 """ tokenized=nltk.sent_tokenize(sample_text) for i in tokenized:words=nltk.word_tokenize(i) # print(words) tagged_words=nltk.pos_tag(words) # print(tagged_words) chunkGram =r"""VB: {}""" chunkParser=nltk.RegexpParser(chunkGram) chunked=chunkParser.parse(tagged_words) chunked.draw()

結果

チャンク結果
チャンク結果

最後に、指定された RE と POS が一致する単語とともに、単語の POS のツリー形式を取得します。 上の図は、私たちから渡されたサンプル テキストに対して取得された出力のスナップショットを示しています。

動詞句のみの RE を満たす単語が出力内で明確に強調表示されることに注目してください。 したがって、動詞句のチャンク化は正常に実行されました。

私の記事がお役に立てば幸いです。

ありがとうございました!

参考文献

1. Python でチャンキングを実装する

2. チャンク化の背後にある理論

3. NLP で利用可能な POS の完全なリスト

自己紹介

私はNithyashreeVで、BTech Computer Science andEngineeringの最終学年の学生です。 私はそのようなクールなテクノロジーを学び、実践するのが大好きです。特に、それらが社会の困難な問題の解決にどのように役立つかを観察するのが大好きです。 私の興味のある分野には、人工知能、データサイエンス、自然言語処理が含まれます。

これが私のLinkedInプロフィールです: 私のLinkedIn

AnalyticsVidhyaに関する他の記事は こちら.

この記事に示されているメディアは Analytics Vidhya が所有するものではなく、著者の裁量で使用されています。

出典: https://www.analyticsvidhya.com/blog/2021/10/what-is-chunking-in-natural- language-processing/

タイムスタンプ:

より多くの 分析Vidhya