글쓴이 보관물: snowall

snowall에 대하여

onecup, research department

번역 알고리즘에 관하여

요새 GRE랑 TOEFL 때문에 문법 공부를 좀 하다 보니, 그리고 GEB를 읽다 보니 영어를 한국어로 자동 번역하는 알고리즘에 대해서 생각하게 되었다. 영어와 한국어의 가장 큰 차이는 어순 차이이고, 따라서 단어를 일괄적으로 치환한 후에 어순에 맞도록 붙여주기만 하면 일차적으로 괜찮은 수준의 초벌 번역이 되지 않을까 생각해 보았다. 그래서, 아무생각없이 알고리즘을 한번 구성해 보려고 했는데, 생각해보니 이게 좀 복잡하다.

1. 문장을 단어 수준으로 나눈다.

2. 각 단어의 품사를 판정한다.

3. 단어 중에서 전치사와 접속사를 찾는다.

4. 전치사에서 파생된 전치사구에 해당하는 단어를 찾아서 전치사구로 묶어준다.

5. 접속사에서 파생된 종속절에 해당하는 단어를 찾아서 절로 묶어준다.

6. 전치사구를 해석한다.

7. 종속절을 해석한다.

8. 주절을 해석한다.

여기에 부가적으로 동사구를 해석해서 시제, 태, 단/복수, 자/타동사를 처리하는 해석기가 필요하다.

일단 가장 난이도가 있는 부분은 각 단어의 품사를 판정하는 부분이다. 가령, 문장을 단어들의 나열인 [a,b,c,d,..]로 이루어진 벡터라고 보자. 그럼 a는 명사, 형용사, 동사, 부사… 등등의 품사 중에서 하나일 것이다. b, c… 등등의 단어도 각각의 품사를 갖고 있을 것이다. 문제는 하나의 단어가 여러개의 품사를 가지는 경우이다. 가령 an는 관사로만 쓰이기 때문에 품사가 형용사밖에 없다. 그러나 characteristic은 명사로도 쓰이고 형용사로도 쓰인다. 그래서 품사가 뭔지를 알아내는 것은 꽤 어려운 작업이다. 그래서 생각해본 것이, 그 단어가 무엇을 수식하는지 알아내면 낫지 않을까 싶었다. 가령, 타동사는 반드시 목적어가 있어야 하고, 형용사는 반드시 그것이 서술하는 대상이 필요하다. 부사는 반드시 형용사, 동사, 다른 부사, 문장 전체중의 하나를 수식해야만 한다. 전치사는 반드시 그 목적어로 명사가 필요하다. 따라서 문장 내에 있는 특정 단어는 반드시 그 다음에 해석할 단어를 지정할 수 있다. (반드시 라고 말하면 어폐가 있겠지만…)

그래서 이것을 하기 위해, 한 단어의 품사를 일단 가정한 후, 그 단어가 수식해야 할 대상을 지정할 수 있으면 넘어가고, 지정할 수 없다면 그 가정이 틀렸다고 판단하는 것이다. 이 과정을 재귀적으로 반복하다보면 더이상 품사 변환을 할 수 없는 고정점 벡터가 하나 나올 것이다. 그럼 이제 품사도 판정했고, 단어의 해석 순서도 결정 되었다. 이제 그 다음 3단계부터 쭉 따라가면 된다.

이게 실제로 작동할 수 있는 알고리즘인지는 잘 모르겠지만, 언젠가 실제로 구현을 해보고 싶은 생각이 들었다.

그런데 결정적인 문제가 있다.

모든 단어에 대해서 각각의 단어가 가질 수 있는 품사에 대한 정보를 수록한 사전과, 각각의 단어가 각각의 품사일 때 어떤 뜻을 갖는지에 대한 정보를 수록한 사전이 필요하다. 이 사전을 구축하는 것도 실제로 일이 될 것 같다.

친구

친구라는 것은, 해변가에서 모래를 한줌 쥐었을 때, 다 흘러내리고 손바닥 안에 남아있는 몇개의 모래알이랑 비슷하다.

계속해서 붙잡지 않으면 모두 흘러내려서 다른 모래알과 구별되지 않을 것이다.

우정이라는 것은, 해변가에서 물을 한손 퍼올렸을 때, 다 흘러내리고 손바닥 안에 남아있는 조금의 물기와 비슷하다.

계속해서 손을 적시지 않으면 모두 말라버려서 손바닥은 결국 메말라 버릴 것이다.

최근에 그렇게 느꼈다.

티스토리에 질문 하나!!


티스토리에 질문할게 딱 하나 있다.

얼마 전, 각주달기 플러그인이 종료된다고 공지를 읽었다. 종료하는 것 자체는 별다른 불만이 없으나, 내가 궁금한 것은 기존에 footnote 태그로 달아두었던 각주들은 과연 새로 생기는 주석 기능에서 사용하는 형태로 자동 변환을 시켜줄 것인가에 대한 의문이다.

질문에 답해주세요! ^_^

직선은 평면을 두개로 나눈다

평면 위에 직선이 하나 있다고 하자. 그 직선은 무한히 먼 곳에서 시작하여 무한히 먼 곳에서 끝난다. 낭만적이지 않은가? 그렇게 길게 이어진 직선은 평면을 두 영역으로 나눈다. 그것이 남과 북이 되었든, 좌와 우가 되었든 문제는 되지 않는다. 평면 위에 있는 모든 점은 따라서 평면에 있는 세개의 부분집합 중 하나에 반드시 포함된다. 왼쪽에 있거나, 오른쪽에 있거나, 또는 직선 위에 있거나. 그중에 없다면 이 점은 평면 위에 있는 점이 아니다.

직선의 방정식은 일반적으로 다음과 같다.

$ax+by+c=0$

이 방정식에다가 어떤 점 (p,q)가 세 집합 중 어디에 있는지 알아보려면?

이렇게 하면 될 것 같다.

$ap+bq+c < 0$ : 왼쪽
$ap+bq+c=0$ : 직선 위

$ap+bq+c >$ 0 : 오른쪽

(여기서, 왼쪽이냐 오른쪽이냐는 전혀 시각적인 이미지가 아니며, 대충 말로 정한 값이다.)

따라서, 어떤 점 두개 (p,q)와 (r,s) 가 있을 때, 직선이 나누는 세 영역 중에서 같은 쪽에 있는지 확인하려면 다음과 같이 하면 된다.

$sgn(ap+bq+c)*sgn(ar+br+c) > 0 $ : 같은쪽

$sgn(ap+bq+c)*sgn(ar+br+c) < 0 $: 다른쪽
$sgn(ap+bq+c)*sgn(ar+br+c) = 0 $: 둘 중 한놈이 직선 위에 있는 놈이다.

그래서, 일단 벡터가 주어졌을 때 직선의 방정식을 한번 써 보자.

벡터가 (x1,y1), (x2,y2) 라고 한다면

$y=\frac{y2-y1}{x2-x1} (x1-x) +y1$

이 수식을 $ax+by+c$ 형태로 바꾸면

$a=y2-y1$

$b=x1-x2$

$c=y1*x2-x1*y2$

이 된다.

이제, 삼각형 내부에 점이 있는지 없는지 판정하는 함수를 만들 준비가 끝났다.

불신천국 예수지옥

예수는 죽어서 천국에 갔을까? 아니면 지옥에 갔을까?

물론, 죽고나서 3일만에 부활하여 하늘로 올라갔지만 여기서의 “천국”과 “지옥”이 마냥 하늘에 있다거나 땅에 있다는 의미가 아님은 누구나 알고 있을 것이다.

질문이다.

예수는 죽어서 어느곳으로 가는 것이 그의 사상과 삶에 더 적합한가? 천국인가? 지옥인가?

사용자 삽입 이미지

인터넷으로 명품 사기를 치는 비법 대공개

물론 내가 공개한 것은 아니고, C일보에서 전격 공개를 했더라. -_-;


‘인터넷 명품 구입’ 사기 당하는 6가지 함정

C일보 홈페이지 트래픽 늘려주기 싫어서 네이버 뉴스 링크를 했다.

이럴 땐 지갑 닫자 : 잡지 사진 / 썰렁한 댓글 / 유선전화 없음 / 은행 수수료 공짜 / 너무 싼 값 / 신용카드 사절

뭐…가서 읽어보면 대충 뭔가 요령을 알려주고는 있는데, 그럼 이 기사를 읽은, 인터넷에서 명품으로 사기를 치려는 사람들은 어떻게 반응할까?

당장 자기 쇼핑몰 홈페이지에

1. 일단 명품을 산다. 아님 어디서든간에 구해다가 사진을 찍어서 올린다. 수입 신고 필증? 어차피 웹으로 보여주는 거니까 대충 조작해서 올리면 된다.

2. 자기 쇼핑몰 홈페이지니까, 회원가입을 왕창 해서 열심히 댓글을 달아준다. 가끔 악플도 섞어주는 센스를 발휘하자. 물론 아이디는 절대 규칙이 보여서는 안된다. 그리고 댓글 다는 패턴도 개성있게.

3. 유선전화? 적당한 사무실 하나 잡아서 전화 한대 놓으면 그만이다.

4. 은행 수수료 공짜? 안하면 된다.

5. 가격도 적당히 올려주고…

6. 신용카드는 받아주는 척 하면서 현찰로 할때는 카드 수수료 빠지는 것 보다 조금 더 깎아주는 척 한다. 그럼 당연히 현찰로 사겠지.

이렇게 해 놓을 것이 뻔한데, 대체 왜 보도하는 건가…

사기를 치는 사람들의 지능은 자네들이 보유한 기자들의 지능보다 좋다네.

삼각형 내부에 있는 점 판정하기

어떤 점이 주어진 삼각형 내부에 있는지 외부에 있는지 판정하는 방법을 드디어 알아냈다. 자세한 증명은 좀 더 명확히 해 보도록 하고 일단 방법부터 설명하도록 한다.

삼각형에 있는 세개의 변 중에 임의의 2개를 고른다. 그리고 그 2개의 변을 양쪽으로 연장해서 평면을 4개로 분할한다. 적당히 그 4개의 분할된 영역을 분면이라고 하고, 1,2,3,4분면이라는 이름을 붙여두자.

[보조정리]

이제, 점이 삼각형 내부에 있다고 가정하자. 그럼 그 점은 반드시 4개의 분면중에 1개에는 들어 있어야 한다. “내부”라고 하였으므로 직선 위에 있는 경우는 없다.

또한, 나머지 한개의 변의 중점을 생각하자. 그 중점 역시 4개의 분면중에 1개에 들어가 있다.

점이 삼각형 내부에 있다면, 나머지 한 변의 중점과 주어진 점은 반드시 같은 분면에 들어간다.

[증명] 일단 생략

[정리]

어떤 점이 삼각형 내부에 있다면, 삼각형에 있는 3개의 변 중에서, 어떤 임의의 2개 변을 선택하더라도 나머지 한 변의 중점과 그 점은 같은 분면 안에 반드시 포함된다. 즉, 2개씩 고르는 작업을 3번 하면 삼각형 내부에 있는지 아닌지를 알아낼 수 있다.

[증명] 어쨌든 일단 생략

직관적으로는 일단 옳다는 결론을 내렸다. 상세한 증명은 그림을 좀 더 그려본 후에 작성해볼 예정이다.

——

더불어, 이 과정은 볼록다각형으로 확장할 수 있다. 볼록다각형은 한 점을 잡고서, 순서대로 점을 두개씩 골라가면 삼각형으로 분할할 수 있기 때문에 각각의 삼각형에 대해서만 판정하면 된다. 물론, 이 경우, 실제로 다각형의 변을 이루는 삼각형의 변과, 다각형 내부에 있는 삼각형의 변 중에서, 만약 그 점이 다각형 내부에 있는 삼각형의 변 위에 있다면 그것은 다각형 내부에 있다는 점을 염두하여 계산할 필요가 있다.

그리고 볼록다각형으로 확장한 다음에는 오목다각형을 포함할 수도 있다. 오목다각형은 볼록다각형 여러개로 잘라낼 수 있기 때문이다.

또한, 다시 이 과정을 다차원으로 확장할 수도 있다. 가령, 3차원의 경우에는 임의의 사면체에 대해서 먼저 증명하면 된다. 이 경우에는 사면체 중 꼭지점 하나를 공유하는 평면 3개를 정하고, 나머지 한 평면의 중점과 필요한 점이 8개의 분할된 공간 중 같은 공간에 속하는지를 판정하면 된다.

4차원에서도 가능할 것 같다. 이 경우에는 사면체 5개로 이루어진 초사면체에서 꼭지점 하나를 공유하는 사면체 4개를 정하고, 나머지 한 사면체의 중점과 필요한 점이 16개의 분할된 공간 중 같은 공간에 속하는지를 판정하면 된다. 물론, 복잡하다. -_-;

인터넷으로 할 수 있는 좋은 일들

광고(廣告)의 사전적 의미는 단순히 ‘널리 알리다’라는 뜻이기 때문에

미아찾기 광고라는 표현도 문제 없으리라 봅니다.

하지만 요즘은 광고 = 상업적 광고 라는 개념이 일반적으로 받아들여지니 문제겠지요.

11명중에 1명 고르기

고율님 블로그에서 보고 따라해 봤다.

11명 중에 한 사람을 선정하기 위해서 주사위를 굴리기로 했다.

주사위를 유한한 횟수 이내로 굴려 균등한 확률로 11명 중의 한 명을 선정할 수 있는 방법을 서술하시오. (단, 주사위는 정 6면체이다.)

*읽기전에 알아둘 것 :

이 논리는 틀렸습니다!


$(a+b)^2 = a^2+b^2+2ab$

기본 아이디어는 이항전개다.

각 면에 써 있는 숫자를 n이라고 놓고, k번 던진 다음에 나오는 숫자를 계산해 보면

$\left(\sum^6_{i=1}e^n \right)^k$

으로 쓸 수 있고, 이 식에서 각 항마다 있는 계수는 정해진 합에 대해서 그 합이 나오는 경우의 수가 몇개인지 알려준다. 그럼, 적당히 큰 k를 고르고, 그중에 계수가 11을 넘는 합 하나를 가져오자. 합 자체는 얼마가 되든 상관 없다. 그냥 a라고 하자. 그리고 그 계수를 m이라고 하자. m은 이항전개에서 해당 항이 나오는 횟수가 몇번인지 알려준다. 따라서, 이항전개에서 그 항은 11번 이상 나온다.

이 말은 바꿔 말하면, 주사위를 k번 던질 때 전체 가능한 경우의 수 중에서 합이 a가 되는 경우가 m번 있다는 뜻이다. 그럼, 이제 합이 a가 되는 경우 각각을 11명의 사람들에게 배정한다. 경우의 수가 11을 넘어갈 수도 있지만, 나머지는 무시해 버려도 된다. 순서 따져서 각각이 구별 가능하기만 하면 된다.

이제 주사위를 k번 던지는데, 합이 a가 되지 않으면 무시하고, 합이 a가 되면 그렇게 된 경우가 11명의 사람이 배정받게 된 경우 중 어느 것에 해당하는지 따져본다. 아무도 배정받지 않았다면 다시 던진다.

이것이 가능한 이유는 전체 경우의 수 각각이 발생할 확률은 똑같기 때문에, 우리가 원하는 만큼만 골라내고 나머지는 다 버려도 문제가 없다는 것이다.

또한, 합이 a가 나올 확률은 0이 아니므로 반드시 유한한 횟수 안에 끝난다. (물론 계속 합이 a가 나오질 않아서 조금 더 길어질 수는 있으나, 확률이 0이 아니기 때문에 무한히 시행하다보면 실제로 무한까지 가기 전에 유한 횟수 내에 끝나는 것이 보장된다.)

영화 “고사” 포스터 전격 분석

물론 영화는 아직 못봤다.

원래 개봉하기 전에 쓰려고 했던 글인데 일에 치여서 지금 쓴다.

사용자 삽입 이미지

좀 큰가?

아무튼, 이 포스터의 왼쪽 위에 보면 수식이 적혀 있다.

…뭔가!

$\tilde{j} = || \int^1_0 J^2_k (j_k,a,x)x dx = \frac{1}{2} J’_k(j_k, a)^2 = \frac{1}{2} J_{k+p}(j_k, a)$

그리고 그 아래에

for $m \neq n$

$j=\left( \frac{x}{2} \right)^\lambda \sum^{\inf}_{m=0} \frac{(-1)^n}{\Gamma (m+1)\Gamma(\lambda+m+1)} \left( \frac{x}{2}\right)^{2m} , \lambda \in \mathbd{R}^n$

$\mathbd{j}_\lambda \leftarrow \mathbd{J}_k (\lambda) = \sum^{\inf}_{m=0} \frac{(-1)^{n+k}}{(m+1)!m!} \left( \frac{x}{2}\right)^{2m+k}$

그 아래에는 무슨 수식인지 읽기 힘들다.

이런걸 고등학교 중간고사에 내 놓고서 풀으라는 거냐!?

사용자 삽입 이미지

여기도 위쪽에 보면 뭔가 수식이 있는데, 읽기는 좀 힘들지만 자세히 보면 파동방정식의 해법이 적혀 있다. 그럼 그 밑에 있는 수식은 앞에 나왔던 수식이랑 비슷해 보인다. 따라서 이범수가 나온 사진의 수식은 이 사진의 풀이 과정의 일부이다. 아마 파동방정식을 풀기 위해서 변수분리를 한 후에 그걸 일단 풀고, 다시 그걸 Bessel’s equation으로 고쳐서 푸는 과정인 것 같다.

나머지 포스터들에는 다들 비슷한 수식이 적혀 있기 때문에 딱히 더 연구해 볼 필요는 없을 것 같다.

그건 그렇고, 왜 중간고사일까? 기말고사가 더 좋은데.