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

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

ただいまの
回答率

90.48%

  • Python 3.x

    10240questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • 機械学習

    984questions

    機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

作成したデータセットで機械学習

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 863
退会済みユーザー

退会済みユーザー

前提・実現したいこと

テキストデータからtf-idf値が一定値以上の単語を抜き出し、そのデータをデータセットとして機械学習モデルに渡し、ジャンルを出力させるプログラムを作成したいと思っています。  

現在、そのためのデータセットを準備しようとしている段階で、プログラム起動時にテキストファイル名と単語を絞り込むための数値を入力し、入力された数値以上のtf-idf値をもつ単語を[単語,tf-idf値]のリストとして作成するところまで実装ができました。  

このデータセットを用いて機械学習のモデルを作成したいのですが、どのように作成すればよいのかが、身近に機械学習をじっそうしたことのある人がいないため、1からアドバイスをいただきたいです。  

作成途中のコード  

# -*- coding: utf-8 -*-  
#keywordリスト作成  
#指定したテキストファイル(日本語は分かち書きされたもののみ)に対応  

import numpy as np  
from sklearn.feature_extraction.text import CountVectorizer  
from sklearn.feature_extraction.text import TfidfTransformer  

#CountVectorizer():文書ごとの単語の出現頻度を取得  
count = CountVectorizer()  

#文書を指定  
doc = input('select file(ex,○○.txt):')  
doc_name = doc  
with open(doc, encoding = 'utf-8') as f:  
   #改行文字を空白に置き換える  
   doc = [f.read().replace('\n', ' ')]  
f.close()  

#絞り込みの基準を設定  
level = float(input('set level(0.0 <= level <= 1.0):'))  

#文書を表示  
print('\n%s:%s\n' %(doc_name, doc))  

#N種類の文字列を0からN-1までの整数に置き換える  
bag = count.fit_transform(doc)  
TF = bag.toarray()  

#ディクショナリを表示  
dic = count.get_feature_names()  
print('dictionary:%s\n' %dic)  

#各単語のインデックスを表示  
print('index:%s\n' %count.vocabulary_)  

#TfidfTransformer:(文書内の)TF-IDFを計算  
tfidf = TfidfTransformer(use_idf = True, norm = 'l2', smooth_idf = True)  
np.set_printoptions(precision = 2)  
TF_IDF = tfidf.fit_transform(bag).toarray()  

my_dic = []  

#keywordを表示  
for idx, word, in zip(*np.where(level <= TF_IDF)):  
   print('keyword:%s, TF-IDF:%s'%(dic[word], TF_IDF[(idx, word)]))  
   my_dic.append(list([(dic[word], TF_IDF[(idx, word)])]))  

#データセットを表示  
print(my_dic)  

  

補足情報

説明不足なところがあると思うので、不明なところがあれば質問をしていただけるとありがたいです。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

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

  • 退会済みユーザー

    退会済みユーザー

    2017/07/27 13:41 編集

    私にはtf-idf関係の話はできませんので、teratailで助けてもらうためのヘルプを書きます。 全くゼロでここまできたわけではなく、今まで何かしらのWEBサイトや文献を読まれたのではないでしょうか?それをここで見せて、「ここまでは自力で覚えて、ここまではわかるようになった。その上でこう説明してあるけれども、ここの部分が(どのように)わからないので教えてほしい」「こういうサンプル(実例を表示)があるけれども、期待通りに動かないのがどういう理由か教えてほしい(現状と理想のアウトプットイメージを並べる)」というような内容のほうが良いと思います。>1からアドバイスをいただきたいです。 恐らく、皆様は「1から」ではなく、「せめて2や3まで自力で覚えた(または覚える努力をしている)」、という部分を期待しているのだ、と思います。

    キャンセル

  • 退会済みユーザー

    2017/07/27 13:55

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

  • _Victorique__

    2017/07/27 14:33

    質問を消さないで自分の間違いを認めたらどうですか?間違いを認められない人ほど見ていられないものはないですよ

    キャンセル

回答 2

+3

このコードでは、そもそも1文書しか入れていないのでTF-IDFの測りようがありません。IDFとは何だと思っていますか?

ジャンルとは具体的に何ですか?
ラベルデータはあるのですか?
機械学習モデルとは具体的に何を想定しているのですか?ルールでもいいのでしょうか?
単語データはBoWで扱うのですか?それとも、分散表現で扱いますか?

このままだと丸投げという点には同意です。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

+2

テキストデータからtf-idf値が一定値以上の単語を抜き出し

この部分をあなたは理解しているのでしょうか?
あなたは少々機械学習に対する知識がなさすぎるように見えますのでここで質問する前にもう少し機械学習の勉強をして知識をつけて来てください。
このままですとただの丸投げになってしまいます。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/07/27 06:46

    心配していただけるのはありがたいのですが、このサイトは分からないことを質問するためのサイトだと思うので、分からないことを分からないと質問することは間違っているのでしょうか。
    私がいただきたいのはお説教ではなくアドバイスです。
    お説教しかいただくことができないのであれば、あなたの時間をこのようなことに使うべきではないと思うます。

    キャンセル

  • 2017/07/27 10:31

    私が指摘している部分は理解できているのでしょうか?出来ていないのに回答しても理解できませんよね?
    それとも私に全部一から教えろと?
    そういうのを丸投げって言うんですよ。

    キャンセル

  • 2017/07/27 13:00

    別にあなたに答えてもらおうとは思っていません。
    文句を言いたいだけなら放っておいていただけませんか?
    1からアドバイスをいただきたいだけで、1からのアドバイス「だけ」をいただきたいわけではありません。
    あなたには知識や技術があるから腹が立っているのは理解できます。
    ただ、知識も技術もない私にはこういうサイトで相談するしかないのです。

    キャンセル

  • 2017/07/27 13:05

    > 知識も技術もない私にはこういうサイトで相談するしかないのです。

    テラテイルはなんでも教えてくれるサイトではありません。一から手取り足取り教えてくれる人が現れればいいですね

    キャンセル

  • 2017/07/27 13:05

    最低限のことは調べませんか?
    「こうこう言うことをしたい。ネットや書籍で調べてみると、Aという手法とBという手法があった。自分で検討した結果、Aを使ってみたい。しかし、自分ではこれ以上のことを調べられなかった。Aを実装するために参考になるサイトやライブラリはありませんか?」
    これが最低限の質問です。

    キャンセル

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

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

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

  • Python 3.x

    10240questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • 機械学習

    984questions

    機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。