0

Python NLTK Bookの例をいくつか試してみました。たとえば、第 7 章では、次の例を使用してチンキングについて説明しています。

grammar = r"""
    NP:
    {<.*>+}          # Chunk everything
    }<VBD|IN>+{      # Chink sequences of VBD and IN
  """
sentence = [("the", "DT"), ("little", "JJ"), ("yellow", "JJ"),
       ("dog", "NN"), ("barked", "VBD"), ("at", "IN"),  ("the", "DT"), ("cat", "NN")]
cp = nltk.RegexpParser(grammar)
result = cp.parse(sentence)

私によると、これは結果から「barked at」を削除することになっています。しかし、そうではありません。私はpythonとnltkを初めて使用しますが、ここで何が欠けていますか? ここで更新する必要がある明らかなものはありますか? ありがとう..

4

1 に答える 1

0

チャンクはチャンクを作成し、チンクはそれらのチャンクを分割します。

これは、JacobPerkinsによる「PythonTextProcessing with NLTK 2.0Cookbook」とまったく同じです(NLTKを初めて使用する場合は、この本をお勧めします)。

つまり、{}はいくつかのチャンクを作成し、} {はそれらのチャンクを小さなチャンクに分割します(つまり、それらを分離します)が、何も削除しません。

あなたの例によると、何が表示されているかをチェックしてください

result.draw()

または代わりに実行します

from nltk.tree import Tree

Tree('S', [Tree('NP', [('the', 'DT'), ('little', 'JJ'), ('yellow', 'JJ'), ('dog', 'NN')]), ('barked', 'VBD'), ('at', 'IN'), Tree('NP', [('the', 'DT'), ('cat', 'NN')])]).draw()

(上記のコードサンプルは同じことを示しています。違いは、最初の例では最初の例を実行する必要があり、2番目の例では何も必要ないことです)

于 2012-12-21T07:29:13.943 に答える