nltkモジュールを使用してセンテンスの極性を検出するカスタムコーパスを作成しました。ここではコーパスの階層は次のとおりです。NLTKでカスタム作成コーパスを読んでいるときのUnicodeDecodeError
極性
--polar
---- polar_tweets.txt
--nonpolar
---- nonpolar_tweets.txt
そして、ここではどのようにあります私は、ソースコードでそのコーパスをインポートしています:
polarity = LazyCorpusLoader('polar', CategorizedPlaintextCorpusReader, r'(?!\.).*\.txt', cat_pattern=r'(polar|nonpolar)/.*', encoding='utf-8')
corpus = polarity
print(corpus.words(fileids=['nonpolar/non-polar.txt']))
が、それは次のエラー発生します
01ファイルpolar_tweets.txt
と
nonpolar_tweets.txt
を作成している間
Traceback (most recent call last):
File "E:/Analytics Practice/Social Media Analytics/analyticsPlatform/DataAnalysis/SentimentAnalysis/data/training_testing_data.py", line 9, in <module>
print(corpus.words(fileids=['nonpolar/nonpolar_tweets.txt']))
File "E:\Analytics Practice\Social Media Analytics\analyticsPlatform\lib\site-packages\nltk\util.py", line 765, in __repr__
for elt in self:
File "E:\Analytics Practice\Social Media Analytics\analyticsPlatform\lib\site-packages\nltk\corpus\reader\util.py", line 291, in iterate_from
tokens = self.read_block(self._stream)
File "E:\Analytics Practice\Social Media Analytics\analyticsPlatform\lib\site-packages\nltk\corpus\reader\plaintext.py", line 122, in _read_word_block
words.extend(self._word_tokenizer.tokenize(stream.readline()))
File "E:\Analytics Practice\Social Media Analytics\analyticsPlatform\lib\site-packages\nltk\data.py", line 1135, in readline
new_chars = self._read(readsize)
File "E:\Analytics Practice\Social Media Analytics\analyticsPlatform\lib\site-packages\nltk\data.py", line 1367, in _read
chars, bytes_decoded = self._incr_decode(bytes)
File "E:\Analytics Practice\Social Media Analytics\analyticsPlatform\lib\site-packages\nltk\data.py", line 1398, in _incr_decode
return self.decode(bytes, 'strict')
File "C:\Users\prabhjot.rai\AppData\Local\Continuum\Anaconda3\lib\encodings\utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc2 in position 269: invalid continuation byte
、私は、ファイルにutf-8
からuncleaned_polar_tweets.txt
をデコードして、ファイルpolar_tweets.txt
にそれを書いています。
with open(path_to_file, "rb") as file:
output_corpus = clean_text(file.read().decode('utf-8'))['cleaned_corpus']
output_file = open(output_path, "w")
output_file.write(output_corpus)
output_file.close()
output_fileのはpolar_tweets.txt
とnonpolar_tweets.txt
である:ここではそのためのコードです。 どこにエラーがありますか?私はencoding='latin-1'
でencoding='utf-8'
を交換した場合、私が最初にutf-8
にエンコードし、行
polarity = LazyCorpusLoader('polar', CategorizedPlaintextCorpusReader, r'(?!\.).*\.txt', cat_pattern=r'(polar|nonpolar)/.*', encoding='utf-8')
によってutf-8
にも読んでいますので、コードは完璧に動作します。問題はどこですか?コーパスを作成中にもutf-8
でデコードする必要がありますか?
用語がオフです。読んでいるときは、*何かからデコードします。このエラーは、コーパス(またはその一部)が有効なUTF-8ではないことを示しています。問題のデータにアクセスすることができなければ、推測しかできません。 'LC_ALL = C grep -m 1 $ '\ xC2' nonpolar_tweets.txt'は何を生成しますか? (おそらくパイプを 'xxd'または同様のバイトに正確に見るために) – tripleee
...または同等のPython - 違反行を読み、' repr() 'を調べてください。 – tripleee