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 [93mbrown[0m not found.
Please use the NLTK Downloader to obtain the resource:
[31m>>> import nltk
>>> nltk.download('brown')
[0m
For more information see: https://www.nltk.org/data.html
Attempted to load [93mcorpora/brown[0m
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 [93mbrown[0m not found.
Please use the NLTK Downloader to obtain the resource:
[31m>>> import nltk
>>> nltk.download('brown')
[0m
For more information see: https://www.nltk.org/data.html
Attempted to load [93mcorpora/brown.zip/brown/[0m
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 [93mbrown[0m not found.
Please use the NLTK Downloader to obtain the resource:
[31m>>> import nltk
>>> nltk.download('brown')
[0m
For more information see: https://www.nltk.org/data.html
Attempted to load [93mcorpora/brown[0m
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を用いて名詞句を抽出し出力させることができた。


コメント