koruri

データベース概要 †

koruri は収集した文章や単語をデータベースにどかどか突っ込んでいきます。

そのデータベース上で、さらに分解したり解析したりといった作業を行い、ペルソナジェネレーターはその結果を引くことで自動文章を生成します。

作者はデータベースをほとんど使ったことが無いので設計的にはヘボいと思います。

データベース構成 †

システム構成 †

データベースは自宅サーバー上で動いている Mysql を使用しています。

最初は sqlite でテストしていましたが、自動収集と解析処理を同時に複数のスクリプトから行うあたりに不安があったので Mysql に移行しました。

データベーステーブルリスト †

koruri DB は以下のテーブルを持っています。

tweet_log
収集したtweetを放り込むテーブル。
sentence
tweet1つが複数の文で構成されていた場合それを1短文に分割してそれぞれをレコードとして保持します。このときURL等文章情報にならないものは取り除いています。
hatena_keyword
はてなキーワードの語彙リストとして公開されているものを突っ込んであります。ここにある単語は無条件に有効な名詞であると見なすための辞書。最初はWEBから引いていましたが重たいのでキーワードリストとしてDBに持つことにしました。
noun_bank
tweetやはてなキーワードから抽出された「名詞」を蓄積、分析していくテーブルです。名詞の認識精度はmecab次第といったところです。
template
sentenceから名詞部分をwild cardで塗りつぶした文章テンプレートです。
template_ruripeco
るりぺこ。用、拡張テンプレート(templateとのリレーショナルで使用)
noun_follow
文を名詞とそれ以外に分けたときの「それ以外」を集めるテーブル。
noun_follow_link
文を名詞とそれ以外に分けたとき名詞の後に続く「それ以外」のリンク状況を記録しておくテーブル。
trend_word
Twitterでこの頃流行の単語、t_cloud とか Buzztter とかを参考にホットな所を拾っておく。
property
るりぺこ。用ステート保存テーブル。今のところ、発言タイミングまで指折り数える変数用。
ruripeco_talk
るりぺこ。が発言した文と時間をとっておくことにした。
ruripeco_mention
るりぺこ。宛のmentionを記録する。返信までの記憶用。
noun_precede_link
名詞以外の文節から、続く名詞の統計情報。
trend_word
Twitter上で話題の単語リスト。ruripecoの発言を生成するためのタネとなる。
hot_url
はてなブックマーク新着から拾ったおすすめページのネタ。ruripecoがたまにおすすめしてくる情報をストックしておく。

データベース詳細 †

tweet_log †

twetter の log を登録しておくテーブル。

idincremental INTテーブル一意なID
textTEXTtweet
timeINT発言時間1970/01/01からの秒数、UNIXスポットタイム
authorTEXT発言者名
screen_nameTEXT発言者、スクリーンネーム
listnameTEXTリストTLの記録だった場合、そのリスト名
processINTパース済みフラグ、0=未処理,1=sentence抽出済み

sentence †

tweet分解した文を登録しておくテーブル。

idincremental INTテーブル一意なID
textTEXT単語
link_prevTEXT(未使用)
link_nextTEXT(未使用)
tweet_idINT分解前 tweet log の ID
templateINTテンプレート化したもののtemplateテーブル内ID
processINTパース済みフラグ、0=未処理,1=noun抽出済み,2=テンプレート加工済み

hatena_keyword †

keyidINTはてなキーワードについているレコードID
wordTEXT単語
yomiTEXTヨミガナ

noun_bank †

収集した名詞を登録しておくテーブル。

idincremental INTテーブル一意なID
wordTEXT単語
yomiTEXTヨミガナ
scoreINT採用スコア(0で未評価、マイナスでNGワード)
appearINTtweetでの登場回数カウント
usedINT(未使用)
hatenaINTはてなキーワードにも存在するなら1、しないなら0
lastupdateINT最近の更新時間、UNIXスポットタイム
nameINT人名かもしれないスコア、上限100点、マイナスで未評価
superTEXTはてなキーワードの関連語から登録されたときその連想元単語
similerTEXTはてなキーワード関連語、複数あるときはカンマ区切り

noun_link †

1センテンスの中で出現した名詞同士は後に続けて出やすいということで、その出現頻度と後続単語を登録しておくテーブル。

idincremental INTテーブル一意なID
nounidINT名詞、noun_bank内のid
linkINT連続して出現しうる名詞、noun_bank内のid
hatenaINTはてなキーワード関連用語由来なら1、そうでないなら0
appearINTこの組み合わせでこれまでに登場した回数
lastupdateINT最近の更新時間、UNIXスポットタイム

template †

名詞を「(*)」で塗りつぶした文章テンプレートを登録するテーブル。

idincremental INTテーブル一意なID
templateTEXTテンプレート文字列
scoreINT評価値、元文章の名詞文字長が長いほど高スコア、マイナスでNG利用不可
nounnumINT文章中の名詞(ワイルドカード)個数、初回登場文時のもの
countINTtweetでの登場回数カウント
emotionINT(未使用)
linkTEXT後に続きやすいテンプレートのID(未使用)

template_ruripeco †

名詞を「(*)」で塗りつぶした文章テンプレートを拡張。 人名が入りやすいところは「(+)」、人名が入りにくいところは「(-)」で示す。「(*)」の時は全ての名詞候補が対象となる。

idINT元の template ID
template_rankTEXTランク付きテンプレート文字列

noun_follow †

名詞とそれ以外で分けたときの「それ以外」にあたる部位を記録しておく。

主に動詞や接続詞などが含まれる。

idincremental INTテーブル一意なID
wordTEXT名詞に続く文節
scoreINT採用スコア(0で未評価、マイナスでNGワード)
appearINTtweetでの登場回数カウント
lastupdateINT最近の更新時間、UNIXスポットタイム

noun_follow_link †

名詞のあとに続く文節の統計情報。

idincremental INTテーブル一意なID
nounINT名詞のnoun_bankにおけるid
followINTnounの後に続く文節のnoun_followにおけるid
appearINTtweetでの登場回数カウント
lastupdateINT最近の更新時間、UNIXスポットタイム

noun_precede_link †

名詞以外の文節から、続く名詞の統計情報。

idincremental INTテーブル一意なID
nounINTprecedeの後にくる名詞のnoun_bankにおけるid
precedeINTnounの前に来る文節のnoun_followにおけるid
appearINTtweetでの登場回数カウント
lastupdateINT最近の更新時間、UNIXスポットタイム

property †

koruriやruripecoが動作する際の雑多な記憶領域。キーバリューストアード。

keynameTEXTプロパティキー
valueINT数値value
str_valueTEXT文字列value

ruripeco_mention †

ruripeco宛のコメント(@ruripeco)をもらったときに処理するまで置いておくテーブル。

idincremental INTテーブル一意なID
userTEXTTweetを送ってくれた人のスクリーンネーム @〜 にして返信する
textTEXTruripecoへ寄せられたTweet
timeINTmentionが投稿された時間
processINT処理済みフラグ 0で未処理、1で返信済み

trend_word †

Twitter上で話題の単語リスト。ruripecoの発言を生成するためのタネとなる。

idincremental INTテーブル一意なID
wordTEXT話題の単語
lastupdateINT最近の更新時間、UNIXスポットタイム

hot_url †

はてなブックマーク新着から拾ったおすすめページのネタ。ruripecoがたまにおすすめしてくる情報をストックしておく。

idincremental INTテーブル一意なID
urlTEXTおすすめしたいページのURL
titleTEXTページタイトル
genreTEXTはてなブックマークでのカテゴリー名
checktimeINTRSSから拾い上げた時間
processINT処理済みフラグ 0で未処理、1で既につかったURL

Last-modified: 2017-11-06 (月) 01:22:22 (3271d)