Terrence J.Sejnowski and Charles R. Rosenburg (1986) 에 의해 발표된 내용이다.

이번 내용 또한 해당 논문을 읽고 요약하여 ppt로 만들었다. NETtalk의 세부적인 내용을 다루며 외부적, 하드웨어적 환경은 다루지 않는다.

설명을 하고 넘어가자면 어떤 하드웨어에 NETtalk을 구현함으로써 TTS를 상용화 시키는 방법에 대해 논한다. NETtalk은 신경망 세포(Neural Network)를 이용한 음성발음을 학습시키는 방법으로 문자로부터 음성으로 바꿔주는 방법 중 하나다.

기본적인 배경은 물론 Perceptron(이하 퍼셉트론)이며 이 아이디어의 배경은 인간의 학습방법을 모방하는 것으로 사람이 어린아이 일때는 거울뉴런을 통해 행동을 모방하고 빠르게 학습하는 한편 성장하면 할수록 이 학습력은 낮아지게 된다. 기본적인 신경망 네트워크에서 학습은 이러한 모습을 보이며, 상당한 성능을 가져오는데 퍼셉트론에서 차지하는 환경변수의 인자가 많아 기대하는 최대치를 이끌어 내는 과정이 어렵다.
(perceptron에 관한건 스탠포드 대학에서 기계학습에 대해 다뤘던 ppt를 찾아보자...!)

NETtalk - a parallel network that learns to read aloud.pptx

ppt 내용과 더불어 스크립트도 달려있으니 쉽게 읽을수 있을것이라 생각한다.

히든 레이어 및 인풋 벡터 하나하나의 weight value를 하나의 신경망으로 생각하고 벡터 하나를 신경세포로 생각하면 좀 더 이해가 쉬울것이다. 각각의 인풋에 대해 inner product를 취하는데 이는 superviser learning(지도학습)에서 lable되었던 값과 얼마나 유사한지를 따지는 것이다. 보통의 퍼셉트론이 이렇게 전개되지만 NETtalk에서는 현재 문자와 이전문자, 이후문자가 서로 연관관계가 있을것이며 발음에 영향을 미치는것을 전제로 딜레이를 이용한 학습을 하고 있다.

NETtalk - Parallel Networks that Learn to Pronounce English Text.pptx

이듬해 advance된 NETtalk 논문이다. 본 내용에서는 모음과 자음이 얼마나 발음과 관련있는가를 결과를 통해서 분석해주는 내용이 담겨있어 언어학적으로 접근할 수 있다. 흔히 언어학에서는 관련성을 알아도 명확한 결과와 수식으로 나타내기가 힘든데 이를 뚜렷하게 나타내주어 매우 흥미롭다.

퍼셉트론의 응용이 매우 다양하여 기본적으로 해당 신경망에 대해 알면 여러모로 쓸만하다.

나도 싱글 레이어 퍼셉트론과 멀티 레이어 퍼셉트론을 구현해보았는데 코드를 공개하기에는 아직 미숙한것 같아 좀 더 깔끔하게 정리되면 Java 카테고리에 jar파일이나 소스코드를 전부 공개하겠다.
(Input은 물론 조정해야 할 것이며 interface를 통해 각 모듈 및 매개변수를 조절할 수 있도록 하겠다)

Posted by 태리정
,

작년 한창 사전구축과 번역에 대해서 공부할때 ACL(Association for Computational Linguistics)에 게재되었던 논문 중 하나를 골라 읽고 발표를 했었는데 그때의 자료다.


한창 NLP 테크닉에 대해 공부하던 때라 통계적 기법을 처음으로 접했던 때다.


본 ppt의 내용은 우선 논문에서 사용되었던 기술들의 기초에 대해 설명한다.

SMT기법을 설명하기 위해 IBM에서 발표했었던 IBM model1과 더불어 EM algorithm에 대해 설명한다.

그 후 논문 내용을 살펴보고 평가방법에 대해서 살펴본다. 


한국어로 적었으면 더 좋았으려나? 모르겠다. 간간히 영어로 적기 귀찮아서 한글로 쓴게 보인다.

다운받아보는 어떤 이가 흥미있게 봐주길... 그치만 사소한 영어 문법은 넘어가주길...


The most important thing is how to do. 



※수정 및 배포를 허용하지 않습니다.(나도 논문 결과를 마음대로 이렇게 게재해도 되는지 모름)

Mining for Domain-specific Parallel Text from Wikipedia.pptx


'IT · CS > NLP Tech' 카테고리의 다른 글

C++ Porter's Stemmer 구현.  (0) 2014.04.20
Regular Expression and Automata  (0) 2014.04.09
Posted by 태리정
,

Information retrieval(정보 검색)에서 자주 이용되는 방법중에 하나로 스테밍이 있다.

Stemming은 같은 어미를 가진 단어들을 하나의 색인어로 맵핑하는 것이다.

이러한 일을 하는 이유는 파일크기 감소에 있다. 같은 의미를 지니는

여러 품사의 단어를 하나하나 다 색인어로 사용하게 되면 스테밍 된 단어에 몇배에 달하는

파일 크기를 가지게 되고 검색에 있어서 같은 의미를 지니는 단어에 대해 검색결과로 출력해주는데 있어

비효율적이다.


대표적인 알고리즘으로 Porter Algorithm이 존재한다. (형태소로의 복원은 아니다.)


스테머의 테스트 및 관련 링크가 잘 된 사이트가 있다.


http://jinsuk.memozee.com/articles/porter_stemmer.php?words=Unless+expressly+provided+otherwise+the+present+Regulations+apply+voyages

이곳에 들어가면 더 많은 정보를 얻을 수 있을것이다.


정보검색 시간에 공부한 내용 그대로 포터 스테머를 구현해 이곳에 첨부한다.


※배포는 자유롭게 허락하나 수정배포는 허용하지 않습니다. 수정해야 할 부분은 제게 알려주세요.

Porter.zip


몇일 전에 구현해놨는데 사실 올리기가 부끄럽다. 코드란게 그렇지 않나?
누군가에게 내 것을 보여준다는게... 라이브러리로 코드를 정리해놓았다. 부디 많은 사람이 써주면 그건 그거대로 기쁠것 같다. 조만간 어떠한 문자열 인코딩에서도 동작하도록 수정해보겠다.

Posted by 태리정
,