일요일, 1월 12
Shadow

#004 검색엔진 사용 연산자

미분류
4. 검색엔진에서 사용하는 연산자 (1) 부울 연산자 대부분의 검색엔진은 검색어들에 대해 AND, OR, NOT 의 논리연산을 제공하고 있으며, 검색엔진에 따라서 사용하는 기호는 다를 수 있다. 1) AND 연산자(=논리곱 연산) 두 개의 단어가 입력되었을 경우 두 단어를 동시에 모두 담고 있는 정보만을 검색한다. 주로 AND 와 & 기호를 사용한다. 예1) 한국 AND 월드컵 '한국'이라는 단어와 '월드컵' 이라는 단어를 동시에 포함하는 문서를 검색한다.   그림Ⅲ-26] AND 연산자를 이용한 검색 예 예2) Computer & Internet 'Computer'라는 단어와 'Internet' 이라는 단어를 동시에 포함하는 문서를 검색한다. 【검색예제】 우리 조상들이 후손들에게 남겨준 문화재중 댐공사로 수몰 당하는 문 화재도 많지만 위기를 모면한 문화재도 많다. 위기를 모면한 문화재 중에 삼국유 사의 저자인 일연스님의 탑과 비가 그 대표적인 예이다. 이 탑과 비는 고려 충렬 왕 21년(서기 1295년)에 인각사라는 절에 건립되었다. 이 탑과 비가 있는 행정 구역상 주소를 쓰시오.(URL이 아님) ▶검색엔진: 네이버 ▶키워드 : 인각사&문화재 ▶사이트 : http://research.kyungpook.or.kr/moonhoa/HTML/T11002.HTM ▶답 : 주소 : 군위군 고로면 화북리 612, 613의 3전 2) OR 연산자(=논리합 연산) 두 개의 단어가 입력되었을 경우 두 개의 단어를 모두 담고 있는...

#003 정보검색시스템의 구성요소

미분류
정보검색시스템의 구성요소   1. 정보검색시스템이란? 정보 수요자가 필요하다고 예측되는 정보나 데이터를 미리 수집, 가공, 처리하여 찾기 쉬은 형태로 축적해 놓은 데이터 베이스로부터 요구에 적합한 정보를 신속하게 찾아내어 정보 요구자에게 제공하는 시스템을 말한다.   2. 배경학문 자료구조론 (Speed & Memory Trade-off) 데이터베이스론 (DB Indexing) 검색알고리즘 AI의 Search, NLP, Story understanding Algorithm ES의 Inferencing   3. 구성요소 웹로봇 웹상에 존재하는 문서들을 가져오기 위해서 웹의 하이퍼텍스트 구조를 자동적으로 추적하여 참조되어지는 모든 문서들을 재귀적으로 검색하는 프로그램을 말한다. 여기서 '재귀적으로'라는 의미는 어떤 명시된 트래버스 알고리즘으로 유한하게 정의되어지는 것이 아님을 주목하라. 비록 로봇이 문서 선택을 위해 몇몇의 발견적인 학습법을 허락한다거나 방문하기 위한 문서의 순서를 정한다거나 하더라도 여전히 로봇이다. 일반적인 웹브라우저는 로봇이 아니다. 왜냐하면 그것들은 인간에 의해 수행되어진다. 그리조 참조되어지는 문서들을 자동적으로 수집하지 않는다. 크롤러(crawler), 스파이더(spider), 개더러(gatherer), 웸(worms), 안츠(ants) 등 다양한 이름으로 불리우지만 일반적인 명칭으로는 로봇이라 칭하는 비율이 높은듯 하다. 로봇을 얘기하면서 빼 놓을 수 없는 것이 로봇 배제 표준(robot excl...

#002 검색엔진 방식

미분류
1. 웹 인덱스 방식(Keyword 검색방식) - 가장 일반적인 방식으로 검색어를 포함한 웹 문서들을 검색 - 로봇이 주기적으로 인터넷 상의 정보를 검색하여 검색 엔진의 호스트 컴퓨터에 보내어 새로운 인덱스 데이터베이스 구성 - 로봇의 추출 방법과 효율성에 의해 검색 엔진의 성능 좌우 - 단점 ☞ 검색결과가 너무 많아져 사용자의 판단을 흐리게 할 수 있음 ☞ 특정 단어만의 검색에 의한 결과이므로 웹 문서의 신뢰도가 낮아짐 ☞ 검색 연잔자가 초보자에게는 어려움 - 웹 인덱스 방식의 대표적인 검색 엔진 ☞ Altavista : http://www.altavista.com ☞ Lycos : http://www.lycos.co.kr(한국) http://www.lycos.com(미국) ☞ 네이버 : http://www.naver.com ☞ 심마니 : http://www.simmani.com 2. 웹 디렉토리 방식(메뉴 검색방식) - 인터넷에 존재하는 웹 문서들을 주제별, 계층별로 정리하여 데이터베이스 구축 - 검색방법 : 나열되어 있는 분류 항목 중 가장 가까운 항목을 선택하여 따라가면 되므로 매우 쉽고 간단. - 검색원리 : 사람이 직접 문서를 수집하고 관리 - 장점 : 웹 문서의 신뢰도가 높아짐 - 단점 : 검색결과로 얻는 웹 문서의 수가 비교적 적으므로 풍부한 검색 결과를 얻을 수 없음 - 웹 디렉토리 방식의 대표적인 검색 엔진 ☞ Yahoo! : http://www.yahoo.co.kr(한국) http://www.yahoo.com(미국) 3. 통합형 검색방식 - 자신만...

#001 Semantic Search

미분류
시맨틱웹 기반의 검색 시스템 구조 이강찬* 김성한* 민재홍** 박기식*** 정인정**** 현재의 시맨틱웹 연구 및 개발은 시맨틱웹의 기본 기술인 RDF/RDFS, 에이전트, 온톨로지에 초점이 맞추어져 있다. 본 고에서는 시맨틱웹의 기본 기술을 유기적으로 조직하고 향후 시맨틱웹의 연구와 기술 개발에 청사진의 역할을 할 수 있는 시맨틱웹의 시스템 구조를 제시한 후, 시스템 구조를 사용하기 위한 시맨틱웹 개발에 필요한 도구에 대하여 설명한다. ▧     I. 서 론 1990년대부터의 정보통신의 발달 및 인터넷 사용 환경의 편의성 제고 등으로 인하여 웹의 사용이 일반화되고 있을 뿐만 아니라 각종 다양한 정보들이 웹을 통해서 공유되고 있다. 즉, 각종 멀티미디어 정보들이 디지털화되고 대용량의 데이터 교환이 가능해졌으며 단순한 텍스트뿐만 아니라 이미지, 음성, 동영상 등 다양한 형태의 자료를 공유할 수 있게 됨에 따라서 다양한 정보의 공유와 그 방대한 양으로 인하여 웹은 정보의 바다로 부각되었다. 그러나 현재의 웹 환경은 컴퓨터를 매개로 하여 사람과 사람들간의 정보 교환을 위해 발달되어 모든 정보의 추출, 이해를 사람에게 의존하기 때문에 사용자가 원하는 유용한 정보를 추출하는 일은 그리 간단하지 않다. 이러한 환경을 개선하기 위해 에이전트, 검색 엔진, 자연언어 처리 등과 같은 기술이 웹 환경에서 적용되기 위하여 연구/개발되고 있으나 이러한 기술 역시도 현재의 웹 환경이 지니고 있는 문제점으로 인하여 한계가 있다. 현재의 웹은 HTML 마크업 언어를 기반으로 하여 ...

#062 Hashtable vs HashMap

미분류
hash table 값 얻기 HashMap은 키나 값에 Null을 허용 합니다. HashMap 출력방법은 다음 한가지 이네요. (Enumeration 지원 안함) HashMap hashmap = new HashMap(); hashmap.put("jakarta", "project"); hashmap.put("apache", "tomcat"); Set set = hashmap.entrySet(); Iterator keys = set.iterator(); while (keys.hasNext()) { key = (String)keys.next(); System.out.println(hashmap.get(key)); } 또한 Hashtable은 thread safe 한 객체이지만 HashMap은 그렇지 못해 unsynchronized 합니다. 이말은 즉 멀티 쓰레드 환경이 아니면 HashMap을 쓰면 속도가 빠르다는 말입니다. 굳이 동기화 하자면 다음과 같이 사용해야 겠지요 Map m = Collections.synchronizedMap(new HashMap(...)); 간단히 정리하자면 HashMap이 HashTable에 비해 좀더 실용적으로 변한 형태라고 보면 되겠네요 ^^ 일반적으로 쓴다면 HashMap을 사용하세요 HashMap 이나 Hashtable 이나 둘다 Map 인터페이스를 implements 하고있지만 프로그래밍 환경에 따라서 적절한 놈으로 골라써야 합니다. java API 문서에 보면 The HashMa...

#036 싱글톤 패턴

미분류
싱클톤 패턴 용도 하나만 있으면 되는 객체를 만들때예) 스레드 풀, 대화상자, 사용자 설정, 로그기록용 객체, 디바이스 드라이버 -- 문제 : 한클래스의 인스턴스가 두개 이상 만들어 지지 않도록 할 수 있을까????????? Singleton 패턴은..각종 설정 등이 저장된 클래스가 하나 있다고 칩시다. 프로그램 내에서 여기저기서 마구 접근해서 설정을 바꾸기도 하고 값을 가져오기도 합니다. 이런 클래스는 인스턴스를 하나만 가져야 합니다. 하나 만들어서 쓰는 곳마다 인자로 전달해주면 되긴 합니다만, 접근하는 곳이 많다면, 계속 인자로 전달하는 것은 그다지 바람직하지 않습니다. 전역변수처럼 아무곳에서나 이 인스턴스에 접근을 하면 편하겠죠. Singleton 패턴을 이용하면, 하나의 객체를 만들어서 아무데서나 접근할 수 있습니다.2. 예제 ---------------------  Singleton으로 구현된 클래스 ---------------- package ch05_Singleton; public class SingletonCounter { private static SingletonCounter singleton = new SingletonCounter(); private int cnt = 0; private SingletonCounter(){ } public static SingletonCounter getInstance(){ return singleton; } public int getNextInt(){ return ++cnt; } } ----...

#035 스트래티지패턴

미분류
  스트래티지 패턴 : 알고리즘 군을 정의 하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다. 스트레티지를 활횽하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경 할 수 있다. -- 아직 개념이 명확히 들어 머리에 들어오지는 않는.. 다시 읽기.      character 클래스는 다른 모들 캐릭터를 위한 추상 클래스 weaponBehavior 는 모든 무기 클래스에서 구형해야 하는 인터페이스 예)  public abstract class Character

#061 객체생성에유의하자

미분류
1. String Concatenation 다음의 코드가 있을 경우 String p = a + b ; //a,b are String objects 자바 컴파일러는 다음과 같이 컴파일 한다. String p = (new StringBuffer()).append(a).append(b).toSting(); 여기서 우리는 벌써 두개의 새로운 객체를 발견할 수 있다. - StringBuffer - toString()에 의한 String 그렇지만 이게 다는 아니다. 각각의 String과 StringBuffer는 private으로 문자 배열을 가지고 있다. 그러나 성능을위해서 이 문자 배열은 공유되므로 결과적으로 새로 생성된 객체는 ‘3’개가 된다. 자바에서 객체를 새로 생성하는것은 객체 생성 자체가 비싼 작업이라는 점, 그리고 추후 가비지 컬렉터가 더 많은 일을 해야 한다는 점에서 성능에별로 좋지 않은 영향을 미친다. 단순한 문자의 추가가 비효율적인 이유는 String 객체는 불변(immutable)이기 때문이다. 그러므로 “a”라는 문자열을 수정해서 “ab”라는 문자열로 바꿀 수는 없고 “ab”라는 새로운 객체를 생성해서 “a”를 치환해야만 한다. 이와는달리 StringBuffer 객체는 문자열을 변경할 수 있다. 문자열을 계속적으로 추가해야만 한다면 StringBuffer를 사용하는 것이 훨씬 효율적이다. 다음의 예제를 보자.   (예제 1) 수행시간: 2200 ms String s = new String(); for(i...

#002 Software Engineer – New Grad – Seoul

미분류
Software Engineer - New Grad - Seoul This position is located in Seoul, Korea. The area: Software Engineering Google의 소프트웨어 엔지니어는 세계적으로 인정받은 기술을 기반으로 장차 더 큰 부가가치를 창출시켜줄 차세대 기술을 개발합니다. Google은 자사의 세계적인 수준의 프로그래밍 기술을 사용하여 검색기술 뿐만 아니라 다양한 영역에서의 혁신을 주도하고 있습니다. 현재 진행중인 프로젝트에는 고급 정보검색 알고리즘, 확장성 및 스토리지 솔루션, 대규모 애플리케이션 등이 있습니다. Google 프로젝트는 모두 사용자 경험 향상이라는 기치 하에 수행됩니다. 이 외에 고객용 애플리케이션 부문의 네트워크 시스템, 광고 시스템, 복잡한 거래 시스템 등에서도 다양한 혁신 프로그램이 진행 중입니다. The role: Software Engineer - New Grad 괄목할만한 성장을 거듭하고있는 Google에서 차세대 검색엔진 개발에 참여할 우수한 Software Engineer를 찾고 있습니다. Google 엔지니어링 팀은 최첨단 정보 검색 알고리 즘, 대용량 데이터 및 빠르게 증가하는 사용자와 다양하고 참신한 검색기능을 다루는 것 과 관련된 이슈 등 여러 분야의 문제를 해결하고 있습니다. 무질서한 웹 정보 정리에 참 여를 원하시는 분은 연락주시기 바랍니다. Responsibilities: 대규모 분산 시스템의 코딩, 분석 및 문제해결 능력 Requirements: 컴퓨터 과학 학사 학위 소지자 ...