開発合宿で作ってみて楽しかったので記事化
社会人はアウトプットが大事ってどっかの偉い人が言ってたし。。。
tf-idfって何?って人はこっち → tf-idf編のqiita記事
Mecabが入ってない人はこっちで入れてください!(Mac) → Mecabインストール
インストール
Gemfileに
gem 'analy_z'
と書いて
$ bundle install
するだけ!!
使い方
例:
require 'analy_z'
a = AnalyZ::HTML.word_val(file_path, selector)
a.tf # tf
a.idf # idf
a.tf_idf # tf-idf
a.hse_tf_idf # hse-tf-idf
a.words # words analy_z analyzed
a.texts # texts analy_z analyzed
a.sentences # sentences analy_z analyzed
まずrequire 'analy_z'
をしてから
AnalyZ::HTML.word_val(file_path, selector)
にファイルのパス名とセレクターを渡す。
file_pathの中身には必ず複数のhtmlもしくはテキストファイルが当てはまる正規表現、例えば
htmls/*.html
みたいなものを渡してください!
selectorはoptionなのでなくても動くけどもちゃんとテキストを解析したい場合余計なものを入れたくないと思うので、例えば解析したい記事のコンテンツのみを抽出する際に使います。
qiitaだとコンテンツ部分は#main
なのでこれを引数に入れると無駄なフッターとかヘッダーを解析対象から外してくれる。
そうすればちゃんと解析してくれる、はず。。。
hse_tf_idfってなんだ?
鋭い人は気付いたかもしれないけどhse_tf_idfというのが混ざってる
これは僕が勝手に考えたもので、(tf-idfは結構ありふれてるので。。)
HTML Semantic Elementの略称
※もうちょいいい名前あると思うのでコメントくださいw
何をしているかというとHTML要素を解析して単語の重要度に影響を与えようというもの
例えばh1タグやh2タグに含まれている単語を他の単語と同じように扱うのはおかしい
フォントサイズや太さがそもそも違って視覚的にそもそも重要度が全然違うのにそれを考慮しないと適切なwebのテキスト解析ができない。
なので今回はhタグの評価を実装 評価は
tag name | font-size | font-weight | valuation |
---|---|---|---|
h1 | 2 | 1.75 | 3.5 |
h2 | 1.5 | 1.75 | 2.625 |
h3 | 1.17 | 1.75 | 2.0475 |
h4 | 1 | 1.75 | 1.75 |
これをもとに成り立ってる。
計算は単純で、
重要度 = font-size * font-weight
で計算している。
他にもcssのfont-sizeやfont-weightをそれぞれ独自で計算、font-colorの目立つ色の重要度を上げるなどを検討中。。。
まとめ
- hse-tf-idf使うとただのテキスト解析からWebテキスト解析になる,はず
- いい案あったらこちらもコメントください
- プルリク、issue他コメント待ってます
- 最近同期に文句言うなら仕事しろよと言われて辛い
- メディア解析エンジンもこの開発合宿で作ったので解析させてくれるメディアさん募集中!!
Issue,プルリク,他コメントください!! → analy_z