###やりたいこと
機械学習を行うためのデータセットを作成しようとしています。
具体的には一つの文章(小説など)のテキストファイルを入力として渡すと、
そのテキストファイル内容のジャンルを出力するようにしたいです。
実装しようとしているのは
1.テキストファイル名を入力する
2.指定したテキストファイルの中身を形態素解析する(Mecabを用いる)
3.形態素解析結果を特定の品詞(名詞や動詞)のみに絞り込む(ジャンル判定に影響があるもののみを使いたいため)
4.絞り込んだ単語(品詞?)についてTF-IDF値を求める(本来TF-IDF値は複数の文章から求めるものだが、1つの文章内での相対的な特徴量を求めるために採用している)
5.単語とTF-IDF値のセットをデータセットとして用意する(例:[自転車, 0.33412])
以上の5ステップを考えています。
そして現在は3ステップまで実装が完了しました。
しかし、4ステップ目をどのように実装すれば良いのかが分かりません。
また3ステップ目と4ステップ目の順番が正しいのか(逆ではないのか)を教えていただきたいです。
以下に実装途中のコードを記させていただきます。
-*- coding: utf-8 -*- import numpy as np from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extraction.text import TfidfTransformer import sys import MeCab #CountVectorizer():文書ごとの単語の出現頻度を取得 count = CountVectorizer() m = MeCab.Tagger ("-Ochasen") doc = input('select file(ex, ○○.txt):') f = open(doc, "r",encoding = "utf-8") text = f.read() f.close() #絞り込みの基準を設定 """level = float(input('set level(0.0 <= level <= 1.0):'))""" #文字列を改行位置で区切って分割する chunks = m.parse(text).splitlines() #絞り結果を格納 sels = [] #絞り込み for chunk in chunks: print(chunk) #↓[コーヒー コーヒー コーヒー 名詞-一般]のこと cols = chunk.split('\t') if len(cols) >= 4: parts = cols[3].split('-') #名詞or動詞で始まっている場合 → 真 if parts[0].startswith('名詞') or parts[0].startswith('動詞'): #要素を追加 sels.append(chunk) #絞り結果 print('\n%s 絞り込み結果↓\n' %doc) for sel in sels: print(sel)
コード内には質問内容に含まれてない部分がありますが、ご了承ください。
今回初めて機械学習を行うので質問が丸投げのような状態になってしまい、
申し訳ございません。
説明不足なところが多々あると思うので、質問をしていただけると非常にありがたいです。
###実装環境
言語:python3
OS:ubuntu
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/11 03:52
2017/10/11 13:40