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

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

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

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

Q&A

1回答

1514閲覧

tf-idf法で文書ベクトルを作成する

mangopurin

総合スコア12

Python

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

0グッド

0クリップ

投稿2018/11/24 05:39

前提・実現したいこと

プログラミング初心者です。
pythonでtf-idf法で文書ベクトルを作成しています。
text = "私はりんごを食べました。"
text2 = "りんごを使う料理はアップルパイがあります。"

文書(上記は例ですが)をMeCabで形態素解析しました。
tfを求め、idfを求めた上で、それらを掛け合わせることで文書ベクトルを作成しようと考えています。

tfの値は求める事ができるのですが、idfの求め方に苦労しています。
特に上記のような複数の文書から、それぞれの単語が出現する文書の総数を数え上げる方法が分かりません。

ご教授お願いします。

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

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

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

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

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

guest

回答1

0

tfの行列をnumpy配列に変換し、0ならFalse、それ以外ならTrueのboolean配列を作って、aixs=0で足せばdfになります(True==1なので)。

python

1>>> import numpy as np 2>>> a = np.array([[0,5,1,0,0,4],[1,0,0,0,2,3],[4,1,0,1,0,0]]) 3>>> a 4array([[0, 5, 1, 0, 0, 4], 5 [1, 0, 0, 0, 2, 3], 6 [4, 1, 0, 1, 0, 0]]) 7>>> a != 0 8array([[False, True, True, False, False, True], 9 [ True, False, False, False, True, True], 10 [ True, True, False, True, False, False]]) 11>>> (a != 0).sum(axis=0) 12array([2, 2, 1, 1, 1, 2])

実用的に使いたいのならsklearnやgensimでモデルが用意されているので、そちらを用いた方が何かと良いです。

sklearn.feature_extraction.text.TfidfVectorizer — scikit-learn 0.20.1 documentation
gensim: models.tfidfmodel – TF-IDF model

投稿2018/11/24 06:11

hayataka2049

総合スコア30933

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問