영어사전에서 영어단어 검색 속도 (4)
우리가 일상에서 사용하는 문장은,
(1) 오감(시각, 청각, 후각, 미각, 촉각)에 의한 문장표현 --> 경험에 의해 축적된 어휘를 순간적으로 표현
(2) 논리적인 문장표현 --> 학습에 의해 축적된 어휘를 논리적인 문법 체계에 맞도록 조합하여 표현
위와 같이 표현한다고 생각해 볼 수 있습니다.
컴퓨터로 문장 번역을 위한 자료구조와 알고리즘을 코딩할때 위의 분류는 중요한 고려 대상입니다.
또한, 아주 중요한 차이점이 있습니다.
사전에 등재되어 있는 단어(어휘)의 개수가 30만개 정도이면, 이 단어를 단순히
조합하여 만들 수 있는 문장의 개수는 30만!(팩토리얼) 이고, 이것은 천문학적인 수의 크기라는
것을 저의 앞글에서 소개해 드렸습니다만, 다시 숫자의 크기를 확인해 보면,
30!(팩토리얼):
265252859812191032188804700045312
100!(팩토리얼):
933262154439441021883256061085752672409442548549605715091669104004
079950642429371486326940304505128980429892969444748982587372043112
36641477561877016501813248
30만!(팩토리얼): 한번 상상해 보세요...
이러한 어마어마한 개수를 사람의 두뇌는 저장 세포에 모두 저장시켜 놓았을까요?
그렇지는 않을 것입니다. 두뇌 세포의 용량에도 한계가 있을 것입니다.
그래서 사람의 두뇌도 문장을 효율적으로 표현하기 위해서
두뇌 세포에 단어들을 체계적으로 정리해 놓은 자료구조와
논리적으로 조합하기 위한 알고리즘을 구축해 놓았을 것입니다.
(사람들 마다 차이점이 좀 있겠습니다만...)
저는 사람이 문장 표현하는 방식을 논리적으로 정리하여 컴퓨터 자료구조와 알고리즘에 접목 시켜 보고 있습니다.
앞에서 언급한 2가지의 문장 표현방식을 다시 생각합니다.
(1) 오감(시각, 청각, 후각, 미각, 촉각)에 의한 문장표현
(2) 논리적인 문장표현
중요한 차이점이 있는데, (1)번은 논리적인 표현이 아니라 사람의 오감을 담당하는 두뇌 세포에
오감을 표현하는 문장이 저장되어 있어 이것을 본능적으로 꺼내어 사용한다는 것입니다.
따라서, (1)번은 컴퓨터 자료구조와 알고리즘으로 표현하기 쉽다고 판단합니다.
바로 검색 알고리즘을 사용하면 되고,
입출력되는 문장의 개수도 현재의 컴퓨터 메모리에 모두 저장시켜 놓을 수 있습니다.
몇가지 예를 들면,
so cool --> 너무 멋져!, 신선한데!, 멋진데!
it's awesome --> 그거 끝내주는데, 굉장한데, 어마어마하군, 진짜 인상적이야.
she is so hot --> 그녀는 너무 멋져, 섹시해.
sort of --> 그런 셈이야.
...
이러한 문장 조합은 사람의 두뇌 세포에 그대로 저장되어 있어서, 맞는 상황이 발생하면
그대로 꺼내어 사용한는 것이라 볼 수 있습니다. 여기에는 논리적으로 문법을 고려하지 않을 것입니다.
따라서, 이러한 문장은 컴퓨터 자료구조에 모두 저장시켜 두고 빠르게 검색해 낼 수 있습니다.
그럼, 오감에 의한 문장표현들이 몇개나 있을까요?
정확히 분류하기는 조금 어렵지만, 아마 수십만개 이하라고 예측합니다.
수십만개 이하의 문장은 컴퓨터 검색 알고리즘으로 잘 구현하면, 수미리초 이내로 검색해 낼 수 있습니다.
현재, 이정도는 자료구조와 알고리즘으로 제가 구축해 두었습니다.
(상용 라이브러리를 사용하지 않고 제가 일일히 맞춤형으로 코딩 했다는 것이 저에게는 중요합니다만...)
언제 적절한 시기에 많은 분들께 보여드릴 예정입니다.
문제는, (2)번 논리적인 문장표현인데요, 이것에 대해서 좀더 개발하여 다음글에 올리겠습니다.
즐거운 통신시간 되세요(^^)
from: 알지비(rgbi3307(at)nate.com) on the www.kernel.bz