User:Dmin1/Final project
This page provides an overview and an evaluation of Korean Finite State Transducer I developed.
Contents
Motivation
For the final project, I decided to work on Finite State Transducer for Korean. Although there are several open-sourced POS tagger(Kkoma, HanNanum, and Komoran), none of them are purely rule-based; HanNanum and Komoran uses Hidden Markov Models(statistical method for making inferences about sequential data), and Kkoma requires the usage of a custom relational database.
Although the techniques employed in the aforementioned systems are crucial in achieving state-of-the-art performance, they have certain drawbacks. First, even after achieving extremely high performance, the probabilistic nature of such techniques make it very hard to identify what aspect of the system actually encodes the linguistic pattern. Thus, when an error occurs, it is usually impossible to correct the system manually. On the other hand, this is the development scheme for rule-based systems.
Also, apertium module for Korean has not been developed yet. Therefore, I decided to implement a transducer for Korean.
Overview
The development of this transducer largely consisted of two parts. The first challenge I encountered was to make the apertium pipeline work for Hangul(Decompose-Compose Step). This is the same problem I had while working on Jeju. While I only bypassed the problem in Jeju transducer, this issue is completely solved in this project. The second part consists of normal transducer development tasks: writing rules, adding lemmas, preparing corpora, evaluating, and repeating.
Decompose-Compose Step
Hangul, writing system for Korean, blocks 2 or 3 letters into a syllable-block, where each letter occupies the position of onset, nucleus, and optionally, coda. While Hangul is an alphabet, this blocking system requires that all legal combination of Hangul letters into a syllable encoded in a separate Unicode.
Previously while developing a transducer for Jeju,
Structure and Development
Most of the morphology was implmented in lexc and twol file.
Evaluation
In this implementation of Korean POS analyzer, I was able to analyze most of noun morphology correctly. However, as there were multiple level of suffixes that attaches to verbs in Korean, the analysis and construction of Verb alteration was not easy.
I observed that most of the errors come from either 1)lemmas not yet added or 2)failure to analyze different verb forms.
Coverage of corpora
Trained Corpora refers to the hand-assembled corpora that I used during development cycle to find out which forms were not analyzed by the transducer. Thus, coverage for them is not a good measure of the transducer's performance.(because I have changed the transducer so that their coverages improves.)
On the other hand, each test corpus is a set of 1200 words that I have fetched randomly from Korean Wikipedia. There might be some overlaps between them, but it is unlikely that they are significantly correlated to each other. They provide a more reliable estimate of the transducer's performance as a result.
Both training and test corpora can be accessed here.
Trained Corpora
- kor.phrases.COURT.txt:
- kor.phrases.GENESIS.txt:
- kor.phrases.HIROHITO.txt:
- kor.phrases.ROH.txt:
- kor.phrases.STALIN.txt:
- kor.phrases.WIKI.txt:
Test Corpora
- Random 1200 (1):
- Random 1200 (2):
- Random 1200 (3):
- Random 1200 (4):
- Random 1200 (5):
Precision and Recall
The hand annotated set can be found here.
Using Random 1200 words grabbed from Korean Wikipedia Dump
- Precision:
- Recall: