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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python

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

自然言語処理

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

Q&A

解決済

1回答

1087閲覧

tf-idfのスコアに応じた単語のランキングを綺麗にしたい

farinelli

総合スコア61

Python

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

自然言語処理

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

0グッド

0クリップ

投稿2019/08/16 07:04

編集2019/08/16 07:09

PythonとMeCabでツイート中の単語を抽出し、tf-idfのスコア毎に並べ替えようとしたところ、同じ文に同じランキングが複数かつ不規則に出現してしまいます。
原因の特定、解決策の提示をしていただけますと助かります。宜しくお願いします。

出力結果

txt

1[['ていいん' 'すべて' '高校生' 'ゲーム' 'adhd' 'crest' 'いずれ' 'いちばん' 'おかげ' 'さきがけ']] 2[['高校生' 'ゲーム' 'adhd' 'crest' 'いずれ' 'いちばん' 'おかげ' 'さきがけ' 'すべて' 'ていいん']] 3[['ところ' 'コミュ力' '東京大学' 'ダセェ' 'ロジカル' 'クソキメェ' '社会的' 'いちばん' 'おかげ' 'まとも']] 4[['高校生' 'ゲーム' 'adhd' 'crest' 'いずれ' 'いちばん' 'おかげ' 'さきがけ' 'すべて' 'ていいん']] 5[['自転車' 'バイク' '高校生' 'すべて' 'ひまわり畑' 'にきび' 'どなた' 'ところ' 'ていいん' 'さきがけ']] 6[['高校生' 'ゲーム' 'adhd' 'crest' 'いずれ' 'いちばん' 'おかげ' 'さきがけ' 'すべて' 'ていいん']] 7[['メディア' 'どなた' '高校生' 'ていいん' 'まとも' 'ひまわり畑' 'にきび' 'ところ' 'すべて' 'ゲーム']] 8[['高校生' 'ゲーム' 'adhd' 'crest' 'いずれ' 'いちばん' 'おかげ' 'さきがけ' 'すべて' 'ていいん']] 9[['高校生' '吹奏楽コンクール' 'おかげ' 'まとも' 'ひまわり畑' 'にきび' 'どなた' 'ところ' 'ていいん' 'すべて']] 10[['高校生' 'ゲーム' 'adhd' 'crest' 'いずれ' 'いちばん' 'おかげ' 'さきがけ' 'すべて' 'ていいん']] 11[['平谷村役場' 'まとも' 'ひまわり畑' 'いちばん' 'すべて' 'にきび' 'どなた' 'ところ' 'ていいん' '高校生']] 12[['高校生' 'ゲーム' 'adhd' 'crest' 'いずれ' 'いちばん' 'おかげ' 'さきがけ' 'すべて' 'ていいん']] 13[['にきび' '終息宣言' '立て続け' '高校生' 'すべて' 'ひまわり畑' 'どなた' 'ところ' 'ていいん' 'おかげ']] 14[['高校生' 'ゲーム' 'adhd' 'crest' 'いずれ' 'いちばん' 'おかげ' 'さきがけ' 'すべて' 'ていいん']] 15[['ゲーム' '先延ばし' 'adhd' '調べ物' 'まとも' 'ひまわり畑' 'にきび' 'どなた' 'ところ' '高校生']] 16[['高校生' 'ゲーム' 'adhd' 'crest' 'いずれ' 'いちばん' 'おかげ' 'さきがけ' 'すべて' 'ていいん']] 17[['act' 'いずれ' 'プレゼン' '本当にありがとうございました' 'さきがけ' 'crest' 'すべて' 'いちばん' 'おかげ' 18 'クソキメェ']] 19[['高校生' 'ゲーム' 'adhd' 'crest' 'いずれ' 'いちばん' 'おかげ' 'さきがけ' 'すべて' 'ていいん']]

該当のソースコード

python

1from natto import MeCab 2import codecs 3import sys 4import re 5from sklearn.feature_extraction.text import TfidfVectorizer 6import glob 7import numpy as np 8 9with codecs.open("test28.txt", "r", "utf-8") as f: 10 corpus = f.read().split("\n") 11 12mecab = MeCab('-d /usr/local/lib/mecab/dic/mecab-ipadic-neologd') 13 14#if tagger.lang == 'ja': 15 16rm_list = ["RT","https","co","さん","フォロー","本日","応募","今日","プレゼント","お金","FGO","無料","本人","投稿","動画","ツイート","リツイート","Twitter","ローソン","Peing","http","Amazonギフト券","bot","発売中","Youtube","www","WWW","質問箱","コラボ","フォロワー","DM","いいね","RT","lawson","://","!","peing","youtube","抽選","jp","リプ","キャンペーン","チケット","期間限定","DHC","日本","amp","人間","チャンネル","配信中","YouTube","WEB","楽しみ","イラスト","くじ","@","__"] 17 18docs = [] 19for txt in corpus: 20 words = mecab.parse(txt, as_nodes=True) 21 doc = [] 22 23 for w in words: 24 if w.feature.split(",")[0] == "名詞": 25 if len(w.surface) >= 3: 26 if not any(rm in w.surface for rm in rm_list): 27 doc.append(str(w.surface)) 28 29 doc = ' '.join(doc) 30 docs.append(doc) 31corpus = docs 32 33vectorizer = TfidfVectorizer() 34tfidf = vectorizer.fit_transform(corpus) 35 36#スコアの表示 37print(tfidf.toarray()) 38# テキストの数、出現した単語の数 39print(tfidf.shape) 40 41#並べ替え 42feature_names = np.array(vectorizer.get_feature_names()) 43for vec in tfidf: 44 index = np.argsort(vec.toarray(), axis=1)[:,::-1] 45 feature_words = feature_names[index] 46 #print(corpus) 47 print(feature_words[:,:10])

テキスト

txt

1吉本からすりゃ自分達が悪者になればいいだけの話だし、社長や会長が退任するわけでもないのがすべて。自分達が悪者になったことで目論通り宮迫に同情が集まり嘘が薄れて辞めなくていいんだよという風潮になった。 2 3東京大学のクソキメェところ、服がダセェとかコミュ力が死んでるとかそんなことじゃなくて、ロジカルな正しさが社会的に実装されることが善でありそうした社会が万人にとって暮らしやすく美しいと思ってそうな人間がウヨウヨいるところだろ 4 5自転車やバイクで世界を回っている男性が必死で追いかけてくる子猫と出会い、彼の旅を変えたおはなし 6 7なんで官邸でこんなことやってるのか、どなたかちゃんとつっこんだ報道はありますか?おかしいですよこんなの。他の議員の結婚でいちいちこんなことやってますか。メディアはおかしなことに加担しないでほしい 8 9京都吹奏楽コンクール高校生小編成の部で金賞をとることができました!ここまで支えてくださった方々のおかげです沢山の応援ありがとうござました 10 11今年も平谷村役場裏のひまわり畑で撮影しました。撮影した殆どの写真が変顔の自分。いちばんまともな顔の写真を。どこにいるかわかりにくいですが 12 13先々月中旬から大きなにきびが立て続けに4つも右ほほにできたけど、それが大分薄くなると同時に新規のにきびが出てこない。これは、年齢によるにきび終息宣言でいいのかな 14 15ADHDの人間は、「入って後悔した事はない」と分かっているにも関わらず風呂に入るのを先延ばししてしまう1方で、「やれば必ず後悔する」と分かっているにも関わらず予定までの少し空いた時間にTwitter/読書/調べ物/ゲームをやり始めてしまうというバグがあるな。 16 17本日で、CREST, さきがけ, ACT-X、すべての募集領域の面接選考会を無事に終了しました。いずれの日も都内は大変暑く、お越しいただいた方は面接前の緊張などと相まって、大変だったかと思います。そんな中、たくさんのわくわくするような提案プレゼンを、本当にありがとうございました。

補足情報(FW/ツールのバージョンなど)

iOS 10.12.6, Python 3.7.3, Atom

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

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

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

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

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

guest

回答1

0

ベストアンサー

お疲れ様です。しっかり計算して確認できていませんが、気になった点を回答します。

同じ文に同じランキングが複数かつ不規則に出現してしまいます。

tf-idf値が同じ値が含まれるのは、tf-idfの定義上仕方がないと思われます。
特に、今回入力して使用されたテキストの数は9つと少ないため、単語の出現頻度(tf)でも、逆文書頻度(idf)でも、同じ値が多くなるのは直感的に想像されます。

入力となるテキストが増すほど、単語数(・文書数)を稼げますので、状況はより緩和されるかと思われます。

投稿2019/08/16 11:58

m3yrin

総合スコア132

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

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

farinelli

2019/08/19 01:07

了解しました。有難うございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問