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

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

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

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

自然言語処理

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

Q&A

1回答

1417閲覧

形態素解析のTF値、IDF値、TF-IDF値の求める方法について

green2021

総合スコア16

Python

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

自然言語処理

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

0グッド

0クリップ

投稿2021/11/04 05:27

前提・実現したいこと

形態素解析のTF値、IDF値、TF-IDF値の求める方法を教えていただきたいです。
テキストから形態素解析をし、「テキストの文章のそれぞれの品詞を振り分けること」、「出現した名詞の個数」を出力できるのですが、TF値、IDF値、TF-IDF値の求める方法には至りませんでした。
どなたかご教授よろしくお願いします。

発生している問題・エラーメッセージ

ソースコードからTF値、IDF値、TF-IDF値の求める方法には至りませんでした。

該当のソースコード

python

1# python解析器janomeをインポート - 1 2from janome.tokenizer import Tokenizer 3 4# 形態素解析用オブジェクトの生成 - 2 5text = Tokenizer() 6 7# txtファイルからデータの読み込み - 3 8text_file = open("text_1.txt",encoding="utf-8") 9# "test1.txt"の部分で読み込みたいテキストファイルを書く。 10bindata = text_file.read() 11txt = bindata 12 13# txtから読み込んだデータを形態素解析 - 4 14lines = txt.split("\r\n") 15for i in lines: 16 print(i) 17 print("\n") 18 text_c = text.tokenize(i) 19 for j in text_c: 20 print(j) 21 22print("\n") 23 24# テキストを一行ごとに処理 - 5 25word_dic = {} 26lines_1 = txt.split("\r\n") 27print(lines_1) 28print("\n") 29for line in lines_1: 30 malist = text.tokenize(line) 31 for w in malist: 32 word = w.surface 33 ps = w.part_of_speech # 品詞 - 6 34 if ps.find("名詞") < 0: continue # 名詞だけをカウント - 7 35 if not word in word_dic: 36 word_dic[word] = 0 37 word_dic[word] += 1 38 39# よく使われる単語を表示 - 8 40keys = sorted(word_dic.items(), key=lambda x:x[1], reverse=True) 41for word, cnt in keys[:50]: 42 print("{0}({1})".format(word,cnt), end="") 43 44##text_1.txt 45#私の名前は太郎です。自然言語処理を行っています。

試したこと

結果は以下のように出力されました。
(サンプルコードの下から2行をいじってみましたが、うまくいきませんでした。)

私の名前は太郎です。自然言語処理を行っています。

私 名詞,代名詞,一般,,,,私,ワタシ,ワタシ
の 助詞,連体化,
,,,,の,ノ,ノ
名前 名詞,一般,
,,,,名前,ナマエ,ナマエ
は 助詞,係助詞,
,,,,は,ハ,ワ
太郎 名詞,固有名詞,地域,一般,
,,太郎,タロウ,タロー
です 助動詞,
,,,特殊・デス,基本形,です,デス,デス
。 記号,句点,,,,,。,。,。
自然 名詞,形容動詞語幹,,,,,自然,シゼン,シゼン
言語 名詞,一般,,,,,言語,ゲンゴ,ゲンゴ
処理 名詞,サ変接続,,,,,処理,ショリ,ショリ
を 助詞,格助詞,一般,,,,を,ヲ,ヲ
行っ 動詞,自立,
,,五段・ワ行促音便,連用タ接続,行う,オコナッ,オコナッ
て 助詞,接続助詞,
,,,,て,テ,テ
い 動詞,非自立,
,,一段,連用形,いる,イ,イ
ます 助動詞,
,,,特殊・マス,基本形,ます,マス,マス
。 記号,句点,,,,,。,。,。

['私の名前は太郎です。自然言語処理を行っています。\n']

私(1)名前(1)太郎(1)自然(1)言語(1)処理(1)

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

まずはTF値、IDF値、TF-IDF値 それぞれが何を意味するのかを学びましょう。
そのうえで手作業でそれらを求めることができるようになれば、おのずと実装できるようになります。
参考:自然言語処理の基礎であるTF-IDFの計算方法とPythonによる実装方法を解説

投稿2021/11/04 06:06

can110

総合スコア38341

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問