"I know all those words, but that sentence makes no sense to me." "나는 저 단어 모두를 알고 있다. 하지만 저 문장은 내 상식으로는 이해가 가지 않는다." | ||
-- Matt Groening |
Full-text search is a battle between precision—returning as few irrelevant documents as possible—and recall—returning as many relevant documents as possible. While matching only the exact words that the user has queried would be precise, it is not enough. We would miss out on many documents that the user would consider to be relevant. Instead, we need to spread the net wider, to also search for words that are not exactly the same as the original but are related.
full-text 검색은 정확성(precision, 관련 없는 document를 가능한 한 적게 반환하는)과 recall(적합한 document를 가능한 한 많이 반환하는) 사이의 전쟁이다. 사용자가 검색한 단어에 정확히 일치하는 것이 정확한 것이지만, 그것으로 충분하지 않다. 사용자가 관련 있을 거라 생각하는 많은 document를 놓치게 될 것이다. 대신, 정확하게 원본과 동일하지는 않지만, 관련 있는 단어도 검색하기 위해, 검색 범위를 더 넓힐 필요가 있다.
Wouldn’t you expect a search for "quick brown fox" to match a document containing "fast brown foxes", "Johnny Walker" to match "Johnnie Walker", or "Arnolt Schwarzenneger" to match "Arnold Schwarzenegger"?
"quick brown fox" 에 대한 검색은 "fast brown foxes" 를 포함하는 document에 일치하고, "Johnny Walker" 는 "Johnnie Walker" 에 일치하고, "Arnolt Schwarzenneger" 는 "Arnold Schwarzenegger" 에 일치하기를 기대하지 않겠는가?
If documents exist that do contain exactly what the user has queried, those documents should appear at the top of the result set, but weaker matches can be included further down the list. If no documents match exactly, at least we can show the user potential matches; they may even be what the user originally intended!
사용자가 검색한 것을 정확히 포함하는 document가 존재한다면, 해당 document는 결과 집합의 상단에 나타나야 한다. 그러나, 덜 일치하는 document는 목록의 더 아래에 포함될 수 있다. 만약, 정확히 일치하는 document가 없다면, 사용자에게 최소한 일치할 가능성이 있는 document를 보여줄 수 있다. 이것이 사용자가 원래 의도한 것일 수도 있다.
There are several lines of attack:
Remove diacritics like
´
,^
, and¨
so that a search forrôle
will also matchrole
, and vice versa. See Normalizing Tokens.rôle
에 대한 검색은role
과도 일치하고, 그 반대도 마찬가지이기 위해,´
,^
그리고¨
같은 발음 구별 부호를 제거한다. Normalizing Tokens를 참고하자.Remove the distinction between singular and plural—
fox
versusfoxes
—or between tenses—jumping
versusjumped
versusjumps
—by stemming each word to its root form. See Reducing Words to Their Root Form.각 단어의 형태소를 분석 하여, 원형으로 만들어,
fox
,foxes
같은 단수와 복수,jumping
,jumped
,jumps
같이 다른 시제(현재/과거/미래)의 구분을 제거한다. Reducing Words to Their Root Form을 참고하자.Remove commonly used words or stopwords like
the
,and
, andor
to improve search performance. See Stopwords: Performance Versus Precision.검색 성능을 향상시키기 위해,
the
,and
,or
같이 흔히 쓰이는 단어나 불용어(stopwords) 를 제거한다. Stopwords: Performance Versus Precision을 참고하자.Including synonyms so that a query for
quick
could also matchfast
, orUK
could matchUnited Kingdom
. See Synonyms.quick
에 대한 query가fast
에도 일치하거나,UK
가United Kingdom
에 일치하도록 하기 위해 동의어를 포함한다. Synonyms을 참고하자.Check for misspellings or alternate spellings, or match on homophones—words that sound the same, like
their
versusthere
,meat
versusmeet
versusmete
. See Typoes and Mispelings.맞춤법 오류나 대체 철자, 동음 이의어(homophones,
their
와there
,meat
,meet
와mete
같이 동일하게 소리 나는 단어)를 확인한다. Typoes and Mispelings을 참고하자.
Before we can manipulate individual words, we need to divide text into words, which means that we need to know what constitutes a word. We will tackle this in Identifying Words.
개별 단어를 다루기 전에, 텍스트를 단어로 나누어야 한다. 즉, 어떤 것을 단어(word) 로 판단해야 할지 알아야 한다. Identifying Words에서 살펴보자.
But first, let’s take a look at how to get started quickly and easily.
우선, 빠르고 쉽게 시작할 수 있는 방법을 살펴보자.
'2.X > 3. Dealing with Human Language' 카테고리의 다른 글
3-1. Getting Started with Languages (0) | 2017.09.24 |
---|---|
3-1-1. Using Language Analyzers (0) | 2017.09.24 |
3-1-2. Configuring Language Analyzers (0) | 2017.09.24 |
3-1-3. Pitfalls of Mixing Languages (0) | 2017.09.24 |
3-1-4. One Language per Document (0) | 2017.09.24 |