作ろう
人工無脳を作ろう
レス文を自分で考えるタイプなど色々あるけど、一番精度が高いのは過去レスそのままコピペだった
2ちゃんねるの過去ログを取得できる限り全部使った辞書型の人工無脳
特定のコテとおしゃべりとかおもしろそう
データが膨大だと今までのように処理効率度外視ではいかなくなるわけか
7 :
アイデア:2009/08/23(日) 02:14:53 ID:4wv/z3Dy
ブレインハレルヤかと思った
MySQLとか使ったらいいのかな?
とりあえずPerl + MySQLでやってみよう
形態素解析にはMecabを使わせてもらいましょう
Perlバインディングもあるので
仕様書だけでうまくいかなかったときのためにパケットキャプチャをダウンロードしておこう
Winsock Packet Editor (WPE) Pro
http://wpepro.net/
Perlの2ch関係の雛形とまで行かないけどソースを貼っておこう
2chでは行頭に半角スペース、半角スペースの連続が使えないため
全角スペースでインデントを表現。コピペしたあとにきちんと直してやらないとエラーがでます
#●のIDとパスワードを受け取ってセッションIDを返すサブルーチン
require "utf8ToSjis.pl";
sub login_maru($$){
my($id, $pw) = @_;
my $ua = LWP::UserAgent->new;
$ua->agent('DOLIB/1.00');
$ua->default_header('X-2ch-UA' => 'Monazilla/1.00');
my $url='
https://2chv.tora3.net/futen.cgi';
my %form = ('ID'=>$id,'PW'=>$pw);
my $req = POST($url,Content => "ID=$id&PW=$pw");
my $res = $ua->request($req);
&utf8ToSjis::convert($res->content);
my $idid = $res->content;
$idid =~ s/SESSION-ID=//g;
$idid =~ s/\n//g;
return $idid;
}
17 :
名無しさん:2009/08/23(日) 02:32:10 ID:???
インデントがおかしい…
#●のIDとパスワードを受け取ってセッションIDを返すサブルーチン
require "utf8ToSjis.pl";
sub login_maru($$){
my($id, $pw) = @_;
my $ua = LWP::UserAgent->new;
$ua->agent('DOLIB/1.00');
$ua->default_header('X-2ch-UA' => 'Monazilla/1.00');
my $url='
https://2chv.tora3.net/futen.cgi';
my %form = ('ID'=>$id,'PW'=>$pw);
my $req = POST($url,Content => "ID=$id&PW=$pw");
my $res = $ua->request($req);
&utf8ToSjis::convert($res->content);
my $idid = $res->content;
$idid =~ s/SESSION-ID=//g;
$idid =~ s/\n//g;
return $idid;
}
よく見たら
$idid =~ s/SESSION-ID=//g;
$idid =~ s/\n//g;
とかだいぶ気持ちの悪い処理が入っているけど、まあいいや
そういえば2chのdat番号はUNIX時間を元に付けられていると思うんだけど、これは被ったりしないんだろうか
板内での衝突はなくても全部ごっちゃにすると衝突しそうな気がする
21 :
名無しさん:2009/08/23(日) 02:38:42 ID:1gD8hb+/
この子、タソキ妄想が01年頃やってた事いまからやりたいのか
というわけで過去ログを取得する際は板ごとにフォルダわけした方がいいかも
#ディレクトリを再帰的にたどりファイル一覧を抜き出すサブルーチン
#取得した過去ログの処理はこれでやろう
use File::Find;
#-- ディレクトリを指定(複数の指定可能) --#
@directories_to_search = ('./');
#-- 実行 --#
find(\&wanted, @directories_to_search);
#--------------------------------------------
#ファイルが見つかる度に呼び出される
#--------------------------------------------
sub wanted{
print $File::Find::dir, '/'; #カレントディレクトリ
print $_; #ファイル名
print "\n";
#フルパスのファイル名
#print $File::Find::name, "\n";
}
25 :
名無しさん:2009/08/23(日) 02:43:37 ID:1gD8hb+/
がんがって。後追いでもクオリテイが高ければいいわけで
流れ確認
文章を入力
↓
形態素解析で特徴的名詞を抽出
↓
あらかじめデータベースに登録してあった文と照合
↓
最もマッチ率が高かった文を返す(同じユーザーにその文はもう使わない)
これだけー
Mecabの形態素解析に空文字を渡すとエラーが出ることもメモしておこう
ボトルネックになりそうなのはデータベースとの照合ですね
最初にマッチしたものを返すARISA方式にするか
全部と照合してからマッチ回数で選ぶ方式にするか
これは実際やってみないとわからないですね
そもそもSQLって何だかよくわかってないし…
Perl -> MySQL
C -> MySQL
これも内部的にはMySQLという処理で同一で速度的には大差ないのか、それとも言語によって差が出るのか
それすらわかりません
>MySQLという処理で同一で速度的には大差ないのか、それとも言語によって差が出るのか
人口無能ならばPerlのほうが激速です。
>>31 ありがとうございます
それならPerlで作って問題なさそうですね
辞書の件です
マッチした名詞数 / 引数の名詞数
これでマッチ率にしようと思います
辞書があまりに巨大になってとても処理速度が間に合わなくなった場合は、
辞書を複数に分割してランダムに一つ選んで検索しようと思います
最低限のマッチ率を決めてもいいですし
今日は2chの過去ログの取得をやってみましょう
過去ログ倉庫
ト--年代
ト--各サーバー
ト--各板
| ト--倉庫番号
| | ト--各スレッドURL
| ト--各subject.txt
| ト--旧倉庫。No2
| ト--999999999 以前
ト--共通板?(どのサーバーのページでも共通で表示されている)
取得するときのフォルダ構造も過去ログ倉庫の形式に倣って問題ないと思います
XMLパーサーとかは使ったことがないので、
作戦としては、
取得したHTMLからURLを抜き出し、そこから目的のものをどんどん開いていく
ことになります
取得したHTMLが$htmlに入っているとすると、
$html =~ s/\n//g; #正規表現で一括処理するために改行を取り除く
my @url;
@url = $text =~ /\b(?:https?|shttp):\/\/(?:(?:[-_.!~*'()a-zA-Z0-9;:&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*@)? #実際はセミコロンまで全部一行です
(?:(?:[a-zA-Z0-9](?:[-a-zA-Z0-9]*[a-zA-Z0-9])?\.)*[a-zA-Z](?:[-a-zA-Z0-9]*[a-zA-Z0-9])?\.?|[0-9]+ #@urlにURLが格納されます
\.[0-9]+\.[0-9]+\.[0-9]+)(?::[0-9]*)?(?:\/(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*(?:;(?
:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)*(?:\/(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-F
a-f][0-9A-Fa-f])*(?:;(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)*)*)?(?:\?(?:[-_.!~*'()a-z
A-Z0-9;\/?:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)?(?:#(?:[-_.!~*'()a-zA-Z0-9;\/?:@&=+$,]|%[0-9A-Fa-f][0
-9A-Fa-f])*)?/g;
この後は@urlに入っているURLリストを振り分けたり、さらに取得したりします
訂正です
$html =~ s/\n//g; #正規表現で一括処理するために改行を取り除く
my @url;
@url = $html =~ /\b(?:https?|shttp):\/\/(?:(?:[-_.!~*'()a-zA-Z0-9;:&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*@)? #実際はセミコロンまで全部一行です
(?:(?:[a-zA-Z0-9](?:[-a-zA-Z0-9]*[a-zA-Z0-9])?\.)*[a-zA-Z](?:[-a-zA-Z0-9]*[a-zA-Z0-9])?\.?|[0-9]+ #@urlにURLが格納されます
\.[0-9]+\.[0-9]+\.[0-9]+)(?::[0-9]*)?(?:\/(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*(?:;(?
:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)*(?:\/(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-F
a-f][0-9A-Fa-f])*(?:;(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)*)*)?(?:\?(?:[-_.!~*'()a-z
A-Z0-9;\/?:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)?(?:#(?:[-_.!~*'()a-zA-Z0-9;\/?:@&=+$,]|%[0-9A-Fa-f][0
-9A-Fa-f])*)?/g;
もうちょっとカッコよく書いてみます
while ($html =~ m{\b(?:https?|shttp)://(?:(?:[-_.!~*'()a-zA-Z0-9;:&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*@)? #これまた一行でお願いします
(?:(?:[a-zA-Z0-9](?:[-a-zA-Z0-9]*[a-zA-Z0-9])?\.)*[a-zA-Z](?:[-a-zA-Z0-9]*[a-zA-Z0-9])?\.?
|[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)(?::[0-9]*)?(?:/(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])
*(?:;(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)*(?:/(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9
A-Fa-f][0-9A-Fa-f])*(?:;(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)*)*)?(?:\?(?:[-_.!~*'()
a-zA-Z0-9;/?:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)?(?:#(?:[-_.!~*'()a-zA-Z0-9;/?:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)?}g){
#何らかの処理
}
データベースにレスを登録する際はレスを一文ごとに分割して登録します
この分割は単純に改行で分けてもいいのですが、
今まさにこの文がそうであるように一行が読点で終わっている場合は次の文まで合わせて一文とするのが適切でしょう
ただし、あまりルールを複雑にするととんでもなく長い文がまぎれてしまったりすることもあるので、
長いよりは短い方がまだマシだという基準でルールを設定します
44 :
名無しさん:2009/08/23(日) 18:49:12 ID:68Vwpmc5
沼津東高校の堰澤 映君かな?
まぁ頑張れ
45 :
ななしちん.:2009/08/23(日) 19:44:59 ID:???
∧∧ /
*〜'´ ̄(''`w´) _ノ Web系言語全然知らねえから正規表現すらサッパリだぜ
UU ̄U U `ヽ.
46 :
ななしちん.:2009/08/23(日) 19:45:47 ID:???
∧∧ /
*〜'´ ̄(''`w´) _ノ とにかく俺様を褒め称えるよう調教しておくように
UU ̄U U `ヽ.
47 :
名無しさん:2009/08/24(月) 00:08:26 ID:???
>>45 とても長いURLの正規表現は丸ごと引用なのでブラックボックスとして使っているというか、自分も理解はしていません
mkdirは同名フォルダがあっても中身は消えないっと
#URLと保存するファイル名を受け取って取得するサブルーチン
sub get($$){
my ($url, $name) = @_;
my $ua = LWP::UserAgent->new;
$ua->agent("Mozilla/4.0");
my $req =
HTTP::Request->new(GET => $url);
$req->header('Accept' => 'text/html');
my $res = $ua->request($req);
&utf8ToSjis::convert($res->content);
&write(">$name", $res->content);
return $name;
}
&utf8ToSjis::convert()は
>>16で紹介したutf8ToSjis.plです
sub read($){
my $name = $_[0];
open my $tmp, "<$name";
my @tmp = <$tmp>;
close $tmp;
return @tmp;
}
sub write($$){
my ($name, $body) = @_;
open my $tmp, "$name";
print $tmp $body;
close $tmp;
}
途中だけどメモ
use LWP::UserAgent;
require "utf8ToSjis.pl";
my $html = join ('', &read (&get ('
http://www.2ch.net/kakolog.html', "tmp/$^T")));
$html =~ s/\n//g;
#&get()でURLをダウンロードして保存し、そのファイル名を返して&read()で配列として返す
#その配列をjoin()で一つの変数に押し込む
#改行を取り除いて正規表現で丸ごと扱えるように
my @server;
while ($html =~ /URL正規表現/) {
if (m{
http://(.*?)/kakolog.html}){
mkdir ("2008/$1");
push (@server, $1);
}
}
my @bbs;
foreach (@server) {
my $server = $_;
$html = join ('', &read (&get ("
http://$server/kakolog.html", "tmp/$^T")));
$html =~ s/\n//g;
if (m{<TD> <A HREF="(.*?)">.*?</A> </TD>}){
mkdir ("$server/$1");
push (@bbs, $1);
}
foreach (@bbs){
my $bbs;
my @datnum;
$html = join ('', &read (&get ("
http://$server/$bbs", "tmp/$^T")));
$html =~ s/\n//g;
}
}
一歩手前までは行ったんだけど過去ログが取得できない…
-ERR もう つかえません
ってエラーが出て取得不能
書き込むときも散々苦労したからなあ
そのうち突然コツを掴むまで気長に待ちますか
今回の試みは巨大化です
容量をまず重視して、取得できる限り取得する
だからスタンドアローンな人工無脳ソフトとしては提供できないと思います
Webサービスのような形になるかと
とりあえず意図的に●のセッションIDを削って送信してみると、『-ERR もう つかえません』
これはセッションID絡みが原因と見てよさそう…でもないか
別のところが原因でセッションID関係なく弾かれている可能性もあるし
『-ERR もう つかえません』は過去ログ閲覧そのもののエラーなのか、●のみに関するエラーなのか
いよいよ最後の手段としてV2Cのパケットを一語一句変えずに送信してみる
gzipで返ってくるため展開しないと読めないが、スレごとに異なっていることだけは確認できた
意外とgzipの解凍の都合いいモジュールが少ないことに驚き
特にWindowsは…
うーん、某所でこの人工無脳(というより巨大データベース)が荒らしに使われるのではないかと懸念されていますね
過去レス丸ごと転載であるためたぶん一番荒らしには使いにくいタイプだとは思いますが、
このご時世ですのでWebサービスの利用者情報は記録し、荒らしに使われた形跡があった場合は適宜情報開示・提出をしますね
一体どれくらいの容量になるんだろう
1スレ200KBと考えてみても
10スレ2MB、10000スレ2GB、10000000スレ2TB
ん、ということはおよそ一万スレくらいしか実用的な検索速度は出ない気が…
とにかくやってみよう。辞書分割は後からでもできる
63 :
名無しさん:2009/08/25(火) 00:36:10 ID:54VmhON4
64 :
名無しさん:2009/08/27(木) 22:33:12 ID:oZ7la1WM
続きはマダァ-? (・∀・ )っ/凵⌒☆〜
65 :
名無しさん:2009/08/27(木) 22:33:12 ID:/X6tQZju
続きはマダァ-? (・∀・ )っ/凵⌒☆〜
66 :
名無しさん:2009/08/28(金) 00:06:38 ID:fhSVFRkA
続きはマダァ-? (・∀・ )っ/凵⌒☆〜
67 :
名無しさん:2009/08/28(金) 20:20:25 ID:JB6MWwZw
続きはマダァ-? (・∀・ )っ/凵⌒☆〜
68 :
名無しさん:2009/08/29(土) 02:42:31 ID:???
続きはマダァ-? (・∀・ )っ/凵⌒☆〜
69 :
名無しさん:2009/08/29(土) 02:42:49 ID:7R4tsRJa
70 :
名無しさん:2009/08/29(土) 10:54:50 ID:???
71 :
名無しさん:2009/08/29(土) 12:11:10 ID:???
72 :
名無しさん:2009/08/29(土) 12:23:29 ID:3nZfS1L4
73 :
名無しさん:2009/08/30(日) 02:51:41 ID:8PnG5AzN
続きはマダァ-? (・∀・ )っ/凵⌒☆〜
74 :
名無しさん:2009/08/30(日) 02:55:50 ID:???
/ ̄ ̄ ̄ `ヽ、
/ / 〉 、、 \
/ // //∧ヽヾ ヽ.
ルヘ/ソr升ミ/ f_ルレヘj
从(([]ハ`ー' (└'Lリ そんなものはない
人从八ル ー-′人
=彡イノ八Vリ≧ r-イ<ミ≧
=彡ヘ/、.:.r┴-「)ーュ_
/`ヽ.:\ト、_x介x_」.:.:゙ト、
/.:.:.:.:.:.:|.:o《く_八___>.:\}
/.:.≠z_:.:〉:.:.:\:.:.:.:.:.:.:.:.:.:.:.:.ヽ
,/:.:.:.:.:.:,-亠ィヘ、:.:.:》.:.:.:.:.:.:.:.:.:.:.:丿
_zー.:./ ヽ.` ーo-:.:.:.:'⌒~´ノ
75 :
名無しさん:2009/08/31(月) 01:35:08 ID:???
76 :
名無しさん:2009/08/31(月) 10:23:18 ID:+b4PUO84
77 :
名無しさん:2009/08/31(月) 23:03:25 ID:???
美しい人生を〜♪限りない喜びを〜♪
78 :
名無しさん:2009/09/01(火) 00:47:11 ID:9kB+8NIB
79 :
名無しさん:2009/09/01(火) 22:37:30 ID:7tvDjzv4
もっぺきち
もっぺきち
80 :
名無しさん:2009/09/02(水) 11:14:24 ID:XE6F2SRG
81 :
名無しさん:2009/09/03(木) 01:47:10 ID:hKt0dxSn
続きはマダァ-? (・∀・ )っ/凵⌒☆〜
82 :
名無しさん:2009/09/03(木) 02:14:12 ID:???
私ゎ紗希といいます。
このまえ彼氏と初Hをしました(>ω<)↑↑
彼氏の家でしました〜。
初めてだったから最初ゎちょっと痛かった(汗)
んで!!彼氏が写メとったのッッ(>д<)
私、恥ずかしいんだけど・・見られるのゎ好きなんだっ♪
だから・・・みんなに見てほしいんだ〜(>A<)↑↑
でも、モロ見られるのゎ嫌だから、
この文章を5箇所に貼ってくれた人のみにみせようと
思いますっ♪
5箇所に貼れば、【★】←がクリックできるようになるの!
こんなのありきたりで誰も信じてくれないかもっ!と思うけど、コレゎ本当なんだよっっ!!!
ぜひ見たい人ゎやってみてねっ(>ω<)↑↑
なんかぁ〜すっごいエロいみたい!
もろアソコとか濡れまくりだった・・・(汗
83 :
名無しさん:2009/09/04(金) 00:38:21 ID:C5TcSGAt
84 :
名無しさん:2009/09/05(土) 02:08:05 ID:WlfCncMa
続きはマダァ-? (・∀・ )っ/凵⌒☆〜
85 :
名無しさん:2009/09/06(日) 10:43:05 ID:???
続きはマダァ-? (・∀・ )っ/凵⌒☆〜
86 :
名無しさん:2009/09/06(日) 20:38:23 ID:RvLdFO7N
続きはマダァ-? (・∀・ )っ/凵⌒☆〜
, -−/´\
/イ/^^)))ノ
ヽ( ^ิ౪^ิ)< みなさんねるじかんですよー
.彡 __ノミ
88 :
213.199.192.82:2009/09/08(火) 19:56:00 ID:qKEPtSl0
ドッカン
ドッカン
☆ゴガギーン
.______
. | | |
∩∩ | | | ∩∩
| | | | | | | | | | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ,,) | | | (・x・ )<おらっ!出てこい、モペキチ!!
/ つ━━"....ロ|ロ . | l |U \___________
〜( / | | |⊂_ |〜
し'∪ └──┴──┘ ∪
89 :
194.44.125.172:2009/09/09(水) 01:44:06 ID:ejDgGNY5
人
(__) ウンコー
(__) (´⌒(´⌒
(・∀・ ) (´⌒(´≡
O┬O ノ` ≡≡≡(´⌒;;;
◎┴し-◎ (´⌒(´⌒;;
90 :
名無しさん:2009/09/09(水) 02:52:07 ID:1XqoQjON
_____________
| (^o^)ノ | <おやすみー
|\⌒⌒⌒ \
\|⌒⌒⌒⌒|
 ̄ ̄ ̄ ̄
91 :
名無しさん:2009/09/09(水) 07:17:45 ID:xPDkgK9X
く
92 :
117.254.72.195:2009/09/09(水) 23:08:30 ID:tWLDMOYn
ドッカン
ドッカン
☆ゴガギーン
.______
. | | |
∩∩ | | | ∩∩
| | | | | | | | | | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ,,) | | | (・x・ )<おらっ!出てこい、モペキチ!!
/ つ━━"....ロ|ロ . | l |U \___________
〜( / | | |⊂_ |〜
し'∪ └──┴──┘ ∪
.______
. | | /|
∩∩ | | / .| ∩∩
| | | | | | 人| | | | | |
( ・x・ ) | .(_.| | ( ・x・)
/ つ━━ (___| | l iJ
〜( / .ーコンウ (・∀・| | | |〜
し'∪ └──O┬ | / U ∪
.◎┴ |/
>>32 すみません。
色々と書こうと思っていたのですが、忘れてしまいました。
既に廃墟かもしれないけれど勝手に落書きしていきます。
ごめんなさいです。
Datをそのまま辞書に流用する、PPM様のものとほぼ同じ仕様の人工無能を
自分も作ったことがありましたが、結果としてボットなのか誤爆なのか
荒らしなのかほとんど判別の付かない、タイトルにあるような
「幸せになる」という目的にそぐわないものでした。
人工無能はやはり、いくら膨大な辞書ファイルが用意されていたとしても
肝心カナメとなる学習エンジン(パターンマッチ)が少しでもアレだと
会話がほぼ成立しないので、「過去レスそのままコピペ」が一番精度が高い
とは言えないと思います。。
>>3
それとですね、
Mecabと2chログは(製作した僕自身の実感として)あまり
相性がよろしくないと思うので、形態素解析に関しては
2chログの傾向の研究(かなり大事!)を兼ねてもっとぬるい感じの物を
自作されますとPPM様もより幸せになれそうです。
>>41にあるURLの取得ですと、過去ログ倉庫内では恐らく作動しません。
相対パスだと絶対形式に変換しなければならないためです。
ターゲットとなるURLをベースにして(要するにカレントディレクトリの判別)
スキームやホスト、パスなど出来れば#まで細かく、あらかじめ分割しておくと
のちのち幸せになれますと思います。
(途中で飽きて人工無能以外に流用した場合とかに活用できます・・・)
不具合が生じるのは
>>38の作戦で行く場合ですが。
あと、仕様をあんまりというか、理解していないので、全体的にすごくフワフワした
感じというか、すごく頓珍漢なことを言っているかもしれません。申し訳ありません。
ごめんなさい。
101 :
名無しさん:2009/09/10(木) 01:00:08 ID:???
あほ
思うに、
恐らくPPM様は●を利用した膨大な過去ログをただ使いたい、というか
過去ログで何か面白いものが出来れば人工無能でも何でも良いと
お考えかもしれないので、僕の上のはあまり参考にならないかも、ですね・・・。
(でも、このままの仕様だと
>>95みたいな不本意な感じになっちゃうと思います)
ただ、PPM様が
>>3-4でおっしゃるように、過去ログが多ければ多いほど
会話の精度をより高めることが出来る別の作戦もあったので、ああ
今思うとそっちを書けば良かったです・・・。
脈絡なく無駄に長くなってしまったので、今日はこの辺で。
レスポンス等があったらまた書きます。失礼します( - ω -)
104 :
59.95.8.66:2009/09/10(木) 20:17:59 ID:fH6N83r8
なんかここ見てたらchatbot作りが面白そうに思えてきたので
なんか作ってみることにしたよ。
105 :
名無しさん:2009/09/10(木) 20:23:40 ID:???
106 :
名無しさん:2009/09/12(土) 03:46:51 ID:???
0
107 :
名無しさん:2009/09/13(日) 22:18:54 ID:0+dV6c0a
108 :
名無しさん:2009/09/15(火) 13:40:55 ID:pb0CkPAI
続きはマダァ-? (・∀・ )っ/凵⌒☆〜
109 :
名無しさん:2009/09/15(火) 14:16:16 ID:CuVQqw21
09042070912
掛けんと殺す
110 :
うげさん:
人
( ´-`) <つう(ry