🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python

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

Q&A

解決済

1回答

13052閲覧

jupyter notebookのprint。データが大きすぎて出力できません。configをいじっても更新されず。

unity3dbigginer

総合スコア65

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python

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

0グッド

0クリップ

投稿2019/10/09 06:13

##初めに
現在、形態素解析を行おうと、対象のデータを持ってきて、jupyternotebookで試しにやってみようと実行しました。

##環境
windows10
jupyter notebook python3

##現状
csvファイルに格納してある、1000件以上の文章を、形態素解析しようとしています。
最後のprintで結果を見ようと思ったら、エラーがでました。

##コード

python

1import sys 2import MeCab 3csv_file = open("combination.csv", "r", encoding="ms932", errors="", newline="" ) 4f = csv.reader(csv_file, delimiter=",", doublequote=True, lineterminator="\r\n", quotechar='"', skipinitialspace=True) 5list=[] 6header = next(f) 7list.append(header) 8for row in f: 9 list.append(row) 10text = ' '.join(map(str,list)) 11m = MeCab.Tagger("-Ochasen") 12print(m.parse(text))

##コードの解説
csvファイルを読み込み、リスト型で返却される文字列を、全て1つの文字列に変換しています。
そして、printしようとしたところ、エラーがでました。

##エラー内容

IOPub data rate exceeded.
The notebook server will temporarily stop sending output
to the client in order to avoid crashing it.
To change this limit, set the config variable
--NotebookApp.iopub_data_rate_limit.

Current values:
NotebookApp.iopub_data_rate_limit=1000000.0 (bytes/sec)
NotebookApp.rate_limit_window=3.0 (secs)

##エラー内容について
調べてみたところ、出力の量が多すぎて、出力できないという内容でした。
configをいじると治るという、teratailの質問を見たのですが、解決できません。
NotebookApp.iopub_data_rate_limit=1000000.0の部分を、プロンプトで100000000に変更して、またnotebookを開いても、このエラーがでてしまいます。

##検討している内容
①理想は、結果を全て見たいので、どうしたら全て出力することができるか。
②妥協として、出力できる範囲で、全体の一部分(例えば、上位10件)を出力したい。

##最後に
どうすればできるでしょうか。
今後は、形態素解析から、tfidf値を求めようとしているため、この段階をできるようになっておきたいです。
よろしくお願いします。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tiitoi

2019/10/09 06:18

テキストファイルに出力してエディタで確認するのではダメなのでしょうか? その警告がでるような量のデータを Notebook 上で仮に出力できたとしてもブラウザが重くなってまともに使えなくなるので、Notebook 上での出力はおすすめできません。
unity3dbigginer

2019/10/09 06:24

形態素解析を実行した結果だけなら、その結果をテキストファイルに出力する手もあるんですが、 今後、tfidf値を算出したり、出力結果を使って何かをしたいと考えているので、、、 ですが、その方法でも今は構わないので、 できれば教えて頂けないでしょうか。
nandymak

2019/10/09 06:34

>リスト型で返却される文字列を、全て1つの文字列に変換しています。 >②妥協として、出力できる範囲で、全体の一部分(例えば、上位10件)を出力したい。 文字列に変換する前のリスト型の状態で、先頭の要素をインデックス指定で取り出すはできませんか?
tiitoi

2019/10/09 06:35

すみませんが、Mecab は詳しくないのですが、m.parse(text) の返り値の型はどうなっているのでしょうか? str ですか?
unity3dbigginer

2019/10/09 06:48

nandymakさん list[0]のような形で、文字列を取り出すことはできます。 ただ、その方法でlist[0]からlist[9]まで取り出して、形態素解析して出力するのではなく、形態素解析自体は、全部の文章で行いたいと考えています。
unity3dbigginer

2019/10/09 06:49

tiitoiさん strで問題ないと思います。 javaみたいに何も最初に宣言しなくてもできるのですが、あってると思います。
tiitoi

2019/10/09 07:05

str であれば、スライスで一部だけ表示することはできると思いますがいかがでしょうか。 s = m.parse(text) print(s[:100]) # 最初の100文字を表示
unity3dbigginer

2019/10/09 07:10

tiitoiさん なるほど、試してみます。 現在色々考えた結果、全ての文章を形態素解析した結果を、txtファイルに保存するようにしたいと思います。 この場合、現在のコードは、出力自体はできないけど、解析自体はできるため、 result=m.parse(text) と変数に代入し、 これをtxtファイルに書くこむ用コード書けばいいのでしょうか
guest

回答1

0

自己解決

コメント記載のとおりで解決です。

投稿2023/02/08 08:45

unity3dbigginer

総合スコア65

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問