上善若水 수련하는 블로그

자연언어공학 (2)

문자열 유사도 - Global Sequence Alignment view 발행 | 자연언어공학
上善若水 2007.12.14 22:44
재미있고 흥미로운 내용이네요.
제가 전문프로그래머는 아니지만 프로그래밍과 언어학습에 대하여 관심이 많은 사람입니다^^.

"상선약수"는 제가 좋아하는( 즐겨사용하는 ) 말이라서 그런지 어째 친근하네요 ㅎㅎ.
그리고보니 "effortless"는 어떤 의미에서 사용하시는 건지도 궁금해지구요.

저에게 코드를 보내주신다면 감사하겠습니다.
오늘도 좋은 하루되세요..
영어문장 듣기(Dictation)를 보조해주는 S/W를 위해서 코드를 만드는 중이었는데... 이제 코딩도 더이상 진행할 수 있는 입장이 아니라서, 오랫동안 제 디스크에 죽어 있던 코드인데...
http://www.mobigen.com/~hiongun/listenup/align.java.txt 입니다. 원래의 알고리듬에서 Edit-Distance가 맘에 안들어서 약간 수정을 해야만 했습니다. 알고리듬과 코드를 다 이해하시면, 제가 무슨 고민을 했는지 짐작하실수 있을 겁니다. 샘플로 한번 돌려 보세요. 몇가지 바운더리 콘디션에 대해서 버그가 있는 것 같습니다만... 개인 취미 프로젝트라 이것까지만 진행하고 그만뒀어야 했습니다.

Effortless Effort - 노력없는 노력이라는 선문답식의 문구에서 앞단어만 뺀 것입니다.
http://effortlessacquisition.blogspot.com/2005/02/effortless-acquisition-curriculum.html 여기에서 주워 들은 말이고요... Effortless English Club 이라는 영어교육회사가 있는데, 그 회사의 사장 A.J.Hoge의 모토이기도 합니다. 그 교육과정을 통해서 영어를 공부하면서, Effortless Effort (無爲) 라는 단어를 알게 되었습니다. 저는 '스파르타식'이라는 정 반대의 극단적인 방법론만 추구하는 성향이 있는 사람인데, 완벽한 반대 방향이 맘에 들어서 일단 제목이라도 그렇게 붙여 놓고, 몸이 나중에 따라가자는 식으로 생각하고 있습니다.     http://cdn2.libsyn.com/effortlessenglish/Alan_Watts_on_Intelligence.mp3 (원저자의 목소리로 직접 들어 보실 수 있습니다. 이 단어의 어원을...)
평소 궁금했던 건데 잘 보고 갑니다.^^

grep 하고 비슷한 면도 있는 것 같아요.^^
grep 속에 비슷한 매칭이 있는 지는 잘 모르겠습니다만...
제목 Global Sequnce Alignment 중 'Sequnce'에 'e'가 빠졌습니다. 전 유난히 이런 걸 잘 발견합니다. ㅎㅎㅎ
흠, 저는 아직은 못하고 있지만, CALL(computer assisted language learning)에도 관심이 있습니다.
코드 '증말' 주실 수 있으시다면 주십시오~ 열심히 공부하여 알리겠습니다...^^
Dictation을 지원하는 프로그램까지는 아직 가지도 못했습니다. 그냥 Edit Distance 알고리듬을 초벌로 구현한 것만 있습니다.
만들려고 하는 UI의 초안은 http://www.mobigen.com/~hiongun/listenup/view.php 이렇습니다. "힌트보여주기" 버튼을
구현하기 위해서 이 알고리듬이 필요했습니다.

위에 댓글 링크를 보시면 소스코드 있습니다... 그런데.. 아직 좋은 코드는 아닙니다.

예로 실행해 보면 다음과 같은 결과가 나옵니다.

$ ./align.exe "Yes, I love you. Boys and girls." "Yes. You love me. b"
AlignPenalty: 28
AlignText: Yes, (I)<o><u> love (y)(o)_. ____ ___ _____.

두개의 문장을 Align 한 것인데... Yes 부분과 love 부분이 매치 되었고, 매치 안된 부분은 밑줄로 표시되었고, 힌트로 보여줄 글자들은 둥근 괄호안에 넣었고, 틀린 글자들은 꺽쇠 괄호 안에 넣었습니다. 문장을 듣고 받아쓰는 경우, 받아쓰는 사람을 가이드 하기위한 소프트웨어를 만들자면 이런 게 필요하겠죠?

그런데... 코드를 가져가서 실험해 보시면 아시겠지만... 이게 영, 매칭을 잘 못해 줍니다. 문장 듣고 받아쓰기를 가이드하기 위해서는 단순 에디트 디스턴스 이상의 것이 더 들어가야 합니다. 한번 실험해 보세요.

아주 단순한 GUI에 힌트 보여주기 기능만 넣으면 훌륭한 듣기 연습 프로그램이 되지 않겠어요?
MP3 와 그에 해당하는 정답 영문 텍스트를 많이 모아야 하기는 하지만... 요즘에 그런 거 많이 구할 수 있잖아요...
이런 작은 유틸리티 만들면 잘 팔릴까요? 아니 사람들이 많이 쓸까요? 얼마나 쓸지 몰라서 그냥 이 수준에서
그만 두고 있습니다만...
view.php에 소스코드 링크를 걸어두셨네요. 친절하십니다~
문장 듣고 받아쓰기한 결과에서 스크립트랑 받아쓴 내용을 비교 평가 하려면 유사도만 있으면 맞다, 틀리다, 혹은 어느 부분 틀렸으니 알려주겠네요..     유사도 측정하는 것 말고 더 이상의 무엇이 필요할까요....?
음, 기술자와 달리 사람들은 의외로 단순한 기능에 감동하지 않습니까? 반응이야 아무도 모르는 일이니까요...
ㅎㅎㅎ 감사합니다~
매칭 알고리듬만 보자면...

전체 문장이 1000자 정도 되는 한 문단을 받아 쓰려고 할 때, 최초에 타이핑 하는 글자는 몇글자 안될 것인데...
그때, 몇글자가 1천글자 내의 임의의 위치에 매칭되면 매우 쌩뚱맞은 결과가 나옵니다. Edit Distance가 같은 것들이 여기저기 많이 생길 테니까요... 그래서 Edit Distance를 계산할 때, 가중치로, 매칭되는 상대적인 위치가 원문 텍스트의 앞쪽에 오면 상대적으로 더 좋은 점수를 부여 받도록 하는 것입니다. 그러면 매칭을 앞에서 부터 하려고 할 테니까요.

또한 낱낱의 글자단위의 매칭도 중요하지만, 단어 단위의 매칭을 추가로 똑같은 알고리듬으로 더 해서, 단어 수준의 매칭을 유도하면 좀더 사람이 하는 것고 유사한 것이 나오지 않을까 싶습니다.

(1) 앞엣것 우선, (2) 단어단위 추가 계산 이 두가지를 넣으려면 아마 소스코드 길이가 3배는 더 길어지지 않을까요? 그래서 주춤하고 있는 상황입니다.

----------

저는 한 영어 공부 했다고 자신하는 사람인데, 경험상 귀를 뚫는데는 받아쓰기가 특효약입니다. 정말 탁월한 효과를 발휘합니다. 받아쓰기는, 토씨 하나 안 빼고 완벽하게 다 들리는 그런 단계까지 가기 위해서 필수 코스라고 할 수 있습니다. 다만 적절한 콘텐츠와 환경을 구하기 힘든 게 사실이죠. 그래서 누군가가 콘텐츠 모아서, 이런 단순한 GUI 화면과 결합해서 인터넷에 유포하면 꽤 잘 팔리지 않겠어요? 전 그렇게 생각하는데...

과연 돈이 될까요? 돈 될 거 같으면... 움직일 수도 있지 않겠어요?
아, 그렇네요.... 코드를 받아보니까, 길지도 않던데요... 두 가지 더 넣으셔도 되실 듯합니다. ㅎㅎㅎ
돈이 될 거 같은지는 저는 안목이 없구요...
교육 관련한 업계로 뻗쳐 보시는 건 어떠세요? 실제로 어학원 같은 데서 좋은(?) 조건으로 개발자를 채용하여 학습을 도우는 솔루션을 자체적으로 제작도 하던데요....
등록
텍스티콘 텍스티콘
top

'자연언어공학' 카테고리의 다른 글