タイトルの一部を変えるbotについて

[twitter:@titleReplaceBot]

概要

「○○のタイトルの一部を△△に変えると××」という形式のハッシュタグに対して、
データベースに保存された○○のタイトルの一部を△△に変えて15分おきにつぶやく。

詳細

タイトルデータベース

現在、{アニメ,小説,ゲーム,映画}のタイトルを利用している。
データの収集元は、ニコニコ大百科アニメ作品一覧とは (アニメサクヒンイチランとは) [単語記事] - ニコニコ大百科等)。
Wikipediaでなくニコニコ大百科を選んだ理由はWikipediaよりもニコニコ大百科の方がネットユーザーが好きそうな作品に限定されていると思ったから。

ハッシュタグデータベース

取り敢えず日本語ハッシュタグのツイワンから基本となるハッシュタグを収集しておく。
また、次項の方法でハッシュタグデータベースに含まれていないハッシュタグを用いてつぶやいた場合、それをデータベースに加える。

ハッシュタグの選び方

第1候補(リプライ)
ツイートをする際、
自分へのリプライとして「○○のタイトルの一部を△△に変えると××」という形式(実際にはもう少しゆるい)のハッシュタグを含むツイートがあった場合、
そのようなもので最新なもののハッシュタグを利用する。
(15分以内に2つのリプライがあった場合、古いものは捨てているので若干問題がある)
第2候補(検索)
ツイートをする際、
「タイトルの一部を」とツイート検索して、今回対応している形式をしたハッシュタグを見つけた場合、
そのようなもので最新なもののハッシュタグを利用する。
第3候補(データベース)
ハッシュタグデータベースからランダムにハッシュタグを選ぶ。

タイトルの変え方

△△を置換語と呼ぶ。
取り敢えず置換語は名詞であると仮定している。
タイトルを形態素解析し、名詞の1つを被置換語として置換語に変える。

生成されたタイトルのペナルティ

置換語をローマ字表記したものと、被置換語をローマ字表記したものとの編集距離を計算し、生成されたタイトルのペナルティとする。
通常の編集距離は、挿入、削除、変換が全てコスト1だが、今回は直感的によりよい尺度にするため少し調整した。
また、有名なタイトルのほうが良いと考え、Web検索のヒット数が少ないほどペナルティが大きくなるようにした。

つぶやくもの

生成されたタイトルをペナルティが小さい順に並べた時、上位30件からランダムに選びつぶやく。
ただし、生成されたタイトルが元のタイトルと同一なものは除外する。

課題

形態素解析

現在Yahooの形態素解析を利用しているが、タイトルは日本語として特殊なものも多く、うまくいかないものが多い。
タイトルデータベースは(4半期くらいは)固定なので、手動で単語分けや読みがな付けをしても良いかもしれない。

ツイートの固定化

ハッシュタグが限定されていることと、ツイートアルゴリズム的に各ハッシュタグに対して30件しかツイートのバリエーションが無いことから、
ツイートが固定化される。
ハッシュタグの自動生成やツイートアルゴリズムの見直しにより改善される可能性がある。

置換方法

まだ単純なので何かとありそう。
でも改善は難しそう。