Nltk: ストップワードコーパスの閉じられていないファイル

作成日 2018年01月03日  ·  11コメント  ·  ソース: nltk/nltk

/Users/kiddo/anaconda/lib/python3.6/site-packages/nltk/corpus/reader/wordlist.py:28:ResourceWarning:閉じられていないファイル<_io.bufferedreader i = "4">
concat([self.open(f).read()for f in fileids])を返します

これは、デバッグモードで見つけた警告です。 次のリリースまでに修正したいと思いました。

bug corpus enhancement goodfirstbug pythonic

最も参考になるコメント

これに関するニュースはありますか? Python 3.6は、ほとんどすべてのリソースで、NLTK3.3について不平を言っています。

/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1107: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/lexnames'>
  for i, line in enumerate(self.open('lexnames')):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1159: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/index.adj'>
  for i, line in enumerate(self.open('index.%s' % suffix)):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1159: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/index.adv'>
  for i, line in enumerate(self.open('index.%s' % suffix)):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1159: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/index.noun'>
  for i, line in enumerate(self.open('index.%s' % suffix)):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1159: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/index.verb'>
  for i, line in enumerate(self.open('index.%s' % suffix)):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1209: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/adj.exc'>
  for line in self.open('%s.exc' % suffix):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1209: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/adv.exc'>
  for line in self.open('%s.exc' % suffix):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1209: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/noun.exc'>
  for line in self.open('%s.exc' % suffix):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1209: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/verb.exc'>

全てのコメント11件

こんにちは、私はこの問題を取ることができますか?

@iliaschalkidis @alvations Linuxで警告を再現するにはどうすればよいですか?

@ sks4903440バージョン3.2.5を使用して、コマンドラインで次のスクリプトを実行してみてください。

test.py

import warnings
import nltk
warnings.filterwarnings('error', category=ResourceWarning)
stop_words = nltk.corpus.stopwords.words('english')

$ python test.py

あなたは得るべきです:

ResourceWarning: unclosed file <_io.BufferedReader name='/Users/kiddo/nltk_data/corpora/stopwords/english'>

#1945で修正

うーん.. io.BufferedReaderをStreamCorpusReaderに継承することは興味深い解決策ですが、コンテキストマネージャーのwithスコープでファイルを適切に閉じる方が良い修正かもしれません。

また、Python3.6には、以前のバージョンとは異なるファイルに対していくつかの特別な要件があると思います。 CPythonから変更ログを読み取って、実行していることが単なる絆創膏ではないことを確認する必要があります=)

@alvations withすることは確かに良い考えです。 私はそれを取り入れようとします。 CPythonでは、ガベージコレクターは、参照カウントがゼロになるとファイルを自動的に閉じるため、これを使用していませんでした。 また、 withステートメントを機能させるには、 io.BufferedReaderを使用するか、 __enter__および__exit__メソッドを実装する必要があります。 何が良いと思いますか?

〜BufferedReaderから継承するのではなく、コンテキストを使用して開閉し、ハンドルioモジュールにgc(ガベージコレクション)を処理させるため、enter / exitメソッドを実装する必要はないと思います)。〜

これは注意が必要です。 io.BufferedReaderすでにseek()ような関数があり、 SeekableUnicodeStreamReaderスーパー__init__()を実行せずにそれを継承する場合、正確にはわかりません。 BufferedReaderから取得しているもの。

実際、 withread() with内にラップすることはできません。これは、 withコンテキスト内でバッファーをハックしない限り、seekおよびtell関数が機能しなくなるためです。 うーん...

これに関するニュースはありますか? Python 3.6は、ほとんどすべてのリソースで、NLTK3.3について不平を言っています。

/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1107: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/lexnames'>
  for i, line in enumerate(self.open('lexnames')):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1159: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/index.adj'>
  for i, line in enumerate(self.open('index.%s' % suffix)):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1159: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/index.adv'>
  for i, line in enumerate(self.open('index.%s' % suffix)):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1159: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/index.noun'>
  for i, line in enumerate(self.open('index.%s' % suffix)):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1159: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/index.verb'>
  for i, line in enumerate(self.open('index.%s' % suffix)):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1209: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/adj.exc'>
  for line in self.open('%s.exc' % suffix):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1209: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/adv.exc'>
  for line in self.open('%s.exc' % suffix):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1209: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/noun.exc'>
  for line in self.open('%s.exc' % suffix):
/home/user/py36/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py:1209: ResourceWarning: unclosed file <_io.BufferedReader name='/home/user/nltk_data/corpora/wordnet/verb.exc'>

提案された修正: https

完了したと思われる別の問題ですが、問題をクローズすることをお勧めします。

問題を提起してくれてありがとう、そして修正してくれて@purificant

このページは役に立ちましたか?
0 / 5 - 0 評価