質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.36%

  • Python

    10326questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • 深層学習

    187questions

  • Chainer

    183questions

    Chainerは、国産の深層学習フレームワークです。あらゆるニューラルネットワークをPythonで柔軟に書くことができ、学習させることが可能。GPUをサポートしており、複数のGPUを用いた学習も直感的に記述できます。

encodeErroerについて

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 82

yukit5669

score 3

import re

def split_by_punct(segment):
    """Splits str segment by punctuation, filters our empties and spaces."""
    return [s for s in re.split(r'\W+', segment) if s and not s.isspace()]

def read_text(filename):
    with open(filename) as f:
        sentences = []
        for line in f:
            line = line.strip()
            words = ' '.join(split_by_punct(line)).strip()
            sentences.append(words)
        return ' '.join(sentences).strip()


def load_file(data_file, split_idx):
    train = []
    dev = []
    with open(data_file) as f:
        for filename in f:
            idx = int(filename.split('/')[-1].split('_')[0])
            words = read_text(filename.strip())
            if idx >= split_idx:
                dev.append(words)
            else:
                train.append(words)
    return train, dev


def load_test_dataset(data_file):
    test = []
    with open(data_file) as f:
        for filename in f:
            words = read_text(filename.strip())
            test.append(words)
    return test

def prepare_imdb():
    # this split is used at
    # https://github.com/tensorflow/models/tree/master/research/adversarial_text
    imdb_validation_pos_start_id = 10621  # total size: 12499
    imdb_validation_neg_start_id = 10625

    def fwrite_data(filename, sentences):
        with open(filename, 'w') as f:
            for words in sentences:
                # line = ' '.join(words)
                line = words
                f.write(line.strip() + '\n')
            f.close()

    pos_train, pos_dev = load_file('imdb_train_pos_list.txt',
                                   imdb_validation_pos_start_id)
    neg_train, neg_dev = load_file('imdb_train_neg_list.txt',
                                   imdb_validation_neg_start_id)

    pos_test = load_test_dataset('imdb_test_pos_list.txt')
    neg_test = load_test_dataset('imdb_test_neg_list.txt')

    fwrite_data('imdb_pos_train.txt', pos_train)
    fwrite_data('imdb_pos_dev.txt', pos_dev)
    fwrite_data('imdb_neg_train.txt', neg_train)
    fwrite_data('imdb_neg_dev.txt', neg_dev)

    fwrite_data('imdb_pos_test.txt', pos_test)
    fwrite_data('imdb_neg_test.txt', neg_test)

    unlabled_lm_train, _ = load_file('imdb_unlabled_list.txt', 100000000)

    fwrite_data('imdb_unlabled.txt', unlabled_lm_train)
    print('Done')

if __name__ == '__main__':
    import sys
    action = sys.argv[1]
    if action == 'prepare_imdb':
        prepare_imdb()

https://github.com/aonotas/adversarial_text

上記githubにあることをやろうとしています。

該当コードを実行したところ、
実行ファイル ./download.sh  Prepare for IMDB Prepare script is running... Traceback (most recent call last):   File "preprocess.py", line 79, in <module>     prepare_imdb()   File "preprocess.py", line 55, in prepare_imdb     imdb_validation_pos_start_id)   File "preprocess.py", line 24, in load_file     words = read_text(filename.strip())   File "preprocess.py", line 11, in read_text     for line in f:   File "/Users/hogehoge/anaconda3/lib/python3.6/encodings/ascii.py", line 26, in decode     return codecs.ascii_decode(input, self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 399: ordinal not in range(128)
がでました

環境は
OS Mac Mojave Python 3.6.5 :: Anaconda, Inc.
です

どのように修正すれば実行されるでしょうか

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • quiqui

    2019/02/12 08:17

    OS,Pythonはなにを使っているか、エラーが出たのはどこかを書く。トレースバックを省略しない。そもそもあなたかなにを実行したのかすら、他の人にはわからない。

    キャンセル

  • yukit5669

    2019/02/12 12:20 編集

    わかりにくい記載をして申し訳ありませんでした

    OS Mac Mojave
    Python 3.6.5 :: Anaconda, Inc.

    ```実行ファイル ./download.sh
    Prepare for IMDB
    Prepare script is running...
    Traceback (most recent call last):
    File "preprocess.py", line 79, in <module>
    prepare_imdb()
    File "preprocess.py", line 55, in prepare_imdb
    imdb_validation_pos_start_id)
    File "preprocess.py", line 24, in load_file
    words = read_text(filename.strip())
    File "preprocess.py", line 11, in read_text
    for line in f:
    File "/Users/hogehoge/anaconda3/lib/python3.6/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 399: ordinal not in range(128)```

    キャンセル

回答 1

checkベストアンサー

+2

シェススクリプトの先頭でexport LC_ALL=Cしているんだから、ASCIIの範囲の文字しか受けつけなくなりますね。

https://github.com/aonotas/adversarial_text/network
https://github.com/tingkai-zhang/adversarial_text/commit/b0c8ec93f2040a7917fd96de35d21d7a099d3787

あたりに、直した人がいるように見えるので

https://github.com/tingkai-zhang/adversarial_text を使えばいいかもしれません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/02/12 16:15

    ありがとうございます!

    自分の調査不足でした
    本当にお助けいただきありがとうございます

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.36%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Python

    10326questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • 深層学習

    187questions

  • Chainer

    183questions

    Chainerは、国産の深層学習フレームワークです。あらゆるニューラルネットワークをPythonで柔軟に書くことができ、学習させることが可能。GPUをサポートしており、複数のGPUを用いた学習も直感的に記述できます。