1万件のツイートを格納したテキストファイルから抽出した名詞を対象に、いくつか分析を行いたいと考えています。
手始めに単語の頻出度を出そうと思ったら、このような出力結果になってしまい、クオーテーションにより正しい数値が反映されなくなってしまいました。
これに関して、解決策を教えていただけませんでしょうか?
宜しくお願いします。
追記: counter = Counter(str_corpus)の部分ですが、str_corpusを置いた時の出力が下記上部('',: 2693)、docsを置いた時の出力が下記下部(: 2693)となっております。
今回、ツイートを格納したテキストファイルにて「ちゃん」が277個、「みたい」が105個存在することを確認した為、str_corpusを採用することにしました。
'',: 2693 ちゃん: 76 みたい: 50 ???: 41 ちゃん',: 37 こずえ: 33 ところ: 31 みんな: 25 お願い: 25 'ハズレ: 24 '前日比',: 21 しよう: 20 わたし: 20
: 2693 前日比: 21
出力結果
'',: 2693 ちゃん: 76 みたい: 50 ???: 41 ちゃん',: 37 こずえ: 33 ところ: 31 みんな: 25 お願い: 25 'ハズレ: 24 '前日比',: 21 しよう: 20 わたし: 20
該当のソースコード
python
1from natto import MeCab 2import os 3import urllib.request 4import codecs 5from gensim import corpora 6from collections import Counter 7from collections import defaultdict 8frequency = defaultdict(int) 9 10f = open('test40.txt') 11corpus = f.read().split("\n") 12 13mecab = MeCab('-d /usr/local/lib/mecab/dic/mecab-ipadic-neologd') 14 15#if tagger.lang == 'ja': 16 17with codecs.open("test40.txt", "r", "utf-8") as f: 18 corpus = f.read().split("\n") 19 20rm_list = ["RT","https","co","さん","フォロー","本日","応募","今日","プレゼント","お金","FGO","無料","本人","投稿","動画","ツイート","リツイート","Twitter","ローソン","Peing","http","Amazonギフト券","bot","発売中","Youtube","www","WWW","質問箱","コラボ","フォロワー","DM","いいね","RT","lawson","://","!","peing","youtube","抽選","jp","リプ","キャンペーン","チケット","期間限定","DHC","日本","amp","人間","チャンネル","配信中","YouTube","WEB","楽しみ","イラスト","くじ","@","__"] 21 22stop_words = [] 23path = 'stop_words.txt' 24with open(path) as g: 25 stop_words = g.readlines() 26 27docs = [] 28for txt in corpus: 29 words = mecab.parse(txt, as_nodes=True) 30 doc = [] 31 32 for w in words: 33 if w.feature.split(",")[0] == "名詞": 34 if not any(sw in w.surface for sw in stop_words): 35 if not any(rm in w.surface for rm in rm_list): 36 if len(w.surface) >= 3: 37 doc.append(str(w.surface)) 38 39 doc = ' '.join(doc) 40 docs.append(doc) 41corpus = docs 42 43str_corpus = str(corpus).split(' ') 44 45counter = Counter(str_corpus) 46for word, count in counter.most_common(): 47 if count > 19: 48 print(f"{word}: {count}")
補足情報(FW/ツールのバージョンなど)
iOS 10.12.6, Python 3.7.3, Atom
回答1件
あなたの回答
tips
プレビュー