1. ホーム
  2. python

[解決済み] NLTKのPythonコンコーダンスコマンド

2022-02-11 02:32:22

質問

NLTKのPythonコンコーダンスコマンドについて質問です。まず、簡単な例を挙げてみました。

from nltk.book import *

text1.concordance("monstrous")

で、うまくいきました。さて、私は自分の.txtファイルを持っていて、同じコマンドを実行したいのです。私は "textList" という名前のリストを持っていて、 "CNA" という単語を見つけたいので、次のコマンドを実行します。

textList.concordance('CNA') 

しかし、次のようなエラーが発生しました。

AttributeError: 'list' object has no attribute 'concordance'. 

この例では、text1 はリストではないのでしょうか?どうなっているのだろう。

どのように解決するのですか?

.concordance() は特殊なnltk関数です。ですから、どんなPythonオブジェクト(リストなど)でも呼び出せるわけではありません。

具体的には .concordance() Text nltkのクラス

基本的には .concordance() の場合、まずTextオブジェクトをインスタンス化し、そのオブジェクトに対して呼び出す必要があります。

テキスト

テキストは通常、与えられた文書やコーパスから初期化される。例えば

import nltk.corpus  
from nltk.text import Text  
moby = Text(nltk.corpus.gutenberg.words('melville-moby_dick.txt'))

.コンコーダンス()

concordance(word, width=79, lines=25)

指定されたコンテキストウィンドウで、単語のコンコーダンス(一致)を表示します。単語のマッチングは大文字と小文字を区別しない。

ということで、以下のようなものが動作するのではないかと想像しています(未検証)。

import nltk.corpus  
from nltk.text import Text  
textList = Text(nltk.corpus.gutenberg.words('YOUR FILE NAME HERE.txt'))
textList.concordance('CNA')