구글이 말을 한다. google talks

aero의 이미지

인터넷에서
http://douweosinga.com/projects/googletalk
를 보고 착안하여 만들어 봤습니다.

코드는 머리에 있는거 생각 없이 쏟아부어서 dog table입니다 :)
좀 정리해서 올려볼까도 생각했지만 어느정도 동작하는데 의의를
두고 이런 아이디어를 활용한 재미있는 놀이가 많이 나오길
바랍니다.
제가 다시 봐도 code가 dirty 하군요 :)

작동 방식은 구글에서 검색될것 같은 문장을 입력하면
결과 중에 다음 단어를 선택하고 그 결과를 이전의 바로 앞단어와
같이 검색해서 검색결과중 랜덤으로 다음 단어를 선택하고
없으면 하나의 단어만으로 검색해서 위 절차를 계속하고
그래도 없으면 끝나는 방식입니다.

랜덤으로 단어를 선택하니 어떤 문장이 나올지 모르니
이것 저것 넣어서 구경하고 있으면 정말 재밌네요.

#!/usr/bin/perl

use LWP 5.65;
use URI::URL;

my $debug=0;
my $query = $ARGV[0];

print $query."\n";
my $close_counter=0;
while(1)
{
    $query =~ m/\ (.*?)$/;
    print "last_word :".$1."\n" if $debug;
    $query = query_word($query);
    unless($query)
    {
	$query = $1;	
	$close_counter++;
	if($close_counter>1) { exit; }
    }
    else
    {
	print $query."\n";
	$query = $1." ".$query;
	$close_counter=0;
    }
}

sub query_word
{
    my $q = $_[0];
    $q = '" '.$q.' "';
    my $unencoded_url = 'http://www.google.com/search?hl=ko&num=10&q='.$q;
    my $url = URI::URL->new($unencoded_url);

    print "unencoded: " . $unencoded_url ."\n" if $debug;
    print "encoded: " . $url->as_string . "\n" if $debug;

    my $browser = LWP::UserAgent->new();
    my $response = $browser->get($url->as_string, 'User-Agent'=>'Mozilla' );
    if($response->is_success)
    {
	my $res = $response->content;
	$res =~ s/<b>//gs; 
	$res =~ s/<\/b>//gs;
	$res =~ s/\n//gs;
	print "Response:\n$res\n" if $debug;
	#$res =~ m/<\/a><br><font size=-1>(.*?)<br><font color=#008000>/i;
	my @next_words = ();
	while($res=~m/<\/a><br><font size=-1>(.*?)<br><font color=#008000>/g)
	{
	    print $1."\n\n" if $debug;
	    my $s = $1;
	    my $next_word = get_next_words($s,$q);
	    if ($next_word) {push(@next_words,$next_word);}
	    pos($res)+1;
	}
	print "@next_words ".($#next_words+1)."\n" if $debug;
	my $select = rand($#next_words+1);
	print "selected :".$next_words[$select]."\n" if $debug;
	return $next_words[$select];
    }
    else
    {
	print $response->error_as_HTML if $debug;
    }
}

sub get_next_words
{
    my($text,$q) = @_;
    $q =~ s/"//g;
    print "query :".$q."\n" if $debug;
    $text =~ s/[a-zA-Z_&#|;:<>,?.~\*\^\$\[\]\-\+()\/=]//g;
    print "text :".$text."\n" if $debug;
    $text =~ m/($q)(\S*?)\ /;
    print "match 1 |".$1."| 2 |".$2."| 3 |".$3."| 4 |".$4."|\n" if $debug;
    return $2;
}

실행
google_talks.pl "내가 보건데"
결과

내가 보건데
한국의
대학이
어떻게
수용할
경우에는
양도세를
내야
한다
세금을
내야
하지
않겠소이까
자칭
선배라는
사람의
입장도
생각하는
도량은
있어야지요
20050109
33

실행
google_talks.pl "오늘밤은 우리"
결과

오늘밤은
둘만
도망쳐
버릴수도
있어
죽는
날까지
떼어
놓지
말라
여행운은
목적하는
바를
성취하기
위해
부모가
죄인인
경우
재판할
수
있나요
관리자
패스
워드를
열어
확인할
수
있습니다
카드번호
및
비밀번호를
잃어
버렸습니다
버스에서
나처럼
자면
!
글쓴이
제
Forums: 
returnet의 이미지

재밌네요

Quote:
returnet@returnet:~/code$ ./googletalk.pl 사랑합니다
사랑합니다
이런
모습
흔치않죠
galien의 이미지

returnet wrote:
재밌네요
Quote:
returnet@returnet:~/code$ ./googletalk.pl 사랑합니다
사랑합니다
이런
모습
흔치않죠

최고네요

이런 모습흔치 않죠...

mnnclub의 이미지

[root@localhost ~]# ./test "낭자 "
낭자
좋아하는
마음은
물이
동으로
흐르면
남강으로
들어가
낙동강이
부산시역을
관통하고
개의
진화에
대해서는
이제까지
말해온
것보다
반군
지도자
안타우로
우말라

elanoia의 이미지

[azure@eodume]$ talk.pl "바보"
바보
[azure@eodume]$ 

:?

음... 이제 부터 생각해 봐야겠다.

7339989b62a014c4ce6e31b3540bc7b5f06455024f22753f6235c935e8e5의 이미지

import sys,re,urllib,random;c,h,e=re.compile,random.choice,"euc-kr";urllib.URLopener.version,d,s,g="Mozilla/5.0",c("(<td class=j>|<br>)<font size=-1>(.*?)<font color=#008000>",re.S),c("[a-zA-Z_&#|;:<>,?.~*^$[\]\-+()/=`]|</?br?>"),lambda q:urllib.urlopen("http://www.google.com/search?hl=ko&num=10&ie=%s&oe=%s&q=%s"%(e,e,q)).read()
def x(q):sys.stdout.write(q+" ");w=[];[r for r in d.findall(g(q))if w.extend(s.sub("",r[1]).split())];x(h(w))
x(sys.argv[1])

파이썬 버전입니다. ;)
(에구구... 힘들어요)
aero의 이미지

elanoia wrote:
[azure@eodume]$ talk.pl "바보"
바보
[azure@eodume]$ 

:?

goolge 검색 url에 num=10 을 10,20,30,50,100 의 숫자중
적절히 바꿔서 더 많은 검색결과를 가져오도록 해서 해보세요

그리고 첫 검색어에 한 단어만 넣는것 보다 "로 묶어서 여러단어를
넣는것이 좋습니다.

내부적으로는 google에 쿼리보낼때 아규먼트로 준 문장의
양쪽에 공백을 넣고 "를 붙여서 정확히 매칭되는 문장을 검색하도록
합니다.

결과를 보면 그나마 앞뒤로 대충 뜻이 맞는 경우도 있어보이는
이유가 첫 쿼리 이후에는 계속 두 단어식 묶어서 그 뒷단어를
검색하기 때문에(그 결과가 없다면 최종단어로 하나로 시도)
문장구조상 문맥에 맞는 단어가 선택될 확율이 높기 때문이죠.

chadr의 이미지

ㅎㅎ 재미있군요..:)

-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.

자룡의 이미지

예전 허영만씨의 만화 블랙홀(내지는 화이트홀)에 나왔던 이야기가 생각이 나네요.
원숭이들에게 타자기를 주고 하루종일 아무런 키나 누르며 놀게했을때
세익스피어의 글이 나올 확률에 대한 이야기 였는데..
구글이 세익스피어의 문장을 만들어낼 확률이 좀 더 커 보이는군요 :)

몇일 전 좌변기에 염료를 넣고 물을 내릴때를 찍은 사진으로
전시회를 개최한 미국의 사진작가에 관한 뉴스를 봤었는데
구글에게 시를 쓰게 만들고 시집을 내서 돈을 벌어볼까요? ^^;

-----
이글을 읽는 모든 이에게 평화가 함께 하기를... ^^;

익명 사용자의 이미지

[iamha0@cass iamha0]$ ./google_talks.pl "미안하지만"
미안하지만

머리에

쌌어

[iamha0@cass iamha0]$

Fe.head의 이미지

Can't locate LWP.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at ./taks.pl line 3.
BEGIN failed--compilation aborted at ./taks.pl line 3.
[ch.leem@will ~]

$ head -3 taks.pl
#!/usr/bin/perl

use LWP 5.65;

이건 무슨에러인가요?

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

aero의 이미지

fehead wrote:
Can't locate LWP.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at ./taks.pl line 3.
BEGIN failed--compilation aborted at ./taks.pl line 3.
[ch.leem@will ~]

$ head -3 taks.pl
#!/usr/bin/perl

use LWP 5.65;

이건 무슨에러인가요?

LWP 모듈을 설치해주셔야 합니다.

perl -MCPAN -e shell 'install 모듈이름'
명령으로 설치하시면 됩니다.

자세한건
http://www.cpan.org/misc/cpan-faq.html#How_install_Perl_modules

ed.netdiver의 이미지

fehead wrote:
Can't locate LWP.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at ./taks.pl line 3.
BEGIN failed--compilation aborted at ./taks.pl line 3.
[ch.leem@will ~]

$ head -3 taks.pl
#!/usr/bin/perl

use LWP 5.65;

이건 무슨에러인가요?

LWP는 libwww-perl이라네요.
저도 같은 에러를 봤었거든요.ㅋㅋ
저도 이 쓰레드보고서야 emerge하면서 알게되었습니당^^;
주의 emerge lwp하심 안됩니당^O^//

--------------------------------------------------------------------------------
\(´∇`)ノ \(´∇`)ノ \(´∇`)ノ \(´∇`)ノ
def ed():neTdiVeR in range(thEeArTh)

Fe.head의 이미지

qed wrote:
fehead wrote:
Can't locate LWP.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at ./taks.pl line 3.
BEGIN failed--compilation aborted at ./taks.pl line 3.
[ch.leem@will ~]

$ head -3 taks.pl
#!/usr/bin/perl

use LWP 5.65;

이건 무슨에러인가요?

LWP는 libwww-perl이라네요.
저도 같은 에러를 봤었거든요.ㅋㅋ
저도 이 쓰레드보고서야 emerge하면서 알게되었습니당^^;
주의 emerge lwp하심 안됩니당^O^//

apt-get install libwww-perl

한방에 해결했습니다. :lol:

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

익명 사용자의 이미지

exman@eppe exman $ perl google_talk.pl 어쩌면
어쩌면
우리는
강팀이다
!

재밌네요 ^^

익명 사용자의 이미지

hiseob@dgn-cs ~ $ ./google.pl 어쩌면
어쩌면
우리는
그
까닭으로
이
몸을
치유해줄
수
있는
방법은
없나요
조회
버튼을
만드는
프로그램
사용자가
개인정보를
입력해야만
이용이
가능합니다
농장의
상점에서
상품구매
시
부여되는
번호로
숫자
6자리
이상
8
익명 사용자의 이미지

hiseob@dgn-cs ~ $ ./google.pl 미안하지만
미안하지만
지금
교육이
아직도
미진한
점이
있음을
자인하는
법원에
대한
신뢰와
연관되는
두가지의
다른
색을
느끼게
한다
효과적인
효과적인
준비과정을
거쳐야만
합니다
따라서
많은
선원은
총면적
2500평에
크고
작은
어려움이
많습니다
특히
진학률이
높고
캐나다에서
생긴일
아래
있는
자들에게는
내가
율법
아래
있는
021125
익명 사용자의 이미지

hiseob@dgn-cs ~ $ ./google.pl 미안하지만
미안하지만
지금
교육이
아직도
미진한
점이
있음을
자인하는
법원에
대한
신뢰와
연관되는
두가지의
다른
색을
느끼게
한다
효과적인
효과적인
준비과정을
거쳐야만
합니다
따라서
많은
선원은
총면적
2500평에
크고
작은
어려움이
많습니다
특히
진학률이
높고
캐나다에서
생긴일
아래
있는
자들에게는
내가
율법
아래
있는
021125
익명 사용자의 이미지

./googletalk.pl 미안하지만
미안하지만

머리에
똥쌌어
등이
있다
충생균류로
곤충류에
붙는
곰팡이
진드기가
서식하지

-_-aaa

익명 사용자의 이미지

이거 무한루프 돌기도 하는군요

[sequoia@lite sequoia]$ ./googletalks.pl "문화관광부 관광자료"
문화관광부 관광자료
문화관광부
관광자료
문화관광부
관광자료
문화관광부
관광자료
문화관광부

hyangii의 이미지

returnet wrote:
재밌네요
Quote:
returnet@returnet:~/code$ ./googletalk.pl 사랑합니다
사랑합니다
이런
모습
흔치않죠

를 기대했는데... ㅎ
Quote:

/google_talks.pl 사랑합니다
사랑합니다
이런
식의
기사

쓰시마시죠
제발
나무님
블로그에서
트랙백
받는쪽
인코딩을
자동으로
감지해
필요한
조치를
하겠습니다
8
개인정보의
보유기간

이용기간
연장을
하여
드리도록
하겠습니다

only2sea의 이미지

옛날에 자바 공부하면서 비슷한 걸 만들어봤지요.
구글 쓰는게 아니라 구글 역할까지 프로그램이 하는거죠.
일단 읽을 자료를 주면 해쉬테이블에 리스트 달았던가...
해서 각각의 단어의 뒤에 오는 단어의 종류와 빈도를 저장한 거죠.
그런 다음 문장의 처음에 시작하는 단어들을 따로 리스트에 저장하
고 거기서부터 선택해서 돌리는 거죠. 빈도수를 확률로 해서 랜덤으
로... 다음.. 다음.. 해서 문장의 마지막이 될 확률등도 들어가서 계
산되고요.. 물론 읽을 자료가 좀 길어야 되어요.. 영웅문을 읽게 하
고 말을 해보라고 할 때가 제일 재미있었던거 같네요. 1~2권 정도
면 재밌는데 너무 많이 읽게하면 너무 자주 삼천포로 빠져서 재미
가 없고 적당히 읽히면 한두군데에서 삼천포로 빠져서 더욱 재미가
있지요. 좀 더 발전시킨 것으로는 대화하는 것인데 입력한 문장에
서 잘 안나오는 단어(이런 단어를 중요 단어로 취급하겠죠.)로 검색
해서 주변 문장을 따내는... 가령...

사용자> 나는 구양신공을 봤다.
라고 하면 "구양신공을" 이라는 단어가 제일 적게 나왔으므로 적게
나온 것일수록 확률을 높게 줘서 랜덤하게 찍으면 사용자의 3단어
중에서 "구양신공을" 이라는 단어가 선택될 확률이 제일 높겠죠. 그
리고 그게 들어간 문장으로 뽑는겁니다.

컴퓨터> 구양신공을 익혔습니다.
뭐 대략 이런식으로 대답을 하지요. 간혹...
컴퓨터> 구양신공을 익힐 수가 있다니 어찌 그럴 수 있겠소이까?
이러기도 하죠...

notpig의 이미지

notpig@se:~$ perl talks.pl "리눅스와 유닉스"
리눅스와 유닉스
운영체제에서
지원하는
서비스입니다
2
서비스명
무료법률상담

Fe.head의 이미지

$ ./taks.pl "당신을"
당신을
사랑합니다
』
김성묵
안경사
자신이
적립한
현황을
볼
때
말이죠
유지인이가
좋습니다
내
임기가
3년
후에
나는
실종失踪
6명이었고
수업은
원어민
강사에
열성을
보이는
이라면
폐인으로
불릴
만하다는
생각이다
¤

움.. 처음에는 좋았는데 끝은.. 영..

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

purluno의 이미지

$ google_talks.pl "일본이 독도를"
일본이 독도를
문제삼기
시작하는것은
한류열풍
한국인
한국사랑
‘각별’
20050401
19
prolinko의 이미지

$ ./talk.pl "밥먹고 합시다"
밥먹고 합시다
후회는
하지
않을
것
같은
늘
하는
말이지만
빚도
져서는
안되는
이유가
뭘까요
질문2
안녕하세요
전
울산리눅스유저그룹
회장을
비롯해
강창오
사장
김상훈기자
국제
ㆍ
사설칼럼
ㆍ
의학과학
ㆍ
문화연예
ㆍ
스포츠
ㆍ
사람속으로
ㆍ
의학과학
ㆍ
문화연예
ㆍ
스포츠
위클리
박찬호
5선발
30명중
29위
20050407
15

혹시 울산리눅스유저그룹 활동하시는 분 계신가요 :P

./talk.pl "뭐 입을까"
뭐 입을까
고민하다
결국
가출해버린
소녀도
있었다
구비구비
거복을
이룬
산줄기는
백리나
뻗쳐있고
온
산은
다가올
봄맞이로
분주하다
진달래
망울은
물이
오르기
시작한
분으로
잘
알고
있는
내용과
시사성
있는
비교적
단순하고
빠르게
만들
수
있는
컴퓨팅
파워를
필요로
하는
것으로
가급적
피해야
한다빛이
notpig의 이미지

notpig@se:~$ perl talks.pl "영어가 싫어"
영어가 싫어
보인다면
영어
자막끄고
다만
즐겨보세요!

notpig@se:~$ perl talks.pl "영어가 싫어"
영어가 싫어
수학과를
왔습니다
잘
아시는
분
가르쳐
주시면
감사하겠습니다
→

notpig@se:~$ perl talks.pl "공부해볼까?"
공부해볼까?
하는데
과로한
상태에선
다람쥐
쳇바퀴
돌리기
◎

딴분들은 길게 나오네요...전 그렇게 길게 않나오는데..
그런데 지금 은근히 재미 붙었습니다..ㅋㅋㅋ

HongiKeam의 이미지

yaboy@vent:~$ ./google_talks.pl 사랑은
사랑은
타월

ㅋㅋㅋㅋ


----
God take what you would.

puzzlet의 이미지

자룡 wrote:
예전 허영만씨의 만화 블랙홀(내지는 화이트홀)에 나왔던 이야기가 생각이 나네요.
원숭이들에게 타자기를 주고 하루종일 아무런 키나 누르며 놀게했을때
세익스피어의 글이 나올 확률에 대한 이야기 였는데..

http://en.wikipedia.org/wiki/Infinite_monkey_theorem

발발다빠따반반나다발딸발발다빠따따맣발발다뿌
멓터벅더떠벋떠벌더벌벌떠벌떠더법벍떠더벌벌떠

죠커의 이미지

prolinko wrote:

./talk.pl "뭐 입을까"
뭐 입을까
고민하다
결국
가출해버린
소녀도
있었다

놀랍군요!!!

thevip의 이미지

재밌네요 ㅋ

Every man dies. But not every man truly lives.

returnet의 이미지

Quote:
returnet@returnet:~/code$ ./googletalk.pl 나는
나는
어떤
블로거일까
당신은
사교적인
블로거입니다!

Quote:
returnet@returnet:~/code$ ./googletalk.pl 너는
너는
찍혔다
ㅋㅋㅋ김주임

갈 수록 재밌군요 : )

까뮤의 이미지

[kam@wing:~]$ ./gtalk.pl 까뮤
까뮤
회사는
불특정다수
사용자에
대한
경고입니다
나만이
가지고
있는
만화책
리스트
유메지님의
모습은곧

흠.. 회사가 있었군요 :roll:

me.brain.flush()

Risty의 이미지

./google_talks.pl 외계인
외계인
문제에
대해
언론이나
미디어가
미화시키는
것도
성공한
사람의
85%는

여기서 갑자기 더 이상 아무 메시지도 나오지 않고 멈춰 있었습니다. 그렇다고 프롬프트로 떨어지지도 않았습니다. 그 전 수십번의 시도에서는 없던 일입니다.

정말로 진실은 저 너머에 있는 것일까요? :shock:

익명 사용자의 이미지

익명 사용자의 이미지

./google.pl 섹스
섹스
공짜

웃겨 죽겠어요 ㅡㅜ

익명 사용자의 이미지

./google.pl 자살
자살
사이트를
계속
업데이트하고
있습니다
닫기
도움말
단추가깨져보여서여

익명 사용자의 이미지

[dice2:23:16:11|opensrc]$ ./google.pl 사랑한다구
사랑한다구
했잖아
다시
해봐
어디가
맛있나
알아보시는
분들도
계실거고요
저는

갑니다
죽어도ㅎㅎㅎ

kaos009의 이미지

# perl google_talks.pl "사랑해"
사랑해
사랑해
사랑해
“참

변화를 추구하며....

kaos009의 이미지

$ perl google_talks.pl "독도는"
독도는
한국

변화를 추구하며....

졸곰의 이미지

$ ./google_talk.pl "날라토스"
날라토스
짱

최고! >_<)=b

Running in the 90's
http://spbear.com

익명 사용자의 이미지

./talk.pl "뭐 입을까"

doldori의 이미지

spbear wrote:
$ ./google_talk.pl "날라토스"
날라토스
짱

최고! >_<)=b


어! 저 강민 팬이예요. (^^)/
다시 한 번 스타리그에서 짱먹어야 하는데...
sangwoo의 이미지

swoo:~ $ ./googletalks.pl "사랑합니다 당신을"
사랑합니다 당신을
너무나
사랑해요
그리고
그날
저녁
돈
아낀다고
집안에만
있는
나한테
다
못
썼다
베이징에서
할
일이
너무
하기
싫은
아르바이트는
설문기간
11

----
Let's shut up and code.

익명 사용자의 이미지

aero wrote:
인터넷에서
http://douweosinga.com/projects/googletalk
를 보고 착안하여 만들어 봤습니다.

코드는 머리에 있는거 생각 없이 쏟아부어서 dog table입니다 :)
좀 정리해서 올려볼까도 생각했지만 어느정도 동작하는데 의의를
두고 이런 아이디어를 활용한 재미있는 놀이가 많이 나오길
바랍니다.
제가 다시 봐도 code가 dirty 하군요 :)

작동 방식은 구글에서 검색될것 같은 문장을 입력하면
결과 중에 다음 단어를 선택하고 그 결과를 이전의 바로 앞단어와
같이 검색해서 검색결과중 랜덤으로 다음 단어를 선택하고
없으면 하나의 단어만으로 검색해서 위 절차를 계속하고
그래도 없으면 끝나는 방식입니다.

랜덤으로 단어를 선택하니 어떤 문장이 나올지 모르니
이것 저것 넣어서 구경하고 있으면 정말 재밌네요.

#!/usr/bin/perl

use LWP 5.65;
use URI::URL;

my $debug=0;
my $query = $ARGV[0];

print $query."\n";
my $close_counter=0;
while(1)
{
    $query =~ m/\ (.*?)$/;
    print "last_word :".$1."\n" if $debug;
    $query = query_word($query);
    unless($query)
    {
	$query = $1;	
	$close_counter++;
	if($close_counter>1) { exit; }
    }
    else
    {
	print $query."\n";
	$query = $1." ".$query;
	$close_counter=0;
    }
}

sub query_word
{
    my $q = $_[0];
    $q = '" '.$q.' "';
    my $unencoded_url = 'http://www.google.com/search?hl=ko&num=10&q='.$q;
    my $url = URI::URL->new($unencoded_url);

    print "unencoded: " . $unencoded_url ."\n" if $debug;
    print "encoded: " . $url->as_string . "\n" if $debug;

    my $browser = LWP::UserAgent->new();
    my $response = $browser->get($url->as_string, 'User-Agent'=>'Mozilla' );
    if($response->is_success)
    {
	my $res = $response->content;
	$res =~ s/<b>//gs; 
	$res =~ s/<\/b>//gs;
	$res =~ s/\n//gs;
	print "Response:\n$res\n" if $debug;
	#$res =~ m/<\/a><br><font size=-1>(.*?)<br><font color=#008000>/i;
	my @next_words = ();
	while($res=~m/<\/a><br><font size=-1>(.*?)<br><font color=#008000>/g)
	{
	    print $1."\n\n" if $debug;
	    my $s = $1;
	    my $next_word = get_next_words($s,$q);
	    if ($next_word) {push(@next_words,$next_word);}
	    pos($res)+1;
	}
	print "@next_words ".($#next_words+1)."\n" if $debug;
	my $select = rand($#next_words+1);
	print "selected :".$next_words[$select]."\n" if $debug;
	return $next_words[$select];
    }
    else
    {
	print $response->error_as_HTML if $debug;
    }
}

sub get_next_words
{
    my($text,$q) = @_;
    $q =~ s/"//g;
    print "query :".$q."\n" if $debug;
    $text =~ s/[a-zA-Z_&#|;:<>,?.~\*\^\$\[\]\-\+()\/=]//g;
    print "text :".$text."\n" if $debug;
    $text =~ m/($q)(\S*?)\ /;
    print "match 1 |".$1."| 2 |".$2."| 3 |".$3."| 4 |".$4."|\n" if $debug;
    return $2;
}

실행
google_talks.pl "내가 보건데"
결과

내가 보건데
한국의
대학이
어떻게
수용할
경우에는
양도세를
내야
한다
세금을
내야
하지
않겠소이까
자칭
선배라는
사람의
입장도
생각하는
도량은
있어야지요
20050109
33

실행
google_talks.pl "오늘밤은 우리"
결과

오늘밤은
둘만
도망쳐
버릴수도
있어
죽는
날까지
떼어
놓지
말라
여행운은
목적하는
바를
성취하기
위해
부모가
죄인인
경우
재판할
수
있나요
관리자
패스
워드를
열어
확인할
수
있습니다
카드번호
및
비밀번호를
잃어
버렸습니다
버스에서
나처럼
자면
!
글쓴이
제

누가 요 프로그램 php 로 작성해 주실 분 안계신가요?
프로그램은 영 꽝이라서...ㅠㅠ

익명 사용자의 이미지

./GoogleTalks.pl "C++"
C++
./GoogleTalks.pl "Linux"
Linux
./GoogleTalks.pl "Microsoft"
Microsoft
./GoogleTalks.pl "Bjarne Stroustrup"
Bjarne Stroustrup
./GoogleTalks.pl "Google"
Google
./GoogleTalks.pl "cppig1995"
cppig1995
랜덤여신의 이미지

traxi1726 wrote:
./GoogleTalks.pl "C++"
C++
./GoogleTalks.pl "Linux"
Linux
./GoogleTalks.pl "Microsoft"
Microsoft
./GoogleTalks.pl "Bjarne Stroustrup"
Bjarne Stroustrup
./GoogleTalks.pl "Google"
Google
./GoogleTalks.pl "cppig1995"
cppig1995

키워드를 영어로 줬으니까 당연하겠죠? :)

cppig1995의 이미지

키워드 영어로 주고 장난치기...
심심해서 친 장난입니다.
traxi1726 = "cppig1995(로긴귀찮아)"

Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.

yjcho의 이미지

python으로 만든 거에요.. :oops:

여기로 구글 가라사대

익명 사용자의 이미지

^^

익명 사용자의 이미지

^^너무 재미있는데 퍼갈께요~

랜덤여신의 이미지

HanIRC #barosl 채널에서도 봇을 통한 구글이야기가 가능합니다. ;)
!구글이야기 or !구글이야기2 (자세한 출력) or !ggtalks
(...채널 광고 =3)

익명 사용자의 이미지

google_talks.pl "내가 보건데"

Seyong의 이미지

# ./google_says.pl "여자라는 동물은"  
여자라는 동물은
전혀
도움이
안된다
8

# ./google_says.pl "여자라는 동물은"
여자라는 동물은
전혀
확인되지않아
제기능을
못하는
것으로
본다
returnet의 이미지

Quote:
returnet@returnet:~/code$ ./googletalk.pl 구글아
구글아
애썼다

잡다한 코드들 정리하다가 남아 있는 걸 발견 하곤 간만에 해봤는데..

재밌군요

익명 사용자의 이미지

racy@localhost ~ $ perl talk.pl "안녕하세요"
안녕하세요
가입하시면
추후
상품구입시
번거로운
정보입력을
하실
필요가
없습니다
수술을
받기
전에
수술과정을
가상체험해


있는
동화를
소개한다
띳띳띳
꼴찌오리

이야기』
racy@localhost ~ $

잼있네요..^^

luark의 이미지

Quote:
luark@KasheL_main:~$ ./google_talks.pl "사랑은"
사랑은
luark@KasheL_main:~$ ./google_talks.pl "사랑해"
사랑해
luark@KasheL_main:~$ ./google_talks.pl "내가 보건데"
내가 보건데
luark@KasheL_main:~$ ./google_talks.pl "오늘밤은 우리"
오늘밤은 우리
luark@KasheL_main:~$ ./google_talks.pl 사랑합니다
사랑합니다
luark@KasheL_main:~$ ./google_talks.pl 그만해 그만
그만해

이런 식으로 밖에 안나오네요;;; 시간이 흘러서 현재 구글하고 안맞는 걸까요;; 아니면.. 역시.. 유불일까요?

---

---
키체의 힘으로 당신에게 평안을...

익명 사용자의 이미지

[lucas@fox home]$ ./google_talk.pl "욘사마"
욘사마
덕을
얻기
위해
담벼락
기어오르는
나라

ㅋㅋㅋ

luark의 이미지

Anonymous wrote:
[lucas@fox home]$ ./google_talk.pl "욘사마"
욘사마
덕을
얻기
위해
담벼락
기어오르는
나라

ㅋㅋㅋ

OTL 유불인가 보군요;;;;;; 나만 미워해 ㅜㅜ

---

---
키체의 힘으로 당신에게 평안을...

망치의 이미지

"사이트 운영자는"

Quote:
사이트 운영자는
사이트의
신뢰와
이미지를
실추
시키는
악영향을
끼칩니다

---------------------------------------
http://www.waitfor.com/
http://www.textmud.com/

익명 사용자의 이미지

귀여니의 아프리카보다는 낫군...

jachin의 이미지

망치 wrote:
"사이트 운영자는"

Quote:
사이트 운영자는
사이트의
신뢰와
이미지를
실추
시키는
악영향을
끼칩니다
정말 재밌네요. ^^; 엉뚱한 내용이라서 그런지 더 재밌게 느껴져요.
aspell의 이미지

은근 말이 되는듯 안되는듯 ㅋㅋ

advck1123의 이미지

윈도우즈에선 실행 안되는것 같은데요. 코드를 그냥 긁어다 붙쳐서 그런지도 모르겠네요.
strawberry perl 깔려져 있습니다. 설치한지 얼마 안되서 건드린건 없습니당..

aero의 이미지

웹페이지를 파싱해서 하는 것이기 때문에 구글의 싸이트 구성이 바뀌어서 이제는
동작하지 않을 겁니다.

뭐 방법이야 바뀌지 않았으니 나름대로 다시 구현해보심이..
어떤 분은 이것과 비슷한 인터넷 시인( http://channy.tistory.com/312 ) 이란 것을
매시업 캠프인가 하는 행사에서 만들어서 상까지 타셨더군요.

당시 Perl을 배우기 시작한지 얼마되지 않아 이 소스 저 소스 참고하면서 긁어 붙여 만든 거라서
지금 제가 옛날에 짠 엉망진창 코드를 보니 부끄럽습니다. :)

elvis의 이미지

play talk google!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.