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

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

詳細はこちら
Jupyter

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

Python

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

データマイニング

データマイニングは、購買履歴やクレジットカードの利用履歴、電話の通話履歴など企業にある大量のデータを解析して、その中に隠れたパターンやルールを探し出す技術です。DMと略されることもあります。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

Q&A

解決済

1回答

2095閲覧

テキストデータから頻出単語の抽出

fukubaka

総合スコア11

Jupyter

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

Python

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

データマイニング

データマイニングは、購買履歴やクレジットカードの利用履歴、電話の通話履歴など企業にある大量のデータを解析して、その中に隠れたパターンやルールを探し出す技術です。DMと略されることもあります。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

0グッド

1クリップ

投稿2021/01/25 10:26

テキストデータから頻出単語を抽出してエクセルに出力したいです。

python、プログラミングともに初心者のため、エラーの対処方法がわかりません。

名詞や形容詞、一般動詞を抽出し、エクセルにしゅつりょくさせたいのですが、以下のエラーがでてしまいました。

また、最終的には、TF-IDFを算出したいので、そちらのコードも教えていただけると幸いです。
分かる方いらっしゃいましたら、是非ご教授お願いいたします。

error

1IndexError Traceback (most recent call last) 2<ipython-input-10-85eba9c8f032> in <module> 3 13 4 14 if ( result_word[0] not in ('EOS', '') 5---> 15 and result_word[3] == '名詞-一般'): 6 16 7 17 words.append(result_word[0]) 8 9IndexError: list index out of range 10

python

1import MeCab 2import re 3from collections import Counter 4 5# ファイル読み込み 6file = r'jp_title.txt' 7 8with open(file, encoding = 'utf-8') as f: 9 text = f.read() 10 11# 空行の削除 12text = re.sub('\n\n', '\n', text) 13 14# Mecab で形態素解析 15tagger = MeCab.Tagger("-Ochasen") 16result = tagger.parse(text) 17result_lines = result.split('\n') 18 19result_words = [] 20words = [] 21 22for result_line in result_lines: 23 result_words.append(re.split('[\t,]', result_line)) 24 25for result_word in result_words: 26 27 if ( result_word[0] not in ('EOS', '') 28 and result_word[3] == '名詞-一般'): 29 30 words.append(result_word[0]) 31 32# 頻出単語TOP100を抽出 33counter = Counter(words) 34for word, count in counter.most_common(100): 35 print('%s : %s' % (word, count)) 36

txtデータの間の空白は、エクセルで空行になっているところです。
今回は、エクセルのデータをtxtデータに変換して行っています。

txt

1title 2ライオコツト ダンジョン 3ねごと メルシールー 4闇よだれちび太 5 6トップ・オブ・ザ・ワールド 7ゲンム や スナイプ たちとのグリーティング 仮面ライダーエグゼイドスペシャルショー にて ジュウオウジャーショー グリーティング 魔法学校の制服 8ひとりで生きられそうって それってねえ 褒めているの 9 10ドリフト専用 開発ストーリーⅡ 進化するモンスターマシン 本編 11話がしたいよ 12 13 14 15サクラ大戦最終章 16しゃべるねこ しおちゃんへの質問その 17 18布袋寅泰 19 20 21 22 23岡村孝子 24シドニアの騎士 25サーモン握り 26 27 28 29 30 31 32オープニングアニメーション 33 34八王子 初音ミク 35均インテリア雑貨リメイクシートとウォールシェルフでドレッサー周りを大人フレンチ風に変身セリア・ダイソー 36クリス・ハート まもりたい 37野村忠宏の 年前アテネオリンピック 金メダル 級 38仮面ライダーゼロワン ジオウ夢コラボスペシャル座談会第 弾令ジェネヒロイン 集結ウォズがイズにアドバイス鶴嶋乃愛 大幡しえり 渡邊圭祐 39 40モーニング娘。 41の協力 エジプト編 小規模農家支援 売れる野菜で所得アップを 42 43周炫美 ナツメロ 44さらに使える便利テクニック活用法 45休戦協定 公式 46たいようの哀悼歌 アニメ将国のアルタイルテーマ 47日影の忍者 勝彦 48ねこモチーフの編み方 49 50東海大甲府 渡邊 諒 51 52 53 54 55 56 57あめつちひといぬ映画未使用曲 58 59 60 61 62国際テロのない世界をめざして インド洋での補給支援活動 63レイ零零 64 65 66 67安くて強力なやの紹介ドラゴンボールヒーローズ 68長澤家のオープンガーデン 69 70大河ドラマ 江 姫たちの戦国 其の弐より 71椎名林檎 コメンタリー映像 72 73#字数制限のためここまでしか載せられませんが、以下もテキストデータは続きます。

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

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

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

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

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

guest

回答1

0

ベストアンサー

名詞以外には興味がないのなら、

python

1for result_word in result_words: 2 3 if ( result_word[0] not in ('EOS', '') 4 and result_word[3] == '名詞-一般'): 5 6 words.append(result_word[0])

の部分を

python

1for result_word in result_words: 2 try: 3 if (result_word[3] == '名詞-一般'): 4 words.append(result_word[0]) 5 except Exception: 6 pass

に変更すれば動くでしょう。

投稿2021/01/25 22:58

ppaul

総合スコア24670

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

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

fukubaka

2021/01/26 02:29

ご指摘いただきありがとうございます。 エラーはなくなりましたが、printでの頻出単語の出力がされませんでした。 重ね重ね大変恐縮ですが、出力するにはどうすればよろしいでしょうか。
ppaul

2021/01/26 04:24

print('%s : %s' % (word, count)) を print('%s : %d\n' % (word, count)) にすれば動くと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問