U E D R , A S I H C RSS

Project Eazy/Source

–ดŠ •„ „ํ–‰˜ฉด ˜ฌฆฌŠ” †ŒŠค

„ „  •ณด

1›” 21

„„ธฐ(Parser)€ ‚ฌ „„ ณดณ  ™‚ฌ ฐพŠ”‹ค.
VP ฐพŠ”‹ค.

1›” 20

‹จ–ด –ด— ”ฐ  €žฅํ•˜Š” ‚ฌ „ด žˆ‹ค. ทธ ‚ฌ „—„œ œœธด(ธฐณธํ˜•)„ €ƒ‰ํ•ด„œ ™‚ฌ ฐพ•„‚ธ‹ค.
–ดด €ํ•˜Š” ™‚ฌŠ” กฐํ•ฉํ˜•œกœ €ํ™˜ํ•ด œœธ„ ฐพŠ”‹ค.

ToDo

AllTest—„œ ํด” •ˆ— žˆŠ” ชจ“  ํ…ŒŠคํŠธ €ดŠค ž™œกœ ฐพ•„„œ ‹คํ–‰ํ•˜ธฐ

†ŒŠค

~cpp 
# EazyWord.py
# coding: euc-kr
class EazyWord:
    def __init__( self ):
        self.cases = []
    def setRoot( self, aRoot ):
        self.root = aRoot
    def addCase( self, aCase ):
        self.cases.append(aCase)
    def getCases( self ):
        return tuple(self.cases)
    def getRoot( self ):
        return self.root

~cpp 
# EazyWordTest.py
# coding: euc-kr
import unittest 
from EazyWord import EazyWord

class EazyWordTestCase(unittest.TestCase):
    def setUp(self):
        self.word = EazyWord()
        self.word.setRoot('')
        self.word.addCase('AOV')
    def testAddCase(self):
        self.assertEquals( ('AOV',), self.word.getCases() )
if __name__ == '__main__': 
    unittest.main()


~cpp 
# EazyDic.py
# coding: euc-kr 
class EazyDic: 
    def __init__(self): 
        self.words = {}
    def addWord( self, aWord): 
        self.words[aWord.getRoot()] = aWord.getCases() 
    def getRoots( self ):
        return self.words.keys()


~cpp 
# EazyDicTest.py
# coding: euc-kr 
import unittest  
from EazyWord import EazyWord 
from EazyDic import EazyDic

class EazyDicTestCase(unittest.TestCase): 
    def setUp(self): 
        self.parser = EazyParser()
        self.dic = EazyDic() 
        self.muk = EazyWord() 
        self.muk.setRoot('') 
        self.muk.addCase('AOV') 
        self.ga = EazyWord() 
        self.ga.setRoot('€') 
        self.ga.addCase('ALV') 
if __name__ == '__main__':  
    unittest.main()


~cpp 
# EazyParser.py
# coding: euc-kr
import hangul
import string
u = lambda x: unicode(x, "euc-kr")
class EazyParser:
    def updateDictionary(self, aDict):
        self.dic = aDict
    def findFundermentalForm(self, aWord):
        johabWord = hangul.disjoint(u(aWord))
        roots = self.dic.getRoots()
        for each in roots: 
            if hangul.disjoint(u(each)) in johabWord: 
                return each + '‹ค' 
    def findVerb(self, aSentence):
        lastToken = aSentence.split()[-1] 
        return self.findFundermentalForm( 
                    self.removeMark(lastToken) )
    def removeMark(self, aPhrase):
        for mark in string.punctuation: 
            if mark in aPhrase:
                aPhrase =  aPhrase.replace(mark,'')
        return aPhrase
    def findVP(self, aSentence):
        NP = self.findNP(aSentence)
        temp = aSentence.split(' ')
        temp.remove(NP)
        return string.join( temp, ' ')
    def findNP( self, aSentence ):
        return aSentence.split(' ')[0]

~cpp 
# EazyParserTest.py
# coding: euc-kr 
import unittest  
from EazyWord import EazyWord 
from EazyDic import EazyDic
from EazyParser import EazyParser
 
class EazyParserTestCase(unittest.TestCase): 
    def setUp(self): 
        self.parser = EazyParser()
        self.dic = EazyDic() 
        self.muk = EazyWord() 
        self.muk.setRoot('') 
        self.muk.addCase('AOV') 
        self.dic.addWord(self.muk)
        self.parser.updateDictionary( self.dic )
        self.ga = EazyWord() 
        self.ga.setRoot('€') 
        self.ga.addCase('ALV') 
    def testFindFundermentalForm(self): 
        self.assertEquals( '‹ค', self.parser.findFundermentalForm('Š”‹ค') ) 
        self.dic.addWord(self.ga)
        self.parser.updateDictionary( self.dic )
        self.assertEquals( '€‹ค', self.parser.findFundermentalForm('„‹ค') ) 
    def testFindVerb(self): 
        self.assertEquals( '‹ค', self.parser.findVerb('‚˜Š” ฐฅ„ Š”‹ค.') ) 
        self.assertEquals( None, self.parser.findVerb('‚˜Š” ํ•™ต— „‹ค.') )
    def testFindVP(self):
        self.assertEquals( 'ฐฅ„ Š”‹ค.', self.parser.findVP('‚˜Š” ฐฅ„ Š”‹ค.') )
    def testFindNP(self):
        self.assertEquals( 'ฐฅ„', self.parser.findNP( 'ฐฅ„ ‚ด€ Š”‹ค.' ) )

if __name__ == '__main__':  
    unittest.main()

~cpp 
# AllTest.py
from EazyParserTest import *
from EazyWordTest import *
from EazyDicTest import *
import unittest
 
if __name__=='__main__':   
    suite = unittest.TestSuite()
    suite.addTest(unittest.makeSuite(EazyParserTestCase, 'test'))
    suite.addTest(unittest.makeSuite(EazyWordTestCase, 'test'))
    suite.addTest(unittest.makeSuite(EazyDicTestCase, 'test'))
    runner = unittest.TextTestRunner()
    runner.run (suite)

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:24:04
Processing time 0.0123 sec