Pythonでtextblobを用いて名詞句の抽出を行う

Pythonでtextblobを用いて名詞句の抽出を行ってみます。

今回はtextblobを用います。このライブラリ・モジュールはPythonの標準ライブラリではありませんので、事前にインストールする必要があります。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■textblobを用いて名詞句の抽出する

では、早速textblobを用いて名詞句の抽出するスクリプトを書いていきます。

■コード

from textblob import TextBlob

wiki = TextBlob("Make Python output a string")

print(wiki.noun_phrases)

「from import」でtextblobのTextBlobを呼び出します。その後、wikiという変数を定義し、その中でTextBlob()を用います。括弧内には引数,パラメータとして、名詞句の抽出するための文字列を渡します。今回は英語の文章を渡しています。

その後、wikiに対してnoun_phrasesを用いて名詞句の抽出を行います。抽出されたものが返されますので、print()で出力します。

■実行・検証

このスクリプトを「py_string_test.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

**********************************************************************
  Resource brown not found.
  Please use the NLTK Downloader to obtain the resource:

  >>> import nltk
  >>> nltk.download('brown')
  
  For more information see: https://www.nltk.org/data.html

  Attempted to load corpora/brown

  Searched in:
    - 'C:\\Users\\user_/nltk_data'
    - 'C:\\Program Files\\Python38\\nltk_data'
    - 'C:\\Program Files\\Python38\\share\\nltk_data'
    - 'C:\\Program Files\\Python38\\lib\\nltk_data'
    - 'C:\\Users\\user_\\AppData\\Roaming\\nltk_data'
    - 'C:\\nltk_data'
    - 'D:\\nltk_data'
    - 'E:\\nltk_data'
**********************************************************************

Traceback (most recent call last):
  File "C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\nltk\corpus\util.py", line 84, in __load
    root = nltk.data.find(f"{self.subdir}/{zip_name}")
  File "C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\nltk\data.py", line 583, in find
    raise LookupError(resource_not_found)
LookupError:
**********************************************************************
  Resource brown not found.
  Please use the NLTK Downloader to obtain the resource:

  >>> import nltk
  >>> nltk.download('brown')
  
  For more information see: https://www.nltk.org/data.html

  Attempted to load corpora/brown.zip/brown/

  Searched in:
    - 'C:\\Users\\user_/nltk_data'
    - 'C:\\Program Files\\Python38\\nltk_data'
    - 'C:\\Program Files\\Python38\\share\\nltk_data'
    - 'C:\\Program Files\\Python38\\lib\\nltk_data'
    - 'C:\\Users\\user_\\AppData\\Roaming\\nltk_data'
    - 'C:\\nltk_data'
    - 'D:\\nltk_data'
    - 'E:\\nltk_data'
**********************************************************************


During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\textblob\decorators.py", line 35, in decorated
    return func(*args, **kwargs)
  File "C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\textblob\en\np_extractors.py", line 109, in train
    train_data = nltk.corpus.brown.tagged_sents(categories='news')
  File "C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\nltk\corpus\util.py", line 121, in __getattr__
    self.__load()
  File "C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\nltk\corpus\util.py", line 86, in __load
    raise e
  File "C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\nltk\corpus\util.py", line 81, in __load
    root = nltk.data.find(f"{self.subdir}/{self.__name}")
  File "C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\nltk\data.py", line 583, in find
    raise LookupError(resource_not_found)
LookupError:
**********************************************************************
  Resource brown not found.
  Please use the NLTK Downloader to obtain the resource:

  >>> import nltk
  >>> nltk.download('brown')
  
  For more information see: https://www.nltk.org/data.html

  Attempted to load corpora/brown

  Searched in:
    - 'C:\\Users\\user_/nltk_data'
    - 'C:\\Program Files\\Python38\\nltk_data'
    - 'C:\\Program Files\\Python38\\share\\nltk_data'
    - 'C:\\Program Files\\Python38\\lib\\nltk_data'
    - 'C:\\Users\\user_\\AppData\\Roaming\\nltk_data'
    - 'C:\\nltk_data'
    - 'D:\\nltk_data'
    - 'E:\\nltk_data'
**********************************************************************


During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "py_string_test.py", line 5, in 
    print(wiki.noun_phrases)
  File "C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\textblob\decorators.py", line 24, in __get__
    value = obj.__dict__[self.func.__name__] = self.func(obj)
  File "C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\textblob\blob.py", line 483, in noun_phrases
    for phrase in self.np_extractor.extract(self.raw)
  File "C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\textblob\en\np_extractors.py", line 138, in extract
    self.train()
  File "C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\textblob\decorators.py", line 38, in decorated
    raise MissingCorpusError()
textblob.exceptions.MissingCorpusError:
Looks like you are missing some required data for this feature.

To download the necessary data, simply run

    python -m textblob.download_corpora

or use the NLTK downloader to download the missing data: http://nltk.org/data.html
If this doesn't fix the problem, file an issue at https://github.com/sloria/TextBlob/issues.

実行してみると、上記のエラーが出力された。エラー内容を確認すると、NLTK corporaをダウンロードする必要がある。

>py -3.8 -m textblob.download_corpora

ダウンロードの必要があるため、上記のコマンドを入力し、Enterキーを押す。本来だと上記のコマンドは「python -m textblob.download_corpora」だが、今回Pythonのバージョンを指定している。

[nltk_data] Downloading package brown to
[nltk_data]     C:\Users\user_\AppData\Roaming\nltk_data...
[nltk_data]   Unzipping corpora\brown.zip.
[nltk_data] Downloading package punkt to
[nltk_data]     C:\Users\user_\AppData\Roaming\nltk_data...
[nltk_data]   Unzipping tokenizers\punkt.zip.
[nltk_data] Downloading package wordnet to
[nltk_data]     C:\Users\user_\AppData\Roaming\nltk_data...
[nltk_data] Downloading package averaged_perceptron_tagger to
[nltk_data]     C:\Users\user_\AppData\Roaming\nltk_data...
[nltk_data]   Unzipping taggers\averaged_perceptron_tagger.zip.
[nltk_data] Downloading package conll2000 to
[nltk_data]     C:\Users\user_\AppData\Roaming\nltk_data...
[nltk_data]   Unzipping corpora\conll2000.zip.
[nltk_data] Downloading package movie_reviews to
[nltk_data]     C:\Users\user_\AppData\Roaming\nltk_data...
[nltk_data]   Unzipping corpora\movie_reviews.zip.
Finished.

Enterキーを押すとダウンロードが開始され、「Finished.」と出力されれば、ダウンロードは完了となる。

完了後、再度スクリプトを実行してみる。実行してみると、textblobを用いて名詞句を抽出し出力させることができた。

コメント

タイトルとURLをコピーしました