Python-text-processing-python-chunks-and-chinks

提供:Dev Guides
移動先:案内検索

Python-チャンクとチンク

チャンキングとは、単語の性質に基づいて類似の単語をグループ化するプロセスです。 以下の例では、チャンクを生成する必要がある文法を定義しています。 文法は、名詞や形容詞などのフレーズのシーケンスを示唆しています。 チャンクを作成するときにこれに従います。 チャンクの画像出力を以下に示します。

import nltk

sentence = [("The", "DT"), ("small", "JJ"), ("red", "JJ"),("flower", "NN"),
("flew", "VBD"), ("through", "IN"),  ("the", "DT"), ("window", "NN")]
grammar = "NP: {?*}"
cp = nltk.RegexpParser(grammar)
result = cp.parse(sentence)
print(result)
result.draw()

上記のプログラムを実行すると、次の出力が得られます-

chunk_1.PNG

文法を変更すると、次のように異なる出力が得られます。

import nltk

sentence = [("The", "DT"), ("small", "JJ"), ("red", "JJ"),("flower", "NN"),
 ("flew", "VBD"), ("through", "IN"),  ("the", "DT"), ("window", "NN")]

grammar = "NP: {

?*} "chunkprofile = nltk.RegexpParser(grammar)result = chunkprofile.parse(sentence)print(result)result.draw()

上記のプログラムを実行すると、次の出力が得られます-

chunk_2.PNG

チンキング

チンキングは、一連のトークンをチャンクから削除するプロセスです。 トークンのシーケンスがチャンクの中央に表示される場合、これらのトークンは削除され、すでに存在していた2つのチャンクが残ります。

import nltk

sentence = [("The", "DT"), ("small", "JJ"), ("red", "JJ"),("flower", "NN"), ("flew", "VBD"), ("through", "IN"),  ("the", "DT"), ("window", "NN")]

grammar = r"""
  NP:
    {<.>+}         # Chunk everything
    }+{      # Chink sequences of JJ and NN
  """
chunkprofile = nltk.RegexpParser(grammar)
result = chunkprofile.parse(sentence)
print(result)
result.draw()

上記のプログラムを実行すると、次の出力が得られます-

chink.PNG

ご覧のとおり、文法の基準を満たす部分は、名詞句から個別のチャンクとして除外されています。 必要なチャンクにないテキストを抽出するこのプロセスは、チンキングと呼ばれます。