はじめに
最近使っているスクレイピングのライブラリJsoupと形態素解析器kuromojiを使って色んなサイトのTF-IDFを調べてみました。DF (Document Frequency) は日本語Wikipediaの記事をDocumentと見なしました。kuromojiにはipadic+Neologdを辞書として用いています。
とにかくやってみる
Qiitaの場合
まずは本日(2016/12/26 18:30)のQiitaのランキング上位3件の記事を調べてみましょう。
1位:いまさら聞けないLinuxとメモリの基礎&vmstatの詳しい使い方
メモリやキャッシュ、更にはLinuxのコマンドやPC用語が含まれていますね。
単語 | TF-IDF値 |
---|---|
キャッシュ | 309.65258288522097 |
DD | 246.24922429864893 |
メモリ | 209.22722419151629 |
MB | 168.1702019600529 |
HDD | 156.15804467719198 |
BO | 132.13373011147013 |
BS | 132.13373011147013 |
WA | 132.13373011147013 |
CPU | 132.13373011147013 |
BUFF | 120.1215728286092 |
2位:Retty流『2200万ユーザを支える機械学習基盤』の作り方
「機械学習」「GPU」「Docker」「AWS」など、機械学習基盤っぽい用語が出てきますね!
単語 | TF-IDF値 |
---|---|
Retty | 684.6929651230727 |
機械学習 | 612.9046715858269 |
HTTPS | 432.4376621829933 |
GPU | 420.42550490013235 |
Docker | 306.31001071295356 |
基盤 | 216.15264808371847 |
Qiita | 192.19451652577476 |
AWS | 186.1884378843443 |
PNG | 156.15804467719198 |
Secret | 144.14588739433106 |
3位:初心者がchainerで線画着色してみた。わりとできた。
記事に含まれるプログラムコードの用語が出てしまってますね。「デイ・シイ」は実際は「DC」で、これもプログラムの用語です。
単語 | TF-IDF値 |
---|---|
2D | 306.31001071295356 |
test | 268.5932355319406 |
BND | 192.19451652577476 |
デイ・シイ | 153.66267708078513 |
線画 | 140.24967520586745 |
Qiita | 138.1398087529006 |
Amazon | 114.11549418717874 |
HTTPS | 102.10333690431781 |
AWS | 102.10333690431781 |
IMAGE | 102.10333690431781 |
Wikipediaの場合
「Wikipedia」でぐぐったらWikipediaと東京喰種のwikiページが最初にヒットしたので、この2例を調べてみましょう。
ウィキペディア
「ヌーペディア」はWikipediaの前身らしいです。「ザンガー」と「ウェールズ」は創始者です。なかなかいい感じですね。
単語 | TF-IDF値 |
---|---|
274301 Wikipedia | 702.711201047364 |
Wikipedia | 144.14588739433106 |
プロジェクト | 78.13092808858966 |
記事 | 72.39311150747272 |
ヌーペディア | 62.735128692561766 |
Wiki | 60.06078641430457 |
サンガー | 58.79578216133566 |
Wikimedia | 54.05470777287412 |
ウィキメディア財団 | 49.42546256406893 |
ウェールズ | 48.657891781625956 |
東京喰種トーキョーグール
「隻眼」「アオギリ」「リゼ」「和修」など東京喰種の特徴を捉えていますね。
単語 | TF-IDF値 |
---|---|
東京喰種トーキョーグール | 214.63517540942794 |
隻眼 | 41.69656394780747 |
アオギリ | 40.56688634785545 |
トーキョーグール | 36.126864209913414 |
JUMP | 36.03647184858275 |
Loveit! | 36.03647184858275 |
リゼ | 34.125727615489716 |
和修 | 30.96588360849721 |
TVアニメ | 30.030393207152294 |
東京喰種トーキョーグール√A | 30.030393207152294 |
アルゴリズム
細かいアルゴリズムはこちらをご覧ください。ざっと解説すると、入力文をkuromoji-ipadic-Neologdで形態素解析し、名詞、動詞、形容詞、未知語のみを代表語の候補とします。いくつかストップ品詞細分類とストップワードを設定しています。続いて、代表語の候補に対してTFIDFを計算します。DFはWikipediaから算出したこちらのAPIを使いました。
関連情報
APIを公開しています。無料なので興味があればお試しください。
- 形態素解析(kuromoji-ipadic-Neologd)
- API
- 技術解説
- スクレイピング(URL2TEXT)
- API
- 技術解説
- 単文分割
- API
- 技術解説
- Document Frequency(日本語Wikipedia)
- API
- 技術解説
- TEXT2LABEL(TF-IDF)
- API
- 技術解説
- URL2LABEL(TF-IDF)
- API
- 技術解説
おわりに
TF-IDFは非常に初歩的な技術ですが、案外有用ですね。たくさん貯めたブクマ(あとで参考にしようと思ったり、すごく参考になったから保存したものを整理せずに放置してた)があるので、この機会に今回の技術を使って整理してみます。URLだけじゃなく文書とかにも使えるので、なかなか便利です。