KR100745293B1 - Method for generating word tree of electronic dictionary and word searching system - Google Patents
Method for generating word tree of electronic dictionary and word searching system Download PDFInfo
- Publication number
- KR100745293B1 KR100745293B1 KR20050088082A KR20050088082A KR100745293B1 KR 100745293 B1 KR100745293 B1 KR 100745293B1 KR 20050088082 A KR20050088082 A KR 20050088082A KR 20050088082 A KR20050088082 A KR 20050088082A KR 100745293 B1 KR100745293 B1 KR 100745293B1
- Authority
- KR
- South Korea
- Prior art keywords
- word
- tree
- node
- search
- tree structure
- Prior art date
Links
Images
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Machine Translation (AREA)
Abstract
본 발명은 전자사전을 위한 단어트리(word tree)를 구성하는 방법과 단어트리 구조를 기반으로 단어를 검색하는 장치에 관한 것이다.The present invention relates to a method of constructing a word tree for an electronic dictionary and an apparatus for searching for a word based on a word tree structure.
본 발명의 단어트리 구성방법 및 단어트리 구조 기반의 전자사전 검색장치에 따르면, 사전 로 데이터(raw data)에서 검색어와 단어 ID를 추출하고, 상기 추출된 검색어 및 단어 ID를 토대로 단어트리를 생성하며, 상기 생성된 단어트리 구조 기반의 사전 정보를 저장함으로써, 상기 저장된 단어트리 구조를 기반으로 질의어를 고속 검색할 수 있다.According to the word tree construction method and word tree structure-based electronic dictionary search apparatus of the present invention, a search word and word ID are extracted from raw data, and a word tree is generated based on the extracted search word and word ID. By storing dictionary information based on the generated word tree structure, a query can be quickly searched based on the stored word tree structure.
전자사전, 단어, 검색, 트리 Electronic dictionary, word, search, tree
Description
도1은 본 발명에 따른 전자사전의 단어트리 구성 시스템의 블록도1 is a block diagram of a word tree construction system of an electronic dictionary according to the present invention;
도2는 본 발명에서 사전 로 데이터(raw data) 구성의 예를 나타낸 도면2 is a diagram showing an example of a raw data configuration in the present invention;
도3은본 발명에서 검색어 및 단어 ID 추출의 예를 나타낸 도면3 is a diagram showing an example of search word and word ID extraction in the present invention;
도4는 본 발명에서 단어트리 생성의 예를 나타낸 도면4 is a diagram showing an example of word tree generation in the present invention;
도5는 본 발명에서 단어트리 생성방법의 플로우차트5 is a flowchart of a method for generating a word tree in the present invention.
도6은 본 발명에서 단어트리 저장방법의 플로우차트Figure 6 is a flowchart of the word tree storage method in the present invention
도7은 본 발명에서 트리 노드 포맷을 나타낸 도면7 illustrates a tree node format in the present invention.
도8은 본 발명에서 단어트리를 저장한 포맷의 초기 형태의 예를 나타낸 도면8 illustrates an example of an initial form of a format for storing a word tree in the present invention.
도9는 본 발명에서 단어트리를 저장한 포맷의 최종 형태의 예를 나타낸 도면9 illustrates an example of a final form of a format in which a word tree is stored in the present invention.
<도면의 주요 부분에 대한 부호의 설명><Explanation of symbols for the main parts of the drawings>
10: 로 데이터(Raw Data) 20: 검색어 및 단어ID 추출부10: Raw Data 20: Search Word and Word ID Extraction Unit
30: 단어트리 생성부 40: 단어트리 저장부30: word tree generation unit 40: word tree storage unit
50: 검색엔진 60: 사용자 인터페이스부50: search engine 60: user interface unit
본 발명은 전자사전을 위한 단어트리(word tree)를 구성하는 방법과 단어트리 구조를 기반으로 단어를 검색하는 장치에 관한 것이다.The present invention relates to a method of constructing a word tree for an electronic dictionary and an apparatus for searching for a word based on a word tree structure.
전자사전은 그 자체의 기능을 고유의 기능으로 탑재한 휴대형 전자사전(제품)으로 사용되고 있을 뿐만 아니라, 휴대폰이나 PDA 등과 같은 휴대형 단말기에 전자사전 기능이 탑재되어 사용되기도 한다. 휴대형 단말기에서 전자사전 기능을 구현하기 위해서는, 영한 전자사전을 예로 든다면, 단어, 발음기호, 뜻, 숙어, 유의어, 예제 등이 포괄된 원래의 사전 데이터인 로 데이터(raw data)를 전자사전 기능 구현에 적절하게 가공하고 재구성해서 사용해야 한다.Electronic dictionaries are not only used as portable electronic dictionaries (products) equipped with their own functions, but also electronic dictionaries are used in portable terminals such as mobile phones and PDAs. In order to implement an electronic dictionary function in a portable terminal, if the English-Korean electronic dictionary is taken as an example, the original dictionary data including raw words, phonetic symbols, meanings, idioms, synonyms, examples, etc. It should be processed and reconfigured as appropriate for your implementation.
즉, 전자사전 기능을 제공할 수 있도록 로 데이터(raw data)를 적절하게 재구성하여 사전 데이터 베이스를 구성함으로써, 최적의 검색결과와 최적의 검색속도 및 효율적인 운용 등을 확보해야 한다. 이 중에서 특히 중요한 것은 검색에 대한 속도와 신뢰도에 해당한다. 현재, 영한 전자사전에는 적어도 20만 단어 이상이 수록된 경우가 적지 않은데, 이렇게 많은 수의 단어를 빠른 속도로 검색하여 검색 결과를 내주기 위해서는 일반적으로 단어트리를 이용하는 경우가 많다.In other words, it is necessary to secure an optimal search result, an optimal search speed, and efficient operation by constructing a dictionary database by appropriately reconstructing raw data to provide an electronic dictionary function. Of particular importance is the speed and reliability of the search. Currently, at least 200,000 words or more are not included in the English-Korean electronic dictionary, but a word tree is generally used to search a large number of words at a high speed and give a search result.
따라서, 단어트리를 기반으로 하여 고속의 효율적인 단어검색이 이루어질 수 있도록 하기 위한 효율적인 데이터 베이스 구성이 요구된다.Therefore, there is a need for an efficient database configuration for fast and efficient word search based on a word tree.
본 발명은 단어트리를 기반으로 전자사전 기능을 구현함에 있어서, 보다 효율적이며 빠른 검색 속도를 보장할 수 있도록 하기 위한 단어트리의 생성, 저장 및 검색에 관한 방법과 그 장치를 제공하는데 그 목적이 있다.An object of the present invention is to provide a method and apparatus for generating, storing and retrieving a word tree for ensuring an efficient and fast retrieval speed in implementing an electronic dictionary function based on a word tree. .
또한 본 발명은 사전 로 데이터(raw data)에서 검색어와 단어ID만을 추출하여 단어트리를 구성하고, 구성된 단어트리를 이용하여 단어 검색 후, 해당 단어의 단어ID를 얻어내서 이 ID로 해석부를 참조하는 전자사전 단어트리 구성방법을 제공하는데 그 목적이 있다.Also, the present invention constructs a word tree by extracting only a search word and a word ID from a raw data, and searches for a word using the constructed word tree, obtains a word ID of the corresponding word, and refers to an interpreter using the ID. The purpose of the present invention is to provide a method of constructing an electronic dictionary word tree.
또한 본 발명은 사전 로 데이터(raw data)로부터 검색어와 단어ID만을 추출하여 AVL(Adelson-Velskii and Landis) 이진 검색(binary search) 단어트리를 구성하고, 구성된 단어트리를 고속 검색이 가능하도록 적절한 형태로 저장함으로써, 빠른 단어 검색을 유도하는 전자사전 단어트리 구성방법과 그 장치를 제공하는데 있다.In addition, the present invention forms an AVL (Adelson-Velskii and Landis) binary search word tree by extracting only the search word and the word ID from the raw data, and forms a suitable word tree for high-speed search. The present invention provides a method and an apparatus for constructing an electronic dictionary word tree for inducing fast word searches.
또한 본 발명은 휴대형 단말기에 전자사전 기능을 탑재할 때, 제한된 메모리 및 프로세스 자원의 효율적인 이용이 가능하도록 단어트리 구조를 간소화하고 이를 통한 고속 검색의 기반을 제공할 수 있도록 한 전자사전 단어트리 구성방법과 단어 트리 구조 기반의 단어 검색장치를 제공하는데 그 목적이 있다.In addition, the present invention provides a method for constructing an electronic dictionary word tree that can simplify the word tree structure and provide a basis for a high-speed search by using the electronic dictionary function in a portable terminal to efficiently use limited memory and process resources. The purpose of the present invention is to provide a word retrieval apparatus based on a word tree structure.
상기 목적을 달성하기 위한 본 발명의 전자사전 단어트리 구성방법은, 사전 로 데이터(raw data)에서 검색어와 단어 ID를 추출하는 단계와; 상기 추출된 검색어 및 단어 ID를 토대로 단어트리를 생성하는 단계와; 상기 생성된 단어트리 구조 기반의 사전 정보를 저장하는 단계; 를 포함하여 이루어지는 것을 특징으로 한다.According to an aspect of the present invention, there is provided a method of constructing an electronic dictionary word tree, the method comprising: extracting a search word and a word ID from raw data; Generating a word tree based on the extracted search word and word ID; Storing dictionary information based on the generated word tree structure; Characterized in that comprises a.
또한 상기 목적을 달성하기 위한 본 발명의 전자사전 검색방법은, 사전 로 데이터(raw data)에서 검색어와 단어 ID를 추출하는 단계와; 상기 추출된 검색어 및 단어 ID를 토대로 단어트리를 생성하는 단계와; 상기 생성된 단어트리 구조 기반의 사전 정보를 저장하는 단계와; 상기 저장된 단어트리 구조를 기반으로 질의어를 검색하는 단계; 를 포함하여 이루어지는 것을 특징으로 한다.In addition, the electronic dictionary search method of the present invention for achieving the above object, the step of extracting a search word and word ID from the raw (raw data); Generating a word tree based on the extracted search word and word ID; Storing dictionary information based on the generated word tree structure; Searching for a query word based on the stored word tree structure; Characterized in that comprises a.
또한 상기 목적을 달성하기 위한 본 발명의 전자사전 검색장치는, 사전 로 데이터(raw data)로부터 추출한 검색어 및 단어ID를 토대로 구성된 단어 트리 구조의 데이터 베이스 저장수단과, 질의어 입력과 검색 결과의 출력을 위한 인터페이스 수단과, 상기 입력 질의어에 대하여 상기 데이터 베이스 저장수단의 단어 트리 구조를 토대로 해당 단어를 검색하여 출력하는 검색엔진을 포함하여 이루어지는 것을 특징으로 한다.In addition, the electronic dictionary search apparatus of the present invention for achieving the above object, the database storage means of the word tree structure based on the search word and the word ID extracted from the raw data (raw data), query input and output of the search results And a search engine for searching for and outputting the corresponding word based on the word tree structure of the database storage means with respect to the input query word.
이하, 첨부된 도면을 참조하여 본 발명에 따른 전자사전 단어트리 구성방법의 실시예를 설명한다.Hereinafter, with reference to the accompanying drawings will be described an embodiment of the electronic dictionary word tree configuration method according to the present invention.
도1은 본 발명의 전자사전 단어트리 구성 시스템의 구성을 보여준다.Figure 1 shows the configuration of the electronic dictionary word tree configuration system of the present invention.
본 발명에 따른 전자사전 단어트리 구성 시스템은 사전 정보의 로 데이터(raw data)(10)와, 상기 로 데이터(raw data)에서 검색어와 단어ID를 추출하는 검색어 및 단어ID 추출부(20)와, 상기 추출된 정보를 이용해서 단어트리를 생성하는 단어트리 생성부(30)와, 상기 생성된 단어트리를 적절한 포맷으로 저장하는 단어트리 저장부(40)를 포함하고 있다. 또한, 상기 단어트리 저장부(40)에 저장된 트리구조 기반의 사전 데이터에 베이스로부터 사용자가 질의한 단어를 검색하기 위한 검색 엔진(50) 및 사용자 인터페이스부(60)를 포함한다.The electronic dictionary word tree construction system according to the present invention includes a
사전 정보의 로 데이터(raw data)(10)는 예를 들면 전자사전 제작업체로부터 제공되는 데이터일 수 있다. 이 데이터는 단어ID, 검색어, 표제어, 해석 등의 정보를 포함한다. 검색어 및 단어ID 추출부(20)는 상기 사전 정보의 로 데이터(raw data)(10)로부터 검색어와 단어ID를 추출한다. 추출된 검색어와 단어ID는 단어트리 생성부(30)로 전달된다. 단어트리 생성부(30)는 검색어 및 단어ID를 토대로 단어트리를 생성하고, 이 단어트리 정보는 저장부(40)로 전달되어 본 발명에서 제안하게 되는 적절한 포맷으로 저장하게 된다. 여기에 저장된 단어트리 정보를 토대로 하여 고속의 단어 검색이 가능하게 된다. 이는 사용자 인터페이스부(60)를 통하여 검색할 질의어가 입력되었을 때, 검색 엔진(50)에서 단어트리 저장부(40)의 트리구조 기반 데이터 베이스를 토대로 해당 질의어에 대한 검색을 수행함으로써 이루어진다. 검색 엔진(50)에 의한 단어 검색방법은 후에 상세히 설명될 것이다.
도2는 사전 로 데이터(raw data)의 예를 보여 준다. 도2를 살펴보면 전자사전 구현을 위해서 제공되는 로 데이터(raw data)의 구조를 알 수 있다. 로 데이터(raw data)는 단어ID와 검색어, 표제어, 해석을 포함한다. 일반적으로 사전에는 대량의 정보가 수록되는데, 현재 영한 사전의 경우는 적어도 수십만 단어 이상이 존재한다. 따라서, 단어와 그 단어의 모든 정보를 체계적으로 관리하기 위해서 각 단어마다 ID를 부여하여 관리와 업데이트(update)를 하게 된다. 이러한 점이 고려되어 사전의 로 데이터(raw data)는 도2에 나타낸 바와 같이 단어ID, 검색어, 표제어, 해석 등의 구성 요소를 포함하게 된다. 이외에도 부가적으로 품사의 형태, 파생어, 예문 등과 같은 정보가 따를 수 있지만, 본 발명에서 제시하는 예는 가장 기 본적인 형태만을 예제로 들었을 뿐이다.2 shows an example of raw data. Looking at Figure 2 it can be seen the structure of the raw data (raw data) provided for the electronic dictionary implementation. Raw data includes word ID, search word, headword, and interpretation. Generally, a dictionary contains a large amount of information, and at least hundreds of thousands of words exist in the English-Korean dictionary. Therefore, in order to systematically manage a word and all information of the word, an ID is assigned to each word for management and update. Considering this point, raw data of the dictionary includes components such as word ID, search word, headword, and interpretation, as shown in FIG. 2. In addition, information such as a part-of-speech, derivatives, and example sentences may additionally be followed. However, the examples provided in the present invention only include the most basic forms as examples.
앞서 설명한 검색어 및 단어ID 추출부(20)에서 도2에 나타낸 로 데이터(raw data) 정보를 이용해서 검색어와 단어ID를 추출하면 도3에 나타낸 바와 같은 정보가 구해진다. 즉, 사전의 로 데이터(10)에서 검색어와 단어 ID 만으로 이루어진 추출 결과물을 얻을 수 있게 되는 것이다. 이렇게 추출된 검색어와 단어ID는 본 발명에서 단어트리를 구성하는데 가장 필요한 정보로 사용된다. 단어트리 생성부(30)에서는 상기 추출된 검색어 및 단어ID를 토대로 하여 단어트리를 생성하게 된다.When the search word and the word ID are extracted using the raw data information shown in FIG. 2, the search word and the word
도4는 단어트리 생성부(30)에 의하여 생성된 단어트리 구조를 도식화하여 보여주고 있다. 도4에 나타낸 단어트리 구조는 후에 설명할 AVL 트리이며, 또한 이진 검색 조건을 만족하는 구조가 된다. 여기서, 트리의 각 노드는 단어를 키(key)로 하여 생성된 것이며, 각 노드에는 해당 단어ID도 내재되어 있다.4 is a diagram illustrating a word tree structure generated by the
도5에 상기 검색어 및 단어ID를 이용해서 도4와 같은 구조의 단어트리를 구성하는 방법을 나타내었다.FIG. 5 illustrates a method of constructing a word tree having the structure shown in FIG. 4 by using the search word and the word ID.
제 1 단계(S10)는 단어 및 ID를 읽어오는 단계이다. 즉, 로 데이터(raw data)로부터 검색어 및 단어ID 추출부(20)에서 추출한 검색어 및 단어 ID를 단어트리 생성부(30)가 읽어오는 단계이다.The first step S10 is to read a word and an ID. That is, the word
제 2 단계(S20)는 노드(node)를 생성하는 단계이다. 즉, 단어트리 구조의 근간이 될 트리 노드(tree node)를 생성하는 단계이다.The second step S20 is a step of generating a node. That is, a step of generating a tree node to be the basis of the word tree structure.
제 3 단계(S30)는 상기 생성된 노드(node)를 트리에 삽입하는 단계이다. 이를 위하여 본 발명에서는 AVL BST(Adelson-Velskii and Landis Binary Search Tree)를 적용한다.The third step S30 is to insert the generated node into a tree. To this end, the present invention applies AVL BST (Adelson-Velskii and Landis Binary Search Tree).
여기서 AVL 트리는 트리 구조에서 특정 위치에 있는 어느 노드(node)를 기준으로 볼 때에도 그 노드를 루트(root)로 하는 서브트리들의 높이가 균형을 이루는 트리 구조를 말한다. 즉, 루트 노드의 왼쪽과 오른쪽 서브트리 사이의 높이 차이가 최대 1 차이를 갖는 구조이므로 이를 균형(balance) 트리라고도 한다. BST는 2진 검색 트리로써, 트리의 각 노드가 한 개의 키(key) 값을 가지며, 각 노드의 키값은 그 노드를 루트로 하는 왼쪽 서브트리의 노드들이 갖는 키값들보다 항상 크며, 그 노드를 루트로 하는 오른쪽 서브트리의 노느들이 갖는 키값들보다 항상 작은 성질을 갖는 트리를 말한다. 그리고, 키값이 동일한 경우에는 일반적으로 왼쪽 서브트리로 삽입한다.In this case, the AVL tree refers to a tree structure in which the heights of subtrees whose nodes are rooted in the tree structure are balanced even with reference to any node at a specific position in the tree structure. That is, since the height difference between the left and right subtrees of the root node has a maximum difference of 1, this is also called a balance tree. A BST is a binary search tree where each node in the tree has one key value, and each node's key value is always greater than the key values of the nodes in the left subtree rooted at that node. It is a tree that is always smaller than the key values of the nodes of the right subtree as the root. If the key values are the same, they are generally inserted into the left subtree.
본 발명에서 제안하는 단어트리는 AVL 2진 트리로써, 각 노드의 키(key) 값은 검색어이며, 단어ID도 같이 포함하여 저장해 놓는다. 즉, 각 노드의 키값으로 검색어와 함께 단어ID를 저장하는 것이다. 다시 말하자면, 단어트리를 생성할 때에는 검색어를 기반으로 트리가 생성되지만, 각 노드에는 검색어 및 단어ID값도 같이 저장해 놓는 것이다.The word tree proposed by the present invention is an AVL binary tree. The key value of each node is a search word, and the word ID is also stored. That is, the word ID is stored together with the search word as a key value of each node. In other words, when a word tree is created, a tree is generated based on the search word, but the search word and the word ID value are also stored in each node.
이와 같이 단어 및 단어ID에 대한 노드를 생성하고, 이를 트리에 삽입한 후에는 현재 트리 구조가 AVL 트리인지를 판단한다. 이 것이 제 4 단계(S40)에 해당한다.After generating nodes for words and word IDs and inserting them into the tree, it is determined whether the current tree structure is an AVL tree. This corresponds to the fourth step S40.
제 4 단계(S40)의 판단 결과, 현재 트리 구조가 AVL 트리가 아니면 이를 AVL 트리가 되도록 노드 회전을 수행한다. 즉, 제 5 단계(S50)로 이행하여, 현재 트리 구조가 AVL 트리가 아닌 경우 현재 트리 구조에 대하여 노드 회전을 수행함으로써 현재 트리 구조를 AVL 트리가 되도록 하는 것이다. 이 과정은 읽어온 해당 단어에 대하여 노드의 생성과 트리 삽입 후, 해당 단어 트리가 AVL 트리 조건을 만족하지 않으면 노드 회전을 통해서 해당 단어 트리가 AVL 트리를 만족시키도록 하고, AVL 트리가 만족되면 제 6 단계(S60)로 이행하여, 그 다음 단어를 위와 동일한 방식으로 마지막 단어까지 반복하여 수행하면서 단어 트리를 생성하는 과정에 해당한다.As a result of the determination in the fourth step S40, if the current tree structure is not the AVL tree, the node is rotated so as to become the AVL tree. That is, in step S50, when the current tree structure is not the AVL tree, node rotation is performed on the current tree structure so that the current tree structure becomes an AVL tree. In this process, after the node is created and the tree is inserted for the read word, if the word tree does not satisfy the AVL tree condition, the word tree satisfies the AVL tree by rotating the node. The process proceeds to step S60 and corresponds to a process of generating a word tree while repeatedly performing the next word to the last word in the same manner as described above.
앞서 설명한 바와 같이 도4는 상기 단어 트리 생성과정을 통해서 생성된 단어 트리의 예를 보여준다. 여기서, 트리의 각 노드는 단어를 키(key)로 하여 생성된 것이며, 각 노드에는 해당 단어ID도 내재되어 있다. 도4의 트리는 AVL 트리를 만족하고 있으며, 또한 2진 검색 트리의 조건도 만족하고 있다.As described above, FIG. 4 shows an example of a word tree generated through the word tree generation process. Here, each node of the tree is generated using a word as a key, and each node also has a corresponding word ID. The tree of Fig. 4 satisfies the AVL tree, and also satisfies the condition of the binary search tree.
지금까지 설명한 바와 같이 단어 트리가 생성이 되면, 생성된 단어 트리를 파일로 저장한다. 도6은 단어 트리 저장방법을 나타낸 플로우차트이다.As described above, when the word tree is created, the generated word tree is saved as a file. 6 is a flowchart showing a word tree storing method.
제 1 단계(S100)는 단어 트리의 루트(root) 노드 포인터를 얻어오는 단계이다. 즉, 단어트리 생성부(30)를 통해 이미 생성된 단어트리의 루트 노드의 포인터를 구해오는 것이다. 다음, 제 2 단계(S200)에서는 루트 노드의 위치를 저장할 공간을 초기화한다. 이 것은 루트 노드가 어디에 저장될 지를 현재 단계에서는 알지 못하기 때문에 이를 임의의 값으로 초기화하는 단계이다. 도8에서는 'PP'라고 루트 노드의 위치를 초기화하여 저장하였다. 이와 같이 루트 노드의 위치값을 초기화하여 저장한 후 루트 노드의 포인터를 이용하여 트리를, 순서대로 루트를 찾아 이동(inorder traversal)하면서 방문한 노드 순으로 각 노드의 정보값을 저장한다(단계 S300). 여기서, 노드의 정보값은 노드에 저장된 검색어 및 단어 ID, 그리고 그 노드에 속한 왼쪽 및 오른쪽 자식 노드의 포인터를 이용한 위치값(주소)을 말한다.The first step S100 is to obtain a root node pointer of the word tree. That is, the word
이와 같이 각 노드의 정보값을 순서대로 이동(inorder traversal)하면서 방문하며 노드 정보를 저장할 때에는 노드의 검색어 및 단어 ID는 알 수 있지만, 자식 노드가 어느 주소에 저장될 지는 아직 모른다. 즉, 모든 노드를 방문하며 저장하고 나서야 각 노드의 위치 주소를 알 수 있게 된다. 따라서, 처음 노드 정보를 저장하는 단계에서는 왼쪽과 오른쪽 서브 트리의 위치를 단순하게 초기화시켜 주게 된다. 이후 모든 노드의 위치를 업데이트 시켜 주며(단계 S400), 도8에서 보면 각 노드마다 'LLRR'과 같이 위치 정보를 모르기 때문에 단순하게 초기화한 것을 알 수 있다.As such, when a node visits information values of each node in order traversal and stores node information, the search word and word ID of the node are known, but it is not known at which address the child node is stored. In other words, the location address of each node is not known until all nodes have been visited and stored. Therefore, in the step of storing the node information for the first time, the positions of the left and right subtrees are simply initialized. After that, the location of all nodes is updated (step S400), and in FIG. 8, since the location information is not known as 'LLRR' for each node, it can be seen that it is simply initialized.
이와 같은 일련의 과정을 거치면 각 노드마다 단어 문자수, 검색 단어, 단어 ID, 왼쪽 자식의 위치, 오른쪽 자식의 위치 등 총 5가지 정보값을 갖는다. 여기서 단어 문자수는 영어 단어의 경우 128자 이상이 되는 단어가 없으므로 1바이트 만으로도 충분하게 표현할 수 있다. 그리고, 검색 단어는 영어의 경우 한글자마다 1바이트를 차지하므로 문자수×1바이트 만큼의 저장 공간이 필요하다. 단어 ID의 경우에는 사전을 제공하는 업체에서 기록한 ID값의 총 범위에 따라 다르게 표현될 수 있다. 일반적으로 영어 사전의 경우 총 단어 수가 20만 단어 내지 30만 단어 정도가 된다고 보면, 이 경우는 4바이트로 표현함으로써 무난하게 된다. 왼쪽 자식 위치 및 오른쪽 자식 위치의 경우에도 4바이트로 표현하면 무난하다. 도8 및 도9에서는 앞서 설명한 도4의 예를 적용한 것이므로 여기서는 2바이트 만을 할당하여 표현 하였다.Through such a series of processes, each node has a total of five information values, including word count, search word, word ID, position of left child and position of right child. Here, the number of word characters is sufficient because only one byte can be expressed in English words because there are no words having more than 128 characters. In the case of English, the search word occupies one byte for each Hangul character, and thus a storage space corresponding to the number of characters × 1 byte is required. In the case of the word ID, it may be expressed differently according to the total range of ID values recorded by the provider providing the dictionary. In general, in the case of an English dictionary, if the total number of words is about 200,000 words to about 300,000 words, in this case, it is safe to express by 4 bytes. In the case of the left child position and the right child position, it can be expressed as four bytes. 8 and 9 apply the example of FIG. 4 described above, so only 2 bytes are allocated and represented.
도7은 단어 문자수, 검색단어, 단어ID, 외쪽 자식 위치, 오른쪽 자식 위치 정보를 포함하는 트리 노드의 포맷을 보여주고 있다.7 shows the format of a tree node including the number of word characters, search word, word ID, outer child position, and right child position information.
도8은 단어 트리 저장부에서 루트 노드의 위치 초기화 및 저장과 순서대로 이동(inorder traversal)으로 노드를 방문하며 저장하는 단계까지에서 저장된 트리의 예를 보여주고 있다.FIG. 8 shows an example of a tree stored in the step of initializing and storing the position of the root node in the word tree storage unit and visiting and storing the nodes in order traversal.
이를 살펴본다. 맨 앞 부분에 'PP4base100LLRR'이라고 표현되어 있다. 여기서 'PP'라고 표현된 부분은 루트 노드의 위치를 모르기 때문에 임의의 값으로 초기화한 것이며, 그 다음의 '4'는 현재 노드에 저장된 단어의 길이가 '4'라는 의미이다. 그 다음 'base'는 현재 노드의 검색 단어이며, 그 다음 '100'은 현재 노드의 단어 ID값을 의미한다. 그 다음 'LLRR'은 왼쪽 자식 노드와 오른쪽 자식 노드의 위치 정보를 의미하는데 아직까지는 위치 주소를 알 수 없으므로 임의의 값으로 초기화한 값이다.Look at this. At the very beginning it says 'PP4base100LLRR'. Here, 'PP' is initialized to an arbitrary value because the location of the root node is not known. The next '4' means that the length of the word stored in the current node is '4'. 'Base' is the search word of the current node, and '100' is the word ID value of the current node. Next, 'LLRR' refers to the location information of the left child node and the right child node. Since the location address is not known yet, it is initialized to an arbitrary value.
도8과 같이 초기 저장이 이루어진 후 모든 노드의 위치 업데이트를 수행한다(S400). 즉, 도8과 같이 상기 단계(S300)에서 수행한 결과에서 'PP', 'LL, 'RR' 등의 초기 위치값을 업데이트 하는 과정이다.After initial storage as shown in FIG. 8, location updates of all nodes are performed (S400). That is, as shown in FIG. 8, the initial position values such as 'PP', 'LL', and 'RR' are updated in the result of the step S300.
도9는 각 노드의 위치를 업데이트한 결과를 16진수 코드 형태로 나타내고 있다.9 shows the result of updating the position of each node in the form of hexadecimal code.
간단히 맨 앞 부분의 '2800 04 62617365 64000000 0000 00 00'에 대해서 설명하면, 맨 앞의 '2800'은 'PP'를 업데이트한 결과로써 루트 노드가 '28번지'에 있 다는 의미이다. '28번지'로 이동해 보면 'computer' 단어의 노드 앞단을 가리키고 있음을 확인할 수 있다. 그 다음 '04'는 현재 노드의 단어 길이가 '4'라는 의미이며, 그 다음 '62617365'는 'base'의 아스키 코드값이다. 즉, 0x62 = b, 0x61 = a, 0x73 = s, 0x65 = e 이다.If you simply describe the beginning of '2800 04 62617365 64000000 0000 00 00', the first '2800' means that the root node is at '28' as a result of updating 'PP'. If you go to '28', you can see that it points to the front node of the word 'computer'. Then '04' means the word length of the current node is '4', and '62617365' is the ASCII code value of 'base'. That is, 0x62 = b, 0x61 = a, 0x73 = s, and 0x65 = e.
그 다음 '64000000'은 현재 단어의 ID 값을 말하는데 현재 단어 'base'의 ID 값은 '100'이다. 즉, 0x00000064 = 100인 것이다. 여기서는 단어 ID를 4바이트로 표현하였다. 그 다음 '0000'은 왼쪽 서브 트리의 위치정보를 말하는데, 도4를 보면 'base'노드에서 왼쪽 서브트리는 없으므로 널(NULL)을 가리키고 있다. 따라서 왼쪽 서브트리 위치정보는 '0'의 값으로 업데이트 된 것이다. 마찬가지로 그 다음 '0000'은 오른쪽 서브트리의 위치정보를 말하는데, 도4에서 보면 'base'노드의 오른쪽 서브트리도 존재하지 않으므로 '0'의 값으로 업데이트된다. 여기서는 자식 위치 정보를 표현하기 위해 2바이트로 표현하였다. 이러한 포맷으로 구성된 단어트리를 파일로 저장하게 되면 저장된 파일을 다시 오픈(open)하여 언제든지 단어 검색을 수행할 수 있게 된다.Next, '64000000' refers to the ID value of the current word. The ID value of the current word 'base' is '100'. That is, 0x00000064 = 100. In this example, the word ID is represented by 4 bytes. Next, '0000' refers to the location information of the left subtree. Referring to FIG. 4, since there is no left subtree in the 'base' node, it indicates null. Therefore, the left subtree location information is updated with the value of '0'. Similarly, the next '0000' refers to the position information of the right subtree. In FIG. 4, since the right subtree of the 'base' node does not exist, it is updated to a value of '0'. In this case, two bytes are used to represent child position information. If a word tree composed of such a format is saved as a file, the saved file can be opened again and the word search can be performed at any time.
예를 들어, 도9와 같이 단어 검색 DB가 구성되었을 때 사용자의 질의어(query word)로 'girl'이라는 단어를 입력하였다고 가정 하자. 그러면 우선 도9와 같이 구성된 단어 검색 DB 파일을 오픈한다. 그런 다음 맨 앞의 2바이트를 읽어온다. 이 때의 값은 '2800'이므로 '0x28번지'로 파일 포인터를 이동한다. 즉, 도7에 나타낸 바와 같이 이미 트리 노드의 포맷은 규정되어 있으므로 이동한 상황에서 1바이트를 읽어온다. 이 정보는 현재 방문한 노드에 저장된 검색어의 단어 길이를 의미할 것이다.For example, suppose that the word 'girl' is input as the user's query word when the word search DB is configured as shown in FIG. First, the word search DB file configured as shown in FIG. 9 is opened. Then read the first two bytes. At this time, since the value is '2800', move the file pointer to '0x28'. That is, as shown in Fig. 7, the format of the tree node is already defined, so that one byte is read in the moved situation. This information will mean the word length of the search term stored in the currently visited node.
'0x28번지'로 이동한 후 1바이트를 읽어오면 '08'값을 얻는다. 이는 '0x08'을 의미하므로 단어 길이가 '8'이 된다. 따라서, 그 다음 8바이트를 읽어오면 현재 노드의 검색어를 알 수가 있는 것이다. 여기서는 '636F6D7075746572'를 읽어오게 된다. 각각의 바이트 값들은 'computer'의 아스키 코드값들이다. 따라서, 현재 노드는 'computer' 검색어가 저장된 루트 노드이다.Move to '0x28' and read 1 byte to get '08'. This means '0x08', so the word length is '8'. Therefore, reading the next 8 bytes gives the current node's search term. Here you will read '636F6D7075746572'. Each byte value is an ASCII code value of 'computer'. Therefore, the current node is the root node where the 'computer' search word is stored.
그 다음, 질의어와 현재 방문 노드에서의 검색어와 비교한다. 즉, 'girl'과 'computer'를 비교하면 'girl'이 'computer'보다 큰 값이므로 오른쪽 자식 노드로 이동해야 한다. 따라서 현재 노드에서 오른쪽 자식 노드로 이동하려면 오른쪽 자식 노드가 저장된 주소를 알아야 한다. 그러므로, 현재 읽은 시점에서 단어 ID가 저장되는 바이트 수 만큼 이동하고 왼쪽 자식 노드 위치 저장을 위한 2바이트를 다시 뛰어 넘은 후, 그 지점에서 2바이트를 읽어와야 오른쪽 자식 노드의 위치값이 될 것이다.Next, the query is compared with the search term at the current visited node. In other words, when comparing 'girl' and 'computer', 'girl' is larger than 'computer' and must be moved to the right child node. Therefore, to move from the current node to the right child node, you need to know the address where the right child node is stored. Therefore, at the time of the current reading, the word ID moves by the number of bytes stored, jumps over two bytes for storing the left child node position, and reads two bytes at that point to be the position value of the right child node.
따라서, 여기서는 '6100'을 읽어온다. 이 값은 '0x61'을 의미하므로 이 번지값으로 파일 포인터를 이동시킨다. 그런 다음 동일한 방법으로 1바이트를 읽어오면 '05'값을 가져오고, 그러면 5바이트를 읽어오게 되는데, '6D65646961'인 'media'가 저장된 검색어임을 확인할 수 있게 된다.Therefore, we read '6100' here. Since this value means '0x61', move the file pointer to this address. Then, reading 1 byte in the same way brings the value '05', and then reads 5 bytes, where 'media', which is '6D65646961', is a stored search term.
질의어 'girl'과 'media'를 비교하면 질의어가 작으므로 왼쪽 자식노드로 이동해야 하고, 따라서 단어 ID용 4바이트를 뛰어넘은 후 2바이트를 읽어오면 왼쪽 자식 노드가 저장된 주소값인 '4600'을 얻는다. 즉, '0x46번지'로 다시 이동하게 되고, 여기서 다시 1바이트를 읽으면 '05'값을 얻게 되므로 5바이트를 읽어온다. When comparing the query words 'girl' and 'media', the query is small, so it must be moved to the left child node. Therefore, if 2 bytes are read after reading 4 bytes for the word ID, the left child node returns the stored address value '4600'. Get In other words, it moves back to '0x46', and if it reads 1 byte again, it gets '05', so it reads 5 bytes.
그러면 '6865617274'인 'heart'를 확인할 수 있게 된다. 'heart'와 질의어 'girl'을 다시 비교하면 질의어 'girl'이 더 작으므로 다시 왼쪽 자식 노드로 이동해야 한다. 그러므로 현 시점에서 단어 ID용 4바이트를 뛰어넘고 2바이트를 읽어오면 자식 노드가 저장된 '0x39'로 이동하게 된다.Then you can see the 'heart' which is '6865617274'. If you compare 'heart' with the query 'girl' again, the query 'girl' is smaller and you must move back to the left child node. Therefore, at this point, reading 4 bytes beyond 4 bytes for word ID will move the child node to '0x39'.
파일 포인터를 다시 상기 지점으로 이동시키고 1바이트를 읽어오면 '04'값을 읽어오므로 다시 4바이트를 읽어오게 되는데, 이 것이 'girl'이 저장된 검색어임을 알 수 있다. 질의어 'girl'과 비교하면 동일하다고 판단하므로 여기서 현재 방문한 노드의 단어 ID를 읽어온다. 즉, 현재 파일 포인터 시점에서 4바이트를 읽어오면 '68000000'을 얻어오게 되는데 이는 '0x68'을 의미하므로 단어 ID가 '104=(0x68)'라는 것을 최종적으로 알 수 있게 된다. 이렇게 알아낸 질의어의 단어 ID를 이용해서 사전 DB에서 이 단어 ID에 맞는 부분을 확인함으로써 질의어의 해석 부분을 취득할 수 있다.If the file pointer is moved back to the point and 1 byte is read, the value '04' is read, and thus 4 bytes are read again, which indicates that the word 'girl' is stored. Compared with the query girl, it is determined to be the same, so the word ID of the currently visited node is read. In other words, reading 4 bytes from the current file pointer yields '68000000', which means '0x68', so we can finally see that the word ID is '104 = (0x68)'. By using the word ID of the query word thus found, it is possible to obtain the interpretation part of the query word by checking the part matching the word ID in the dictionary DB.
본 발명은 전자사전 기능 구현을 위한 단어트리의 구성 기법에 관한 것으로서, 사전의 로 데이터(raw data)로부터 검색어와 단어 ID만 취득하여 단어트리를 구성함으로써, 수십만개 이상 되는 많은 단어들로부터 원하는 단어를 빠르게 검색할 수 있게 한다. 또한, 단어 트리를 구성하는 경우에 AVL 트리 성질을 가지므로 단어 트리가 균형을 갖추게 되어 평균적으로 단어 검색에 맞는 구조를 이룰 수 있으며, 이진 검색 트리의 성질 또한 마찬가지이므로 검색의 빠른 결과를 유도할 수 있다.The present invention relates to a technique of constructing a word tree for implementing an electronic dictionary function. By obtaining only a search word and a word ID from raw data of a dictionary and constructing a word tree, a desired word from many hundreds of thousands of words is obtained. Allow for quick search. In addition, when constructing a word tree, it has AVL tree property, so that the word tree is balanced so that the structure is suitable for the word search on average, and the nature of the binary search tree is also the same, which leads to quick results of the search. have.
예를 들어, 단어의 총 개수가 N개인 경우 평균 log2N 만큼의 비교 회수가 필요하게 되는데, 본 발명에 따르면 20만 단어의 영어사전인 경우 약 18회의 단어 비교만 수행하므로 상당히 빠른 검색이 가능해지고, 생성된 단어 트리를 본 발명에서 제안한 특정한 저장 포맷에 따라 파일로 저장함으로써 언제든지 파일을 열어 단어 검색을 할 수 있는 기능 및 기반을 제공한다.For example, if the total number of words is N, an average number of comparisons of log 2 N is required. According to the present invention, a 200,000 word English dictionary performs only about 18 word comparisons, which enables a fairly fast search. In addition, the generated word tree is stored in a file according to a specific storage format proposed by the present invention, thereby providing a function and a foundation for opening a file and performing a word search at any time.
Claims (14)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20050088082A KR100745293B1 (en) | 2005-09-22 | 2005-09-22 | Method for generating word tree of electronic dictionary and word searching system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20050088082A KR100745293B1 (en) | 2005-09-22 | 2005-09-22 | Method for generating word tree of electronic dictionary and word searching system |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20070033660A KR20070033660A (en) | 2007-03-27 |
KR100745293B1 true KR100745293B1 (en) | 2007-08-01 |
Family
ID=41631051
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20050088082A KR100745293B1 (en) | 2005-09-22 | 2005-09-22 | Method for generating word tree of electronic dictionary and word searching system |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100745293B1 (en) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20030017282A (en) * | 2001-08-24 | 2003-03-03 | 박종원 | An electronic dictionary system having a tree structure and the product |
-
2005
- 2005-09-22 KR KR20050088082A patent/KR100745293B1/en not_active IP Right Cessation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20030017282A (en) * | 2001-08-24 | 2003-03-03 | 박종원 | An electronic dictionary system having a tree structure and the product |
Also Published As
Publication number | Publication date |
---|---|
KR20070033660A (en) | 2007-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3152868B2 (en) | Search device and dictionary / text search method | |
US8055498B2 (en) | Systems and methods for building an electronic dictionary of multi-word names and for performing fuzzy searches in the dictionary | |
US6862599B2 (en) | Software-based methodology for the storage and retrieval of diverse information | |
US8266150B1 (en) | Scalable document signature search engine | |
KR20060045659A (en) | Method and system for renaming consecutive keys in a b-tree | |
CN109815238B (en) | Method and device for realizing dynamic addition of database by strictly balanced binary tree | |
CN102867049A (en) | Chinese PINYIN quick word segmentation method based on word search tree | |
CN111813744A (en) | File searching method, device, equipment and storage medium | |
CN112579604A (en) | Test system number making method, device, equipment and storage medium | |
CN113704575B (en) | SQL method, device, equipment and storage medium for analyzing XML and Java files | |
KR102375511B1 (en) | Document storage management server for performing storage processing of document files received from a client terminal in conjunction with a plurality of document storage and operating method thereof | |
Kanda et al. | Dynamic path-decomposed tries | |
KR100745293B1 (en) | Method for generating word tree of electronic dictionary and word searching system | |
US7505904B2 (en) | Database construction apparatus and method | |
CN103793522B (en) | Fast signature scan | |
JP2003242179A (en) | Character string collating method, document processing device using the method and program | |
EP3404560A1 (en) | Search program, search device, and search method | |
US20110060748A1 (en) | Apparatus and Method for Heap Sorting with Collapsed Values and Selective Value Expansion | |
Hasemann et al. | The wiselib tuplestore: a modular RDF database for the internet of things | |
CN110825846B (en) | Data processing method and device | |
CN114880523A (en) | Character string processing method and device, electronic equipment and storage medium | |
CN110807092B (en) | Data processing method and device | |
KR100745292B1 (en) | Dlectronic dictionary searching system | |
JP6361472B2 (en) | Correspondence information generation program, correspondence information generation apparatus, and correspondence information generation method | |
JP5771971B2 (en) | Information processing apparatus, information processing method, and computer program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |