記事内のハッシュタグをタグとして登録する
## ハッシュタグをタグとして使いたい
TwitterやFacebook、InstgramなどのSNSで検索を用意にするために用いられるハッシュタグ。タグ自動生成のために、はまぞうのブログを周ってみると、記事内で`#ワード`のように利用している人を見かける。記事内でハッシュタグとして利用しても現状変換されるシステムがないので、変換されるようなスクリプトを組む。
## 実装
ハッシュタグは形態素解析とは異なり、ユーザが文字を`#`で区切ってくれているため、それを単語の区切りとして考えればいい。
素直に実装するならば`String.prototype.split()`メソッドで問題ないが、`#`と単語の間にスペースを含むか、`#`ではなく、`#`や`♯`を使う人がいたりするので、それにも対応できるようにする。
そもそも形態素解析で形態素に分解してしまっているので、そっちに合わせる。
```javascript
for (let val of temp) {
if (val.surface_form.match(/[^##♯]/g)) {
tempWord += val.surface_form;
} else {
tempWord = tempWord.replace(/\s/g, ' ').match(/.*\S/);
if (null !== tempWord) {
counts[tempWord] = counts[tempWord] ? counts[tempWord] + 1 : 1;
}
tempWord = '';
}
}
```
`##♯`のいずれかにマッチしなかったら、その形態素を結合のために用意した変数に足していく。
`##♯`のいずれかにマッチしたら、完成したキーワードを連想配列に格納、あとは前回のスクリプトと同様に取り出す。
replaceする必要はないのだが、個人的に全角スペースはちょっと......
## まとめ
ハッシュタグはユーザ側が記事内に`#`で区切るというルールの元追加してくれるので、タグを生成するのは簡単。
前回のスクリプトでは形態素でタグ付けしてしまい、求めているキーワードにならなかったりしたので、名詞のあとに名詞が続くようであれば結合、英単語のように名詞の後にスペースが来たときも結合という形にしたことで、それなりにタグっぽいタグができあがるようになった。
ちなみに実装したスクリプトでこの記事のタグ付けをするとこうなる。
> ハッシュタグをタグとして使いたい TwitterやFacebook、InstgramなどのSNSで検索を用意にするために用いられるハッシュタグ。タグ自動生成のために、はまぞうのブログを周ってみると、記事内で`#ワード`のように利用している人を見かける。記事内でハッシュタグとして利用しても現状変換されるシステムがないので、変換されるようなスクリプトを組む
Markdownで書いてるから仕方ないね......
const content = document.getElementById('content');
content.innerHTML = marked(content.innerHTML.replace(/>/g, '>').replace(/</g, '
関連記事