NLTK による POS タギングと NLP におけるチャンキング [EXAMPLES]

POS Tagging

POS Tagging (Parts of Speech Tagging) は、定義と文脈に基づいてテキスト形式の言葉を特定の部分にマークアップするプロセスである。 これは、ある言語でテキストを読み、各単語にいくつかの特定のトークン(品詞)を割り当てる役割を担っている。 文法的なタグ付けとも呼ばれる。

NLTKのPart of Speechの例で学びましょう。

入力します。 私たちを許可するすべてのもの。

Output:

品詞タグの例に含まれるステップ:

  • テキストをトークン化する (word_tokenize)
  • apply pos_tag to above step that is nltk.pos_tag(tokenize_text)

NLTK POSタグの例として、以下がある。

略語 意味
CC 調整接続
CD cardinal digit
DT determiner
EX existent there
FW 外来語
IN 前置/従属接続詞
JJ このNLTK POSタグは形容詞(大きい)
JR 形容詞だそうです。 比較級(大きい)
JS 形容詞, 最上級(最大)
LS list market
MD modal (could, will)
NN noun.を使用することができます。 単数(猫、木)
NNS 名詞 複数(机)
NNP 普通名詞, 単数(サラ)
NNPS 固有名詞、複数(インディアンまたはアメリカ人)
PDT 限定詞(all, both, half)
POS possessive ending (parent ‘s)
PRP personal pronoun (hers, herself, him,himself)
PRP$ possessive pronoun (her, his, mine, my, our )
RB adverb (occasionally, swiftly)
RBR 副詞、比較級(大きい)
RBS 副詞。 最上級(最大)
RP 分詞(約)
TO 不定詞(不定詞 マーカー(to)
UH 挿入語(さようなら)
VB 動詞(ask).
VBG verb gerund (判断)
VBD verb 過去形 (pleaded)
VBN verb 過去分詞(reunified)
VBP verb, 三人称単数(ラップ)ではない現在形
VBZ 動詞、三人称単数(ベース)の現在形
WDT 語尾定数(that, what)
WP wh- 代名詞 (who)
WRB wh- 副詞 (how)

以上のNLTK POSタグリストで全てのNLTK POSタグが確認できます。 NLTKのPOSタグは、文の各単語の文法情報を付与するために使用されます。 POS NLTKのすべてのパッケージのインストール、インポート、ダウンロードは完了です。

NLP におけるチャンキングとは?

NLP におけるチャンキングとは、小さな情報の断片を取り出して大きなユニットにグループ化する処理です。 チャンキングの主な用途は、”名詞句” のグループを作ることです。 正規表現と組み合わせた品詞タグ付けに従って、文に構造を追加するために使用される。 その結果できた単語のグループを “チャンク” と呼ぶ。 浅い構文解析とも呼ばれる。

浅い構文解析では、根と葉の間のレベルは最大1つですが、深い構文解析では2つ以上のレベルで構成されます。 浅い構文解析は軽い構文解析またはチャンキングとも呼ばれます。

チャンキングのルール:

定義されたルールはありませんが、必要性と要件に応じて組み合わせることができます。

たとえば、文中の名詞、動詞(過去形)、形容詞、および接続詞をタグ付けする必要があるとします。 この場合、次のルールを使用します。

chunk:{<NN.?>*<VBD.?>*<JJ.?>*<CC>?};

chunk:{<NN.?*<VBD.?

以下の表は、それぞれの記号の意味を示しています。

記号の名前 説明
. 改行以外の文字
* 0回以上の繰り返しにマッチ
? Match 0 or 1 repetitions

Now Let us write the code to understand rule better

from nltk import pos_tagfrom nltk import RegexpParsertext ="learn php from guru99 and make study easy".split()print("After Split:",text)tokens_tag = pos_tag(text)print("After Token:",tokens_tag)patterns= """mychunk:{<NN.?>*<VBD.?>*<JJ.?>*<CC>?}"""chunker = RegexpParser(patterns)print("After Regex:",chunker)output = chunker.parse(tokens_tag)print("After Chunking",output)

Output

After Split: After Token: After Regex: chunk.RegexpParser with 1 stages:RegexpChunkParser with 1 rules: <ChunkRule: '<NN.?>*<VBD.?>*<JJ.?>*<CC>?'>After Chunking (S (mychunk learn/JJ) (mychunk php/NN) from/IN (mychunk guru99/NN and/CC) make/VB (mychunk study/NN easy/JJ))

The conclusion from the above Part of Speech tagging Python examples: 「make “はルールに含まれない動詞なので、mychunkとしてタグ付けされない

チャンキングの使用例

チャンキングはエンティティ検知に使用されます。 エンティティとは、機械が何らかの意図の値を取得する文の部分です

Example: Temperature of New York. Here Temperature is the intention and New York is an entity. 

つまり、チャンキングはトークンのサブセットを選択するために使用されます。 以下のコードでチャンキングがどのように使われ、トークンが選択されるかを理解することができる。 この例では、名詞句のチャンクに対応するグラフを見ることができます。 理解を深めるために、コードを書き、グラフを描くことにします。

Code to Demonstrate Use Case

 import nltktext = "learn php from guru99"tokens = nltk.word_tokenize(text)print(tokens)tag = nltk.pos_tag(tokens)print(tag)grammar = "NP: {<DT>?<JJ>*<NN>}"cp =nltk.RegexpParser(grammar)result = cp.parse(tag)print(result)result.draw() # It will draw the pattern graphically which can be seen in Noun Phrase chunking 

Output:

 -- These are the tokens -- These are the pos_tag(S (NP learn/JJ php/NN) from/IN (NP guru99/NN)) -- Noun Phrase Chunking

グラフ

Noun Phrase chunking Graph

グラフから、learn と guru99 は異なるトークンですが Noun Phrase として分類され、一方 from は Noun Phrase に属さないと結論付けられます。

チャンキングは、異なるトークンを同じチャンクに分類するために使用されます。 結果は、選択されている文法に依存します。 さらにチャンキング NLTK は、パターンにタグ付けし、テキスト コーポラを探索するために使用されます。

概要

  • NLTK の POS タグは、定義とコンテキストに基づいて、音声の特定の部分に対してテキスト形式の単語をマークアップするプロセスです。 CC、CD、EX、JJ、MD、NNP、PDT、PRP$、TO など。
  • POS タグ付け器は、文の各単語の文法情報を割り当てるために使用されます。 NLTKによる品詞タグ付けのすべてのパッケージのインストール、インポート、ダウンロードが完了しました。
  • 自然言語処理におけるチャンキングは、小さな情報の断片を取り出し、大きな単位にまとめる処理です。
  • あらかじめ決められた規則はありませんが、必要性と要件に応じて組み合わせることができます。
  • チャンキングはエンティティ検知に使用されています。
  • チャンキングは、異なるトークンを同じチャンクに分類するために使用されます。

コメントを残す

メールアドレスが公開されることはありません。