目次
これはなに
- sters/hugo-utilities: My weapons for Hugo.
- sters自身がHugoを使っているときに、こういうのあったら便利なんでは、と作ったまとめ(予定)
- 例えば、各記事は自由に書けるので、タグが微妙にぶれたりするので…
- 似ているタグを探すものとか
- 記事の内容からタグを推測するとか
なぜつくったのか
- Hugoは結局のところコンテンツをシュッとやってくれるだけで、そのコンテンツ管理は各自に委ねられる。
- そのときコンテンツ管理を気合だけで統一感をもってやっていくことが難しく、機械的なサポートがほしいなあ〜〜と。
どうやってつくったのか
- Go!
- 以前作ったごく簡単なパースするパッケージ
sters/simple-hugo-content-parse
を使ってコンテンツをパースしている。
- あとは雰囲気でえいや。
- 似ているタグを探すのにはレーベンシュタイン距離を使ってみた。
- agnivade/levenshtein: Go implementation to calculate Levenshtein Distance.
- なぜレーベンシュタイン距離かというと
こんにちは
とこんちは
のようなものを、単なるContainsのようなチェックでは判別できないため。 - 単純なしきい値では明らかにそれを出すのはおかしい、みたいなものが多かったので、文字列の長さに対してある程度一緒であれば出す、という実装にしている。
- もうちょっといい判定にしたほうがいい気がするけど、まあ…
- 一応アイデアはあって、1-gramで行うレーベンシュタイン距離ではなく、2-gramで行う、とか。
- 2文字のペアとして見たときに、レーベンシュタイン距離を見る。