stopwords, thesaurus ... 등등

Elastic/Elasticsearch 2013. 1. 22. 18:49

아주 기초가 되는 내용인데.. 웹에서 돌아 다니다가 발견해서 그냥 스크랩해 봅니다.

원본출처는 사이트가 없어진것 같고, 아래 링크에서 퍼왔내요.
http://web.skhu.ac.kr/~mckim1/Lecture/IR/Note/hwork.html


Stopwords(불용어)


불용어란 검색엔진이 검색에서 무시해 버리는 문자열을 의미합니다. 전치사나 관사 a, an, the, that, this, in, on, by, if, is, are, as, be, but, of, for, to, from, with, you, he, there, may 등과 같이 의미없는 단어는 검색어로 취급되지 않는 것입니다.

검색식에 이러한 불용어나 특수기호(마침표,콤마,/,&,%,@,*,? ...)를 반드시 포함시키고자 한다면 대개는 구절검색 기능을 이용합니다. 어떤 검색도구에서는 불용어도 검색대상에 포함시킬 것인지에 대한 옵션을 제공하기도 합니다.



Any terms, Thesaurus
Extended Derivatives

집단검색어,유의어,시소러스, 확장검색


예를 들어 검색을 '대도시'라고 썼을 때 전국의 대도시 지명들을 OR조건으로 모두 나열한 것과 같은 효과를 내는 검색방식입니다. 이것은 집단검색어 파일을 따로 갖고 있는 데이터베이스에서만 사용할 수 있습니다.

비슷한 기능으로서 유의어사전을 지원하는 검색도구들이 있습니다. 대표적인 것이 심마니입니다. 심마니에서는 예를 들어 '장애인#'이라고 검색식을 입력하면 장애인 뿐만 아니라 장애자, 장해인, 장해자 등도 찾아 줍니다. 

이와 같이 사용자가 검색식에 입력한 문자열과 꼭 같지 않더라도 의미상 같거나 관련이 있는 용어들을 모아 검색가능하도록 구축한 데이터베이스를 시소러스(Thesaurus) 또는 유의어사전이라고 합니다.

약간 다르기는 하지만 주제어(Topic) 검색이라는 것이 있습니다. 영어성경검색이 좋은 예입니다. Poor라는 주제어를 입력하면, Beneficence; Giving; Liberality; Orphans; Poverty; Widow 등에 관하여도 볼 수 있습니다. 참고로 Lycos의 카탈로그나 야후의 디렉토리는 메뉴방식으로 원하는 정보를 선택하지만 사실은 내부적으로는 Topic별로 검색이 이루어지는 것입니다.

또 다른 하나의 예는 알파벳 순서에 의한 단어의 범위(Alphabetical Range of Words)를 지정하는 중괄호 { } (braces)입니다. Deja News에서 {monkey monkeying}라고 검색식을 입력하면 영어사전(엄밀히 말하면 Deja News의 색인집인 시소러스)의 monkey부터 monkeying까지 그 사이에 나오는 모든 단어가 검색대상이 됩니다.

Extended Derivatives 

영국의 웹검색기인 WWLib Extended Search Interface는 좀 특별한 확장검색을 합니다. 1.명사의 복수형도 검색하고 (Depluralisation) 2.동사의 분사형이나 진행형도 검색하며 (Degerundisation), 3.관련단어도 검색(Related words)해 주는 것이지요. 예를 들어 biology의 관련어에는 biologist, biologically 등이 있습니다.


Boolean Connectors

부울연산자 : 더하기, 빼기, 곱하기


1. AND

연산자 좌우의 검색어가 모두 나타나는 자료를 찾습니다. (예 welfare and rehabilitation) 

주로 and나 플러스 기호(+)로 표시하지만, 연산자 없이 그냥 공백만으로 and연산을 하거나 그외 엠퍼센드 기호(&)를 쓰는 경우도 있습니다. 심마니에서는 '그리고/와/과/및' 등의 한글 연산자도 사용할 수 있습니다.


2. OR

연산자 좌우의 검색어 중 어느 하나만이라도(any word) 들어 있는 자료를 찾습니다. (예 aged or alzheimer) 

주로 공백이나 or를 사용하지만, 가끔 플러스 기호(+)나 콤마(,)를 사용하기도 합니다. 검색도구에 따라서는 적합성(Relevancy) 점수를 부여할 때 or연산자 좌우의 단어가 모두 들어 있는 자료에 높은 점수를 주기도 합니다.


3. NOT 또는 AND NOT

연산자 앞쪽의 검색어를 포함하되, 뒤쪽의 검색어는 들어있지 않은 자료만 찾습니다. (예 retardation not illness) 

주로 마이너스 기호(-)나 not를 많이 사용하지만, 느낌표(!)나 &!를 사용하기도 합니다.



Phrase Searching

구절검색


두개 이상의 단어가 순서대로 연속해서 나오는 것을 찾습니다. 

예 "special education for the disabled children" 

보통 구절을 따옴표(" ")로 싸 주는데, 검색엔진은 이 구절을 하나의 긴 문자열로 취급하는 것이지요. 주로 두 단어 이상으로 되어 있는 전문용어 등을 찾을 때 사용하지만, 검색 문자열에 특수기호(마침표,콤마,/,&,%,@,*,? ...)나 불용어까지 포함시키려는 경우에도 사용합니다.


※ 구절검색을 할 경우 절단검색 기호(*)는 사용할 수 없고 불용어가 아닌 단어를 두개 이상 포함해야 합니다.


Grouping by Parentheses

검색식의 문법


인터넷의 검색도구들에서도 대체로 여러개의 검색어와 연산자들을 결합하여 복잡한 검색식을 사용할 수 있습니다. 그러나 대개는 상용 데이터베이스와는 달리 and연산자가 or연산자보다 우선되는 것도 아니고 그저 검색식의 왼쪽으로부터 오른쪽으로 차례대로 연산하는데, AltaVista처럼 괄호를 사용하여 검색 연산순서를 바꿀 수 있는 것도 있습니다.

예를 들어, 검색식을 vocational and training or placement (알타비스타라면 +vocational +training placement라고 쓰겠죠.)라고 입력하면 vocational과 training이 동시에 들어 있거나, placement가 들어 있는 자료를 찾습니다. 앞에서부터 차례대로 연산하기 때문입니다. 만약 장애인의 직업훈련이나 직업알선(배치)에 관한 자료를 원한다면 vocational AND (training OR placement) 와 같이 우선 연산하고자 하는 부분을 괄호로 그룹지어야 합니다. 이와 같이 괄호로써 연산자의 조합을 조정할 수 없는 검색도구에서라면 AND조건이 필요한 검색어를 뒤로 보내어 training OR placement AND vocational와 같이 입력하는 것이 좋습니다. AltaVista라면 training placement +vocational 이렇게 입력해야겠지요.



Proximity Searching, Concatenation

인접연산자


인접연산자는 앞뒤의 검색어가 동시에 나와야 한다는 점에서 and연산과 비슷하지만 두 검색어가 바로 옆에 또는 일정 거리내에 인접하여 있어야 합니다. Welfare-Net,Korea와 같은 구조의 문자열을 찾으려면 주로 따옴표로 전체를 묶어 하나의 구절로 검색하는 것이 보통이지만 구절검색이 지원되지 않을 때에는 하이픈(-)이나 콤마(,) 등 특수기호나 불용어 자리에 인접연산자를 쓰면 좋습니다.

※ 앞뒤 검색어가 얼마나 가까이 붙어 있어야 하는가, 두 검색어 사이에 몇개까지의 단어가 끼어드는 것을 허용하는가 하는 인접정도는 검색도구에 따라 조금씩 다릅니다. 100단어 이내, 5글자 이내, 또는 한 문단내에 인접해 있는 조건으로 해석되기도 합니다.

※ 인접연산자는 보통 하나의 검색식 내에서 하나만 사용할 수 있습니다. 여러개의 인접연산자로 구성된 검색식은 거의 허용되지 않을 뿐 아니라 그렇게 써야 할 경우도 거의 없습니다. 또한 구절검색식과 인접연산자를 함께 사용할 수 없습니다.


 검색어간의 순서까지 지정하는 ADJacent, 또는 Preceding

연산자 좌우의 검색어가 지정된 순서로 인접해 들어 있는 자료를 찾습니다. 다이얼로그의 Within 연산자와 같습니다.


예1 mental adj retardation Adj는 Adjacent(인접한)의 약자입니다.

예2 : attitude p3 disab* REHABDATA에서는 절단검색어는 인접연산자와 함께 사용할 수 있으나 구절검색어는 인접연산자와 함께 쓸 수 없습니다. 여기서 p는 preceding(앞에 오는)의 약자로 쓰였습니다.


검색어간의 인접관계만 지정하는 NEAR

이는 좌우 검색어가 앞뒤 순서에 관계없이 인접해 있는 경우를 말합니다. 다이얼로그의 Near 연산자와 같은 것이지요.


예1 : aged near/25 "day care" (WebCrawler)

예2 : welfare ^10 reform (Deja News) Deja News에서는 구절검색어나 절단검색어를 인접연산자와 함께 사용할 수 없습니다.

예3 : attitude w3 disab* (REHABDATA) REHABDATA에서는 절단검색어는 인접연산자와 함께 사용할 수 있으나 구절검색어는 인접연산자와 함께 쓸 수 없습니다. 여기서 w는 Within의 약자로 쓰였습니다. attitude for the disabled의 경우 w3을 써야 합니다. 즉, 인접연산기호와 함께 쓰이는 숫자에는 끝 단어도 계산되는 것입니다.



Truncation

절단검색


검색식에 입력된 문자열과 정확히 일치하는 단어를 찾아내는 것을 완전검색(Precise Searching)이라고 합니다. 검색도구에 따라 Whole words, Complete words, 똑같은거, Exact, Word based search 등으로 표현하는 옵션을 제공하기도 합니다. 예를 들어 입력된 용어가 'handicap'이면 정확히 handicap만 찾으므로, handicapped는 검색되지 않습니다.

검색식에 입력된 문자열로 시작하는 단어는 모두 검색해 준다든가 하는 기능을 절단검색이라고 합니다. 절단검색에는 검색어 뒷부분의 변화를 허용하는 우절단을 비롯하여 앞부분의 변형을 허용하는 후방일치 검색 등이 있습니다.


전방일치검색=어근검색=우절단검색 Right-Truncation

표현형식 : 단어* (또는 %단어) 

절단검색 옵션을 선택하거나 검색어 뒤에 절단기호를 덧붙입니다. 절단기호(가변글자기호)로는 대부분 별표(*)를 사용하지만, 임의의 글자 수만큼 물음표를 사용하는 경우도 있습니다. 한편, 검색식에서는 절단기호(*)를 쓰지 않고 우절단검색, Word-stem based search, Substrings, Start with, 전방일치검색 등으로 표시한 옵션을 선택하게 되어 있는 검색시스템들도 많습니다. 단순히 절단검색이라고 하면 이 우절단검색을 의미한다고 보셔도 됩니다.

예 : disab*

용도 : 검색용어의 끝부분을 임의의 문자로 지정하는 것으로서, 영어의 경우에는 주로 단수형과 복수형(disability, disabilities / child, children)을 한꺼번에 검색하거나, 품사의 차이로 어미변화를 일으키는 용어(volunteer, volunteering, voluntary)를 검색할 때 사용하고, 우리말과 일본어의 경우 앞이 같은 말로 시작되는 유사어나 복합어(장애, 장애인, 장애인복지, 장애자, 장애인시설, 장애연금)를 검색하고자 할때 이용합니다.


후방일치 : Left-Truncation

표현형식 : *단어 (또는 단어%) 

대부분 별표(*)를 사용하지만, 임의의 글자 수만큼 물음표를 사용하는 절단방식도 있습니다. 인터넷상의 거의 모든 검색도구들이 후방일치 절단검색을 지원하지 않습니다. 영국의 웹검색기인 WWLib Extended Search Interface에서는 이 기능을 지원합니다.

예 : 정보탐정에서 검색식을 '장애%'라고 쓰면 지체장애, 청각장애, 시각장애 등 '장애'로 끝나는 용어들을 찾아 줍니다.

용도 : 검색용어의 시작부분을 임의 문자열로 지정하는 것으로서, 영어단어의 경우 주로 화합물의 검색을 위해 사용한다고 하는데, 위의 예와 같이 이 검색식은 한글 복합어를 검색할 때 특히 유용합니다.


사이에 끼는 가변글자

표현형식 : 단어?단어

예 : wom?n

용도 : women, woman을 찾습니다. 다이얼로그와 같은 데이터베이스에서 주로 사용하는 것인데, 인터넷상의 정보검색엔진에서는 이런 검색방식을 지원하는 경우가 거의 없습니다. 다만 이와는 다르지만 영국의 웹검색기인 WWLib Extended Search Interface에서는 앞뒤로 절단검색하는 기능도 있습니다.


절단검색시 주의사항

절단검색어를 사용할 때, 어간이 짧은 경우에는 관계없는 용어들이 같이 검색되므로 어근을 너무 짧게 지정하지 않도록 주의하여야 합니다. 예를 들어, communication, communicate등 의사소통에 관한 자료를 찾기 위해 검색식을 com*이라고 쓰면 community, computer, compass, coma, commercial ...등 전혀 원하지 않는 용어들까지, 또는 너무 많은 용어들이 검색대상이 되어 버립니다.



Field (Context) Searching

필드 제한 검색


웹문서의 title, head, body, address 등이나 뉴스그룹 기사의 author, subject, newsgroup name 등 문서의 특정 부분(필드 또는 context라고 함)으로 제한하여 검색하면 보다 정확하고 빠르게 검색할 수 있습니다.


필드제한 검색의 유형

검색식에 직접 필드제한자를 붙이는 경우 

가장 유연한 검색방식입니다. 고급 서처들에게는 검색식내에 직접 여러 연산기법들을 사용할 수 있게 하는 엔진이 좋은 법이지요. 

예1 : AltaVista(예: title:"Department of Health and Human Services") 알타비스타의 필드제한 검색 특히, title, url, link필드에서의 검색은 정확한 자료를 찾아내는데 큰 도움이 됩니다. 그리고 이것은 과거에 책갈피를 만들어 둔 좋은 자료가 URL의 무단변경으로 인하여 더 이상 찾아내기 어려울 때 아주 유용한 검색기법입니다. 예를 들어 +url:sprc +title:"Social Policy Research Centre"의 검색은 지금의 정확한 주소는 모르지만 url과 타이틀중에 포함된 단어로써 찾아내는 것입니다. 

나의 홈페이지,웹문서를 다른 곳들에서 얼마나 많이 링크시켜놓고 있는지를 알고 싶을 때 +link:http://welfare.or.kr -host:welfare.or.kr 이와 같이 검색식을 입력하면 됩니다. 

예2 : Deja News(예: ~g alt.child*)

검색식을 입력한 다음 검색대상 필드를 옵션으로 선택하는 경우 

예1 : Galaxy 

예2 : OpenText Power Search

필드별 검색식 입력상자에 검색식을 작성하는 경우 

예1 : REHABDATA 

예2 : 유럽사회과학정보협의회 통합검색 CESSDA


필드내에서의 비교연산자 Comparison and Range Searches 

필드검색에 있어서, 특히 위의 세번째 유형처럼 각 필드별로 검색식 입력상자가 따로 있는 경우는 좀더 진보된 고급 연산자를 지원하는 것도 있습니다.(예:REHABDATA) 인터넷상의 일반 검색엔진에서는 좀처럼 보기 어려운 연산자이기는 하지만 고급 문헌검색엔진(Dialog, BRS ...)이나 일반 DBMS(dBASEIII+, Approach...)에서는 다 지원되는 것입니다.

연산자기호


의미


예제

=

Equal to (exact match)

=access


>

Greater than

>5500


>=

Greater than or equal to

>=5500


<

Less than

<1-Jan-1996


<=

Less than or equal to

<=TX


:

Within range

1993:1996


※ 주의사항

비교연산자는 수치의 대소뿐만 아니라, 문자열의 알파벳 순서(엄밀히 말하면 코드값), 날짜의 선후를 비교하는데에도 사용됩니다.

Equal to 연산자(=)는 해당 필드내에 정확히 그 문자열만 들어 있어야 한다는 것입니다. 다른 단어(들)이 더 있어서도 안되는 것입니다. 이는 해당 필드내에 들어 있는 여러 단어 중 하나에 대하여 좌우 첨가없이 정확히 일치하는 Whole word(절단검색의 반대)를 찾는 것과는 또 다른 것입니다.

범위(range)연산기호 :대신에 ..등을 사용하기도 합니다.

REHABDATA는 날짜필드에서 비교연산자와 함께 날짜값의 일부만 쓰는 경우, 즉 년월일을 다 적지 않고 년도나 월만 쓰는 경우에는 해당 년도 또는 월의 첫날부터 찾는 것으로 간주합니다. 그리고 날짜형식은 거의 모든 형식을 다 지원하지만 or연산자와 혼동될 수 있는 slash (/)는 쓰지 마십시오. 슬래시를 사용할 경우는 날짜 전체를 따옴표로 묶어야 합니다(예:"6/25/1996"). June 1995 또는 6-95와 같이 쓰시면 무난합니다.



Relevancy, Weight

적확도,정확성,우선순위


히트(hit) 

검색결과 추출된 자료 또는 그 건수를 히트(hit)라고 합니다. 예를들어, 사용자가 입력한 검색식의 조건에 맞는 자료가 1,000건이 나왔을 경우 "1,000건이 hit되었다"라고 표현합니다. 이 경우 히트수는 1,000건이 되는 것이지요.

적합성(relevancy) 또는 우선순위(weight) 

적합성이란 히트된 자료내에 우리가 요구한 검색어가 얼마나 중요한 곳에 들어 있는가? 또는 얼마나 많이 그리고 얼마나 여러번 나오는가? 등을 기준으로 계산하는 정확성의 척도입니다. 예를 들어 웹문서의 타이틀이나 헤드 영역에 해당 단어가 들어 있거나 자료 중에 우리가 입력한 검색식에 딱 맞는 문자열(들)이 들어 있거나 같은 검색어라도 문장 중에 여러번 나온다면 우리가 원하는 자료일 가능성이 높다는 뜻이 된다는 것입니다.

정확도를 평가하는 기준은 검색엔진에 따라 조금씩 다릅니다. 몇가지만 예를 들어 봅시다.


라이코스는 입력된 검색어들간의 인접정도와 출현빈도에 따라 적합성의 점수를 매깁니다. loose match는 적합성점수가 0.1이상인 자료를 찾아주고, 가장 높은 strong match는 0.9이상인 자료만 보여줍니다. 검색결과수(hit)나 적합성의 차이도 있지만 검색소요시간도 크게 차이나는데, strong match를 선택하면 아주 빨리 결과를 보실 수 있습니다.

마젤란은, 검색식에 입력된 검색어들 중에 몇개나 맞추는가와 출현횟수, 검색어가 웹문서의 Title(넷스케이프의 제목막대에 표시되는 문자열)이나 URL 또는 마젤란의 Review에 들어 있는가 를 기준으로 적합성의 점수를 부여합니다. 그리고 검색결과는 이 적합성이 높은 자료부터 표시됩니다.

기타 알타비스타나, 심마니, 미국 정부기록,간행물 데이터베이스 등의 경우도 비슷한 방법으로 정확성을 계산하고 결과에 그 값을 표시하되, 대개는 바로 이 적합성의 점수 순으로 정렬하여 보여줍니다.

적합성과 혼동되기 쉬운 것으로, 소위 사이트의 점수 (Rating)가 있습니다. 예를 들어, 마젤란 경우, 각 사이트를 평가하여 사용의 용이성, 갱신주기, 편집기술, 흥미유발정도 등을 기준으로 점수를 부여하고 그 결과를 별표(one to four stars)로 표시하는데, 별표가 많으면 점수가 높은 것입니다. 그러나 이 점수가 우리가 찾고자 하는 검색식에 얼마나 적합한가를 의미하지는 않습니다. 단지 그 사이트가 일반적으로 좋은 곳이냐 하는 것을 의미할 뿐입니다. 개별 자료의 정확도와는 전혀 다른 의미의 점수인 것입니다.


: