728x90

방학 중 lab에서 교수님의 권유로 시작한 프로젝트. 연구생들 모두 언어처리에 관련된 프로젝트를 시행해 보라는 반 강제적인 권유였다.
그 중에서 한국어 분석분야인 상품평 분석은 주제 자체가 어렵고 시스템의 완성도를 평가하기가 힘들다는 이유로 다들 기피했고 결국 나와 진호가 해보자고 붙었다.
한국어라 하더라도 기사나 발표자료 같이 문법에 맞는 글을 할만하지만 은어와 신조어 사용이 빈번한 인터넷 상품평을 분류하고 분석한다는 것은 정말 끔찍한 일이었다.
하지만 제대로 되기만 한다면 상당히 좋은 자료가 될 것 같다.
2007년 여름방학 때 시도학 프로젝트였는데 그때 lab에서는 스크립트 언어를 공부해보자면서 ruby언어 책을 사고 공부를 막 시작하고 있었다. 문자열처리에 상당히 강력한 ruby를 이용하여 구현시간을 많이 단축하였으나 알고리즘이 없어 시도가능한 방법은 다 사용해봤다. 나중엔 지쳐서 어떻게든 중간 결과가 눈에 보이도록만 하자는 심정으로 결과를 JSP로 출력하도록 했다.

네트워크를 통해 자료를 가져오는데 시간이 상당히 걸린다. 자료를 분석하고 분류하는데도 시간이 걸리지만 페이지의 내용을 가져오는데 걸리는 시간을 단축하면 시스템의 효율이 많이 높아질 것 같다. (이 부분은 희용이형이 만든 프로그램을 사용했다. 여러 페이지의 내용을 가져와야 하기 때문에 한번에 하나의 페이지를 가져오는 것이 아니라 여러 페이지의 내용을 동시에 가져올 수 있으면 훨씬 빨라질 것으로 보인다.)

우선 중간 결과까지 데모했지만 자연어처리의 문제점들만 잔뜩 찾아내고 진전이 없었다. 하지만 어떠한 문제들이 있는지 알았으니 다음 프로젝트에서는 그것을 기반으로 다시 일어설 수 있을 것이다.
이 프로젝트를 이어서 시작한 것이 CommentScop다. 하지만 여러가지 이유로 진행시키지 못하고 있다는...

728x90
728x90
프로젝트에만 매달리고 있을 시간이 부족하다.
역시 프로그램화 하는 것은 알고리즘만 확실하면 금방 해낼 수 있는 것 같다.
알고 있는 부분까지는 이틀만에 왔지만 그 다음 어떤 아이디어로, 어떤 방법으로 문제를 해결해야 하는지 모르니까 영 진도가 안나간다.
2월이 시작하면 다시 프로젝트에 집중해봐야 겠다.
728x90
728x90
이제 수집한 평가들을 제목과 내용을 다른 파일에 나누어 저장했다.
한 사이트에서 디지털 카메라에 대한 내용이 2150건 문장이 7972건으로 나왔다. 정확하게 counting되었다고 볼수는 없다. 하지만 대략적인 갯수는 알 수 있다.
이제 이것을 형태소 분석기를 거쳐나온 결과를 분석해야 한다. 형태소 분석기는 국민대 강승식 교수님의 KMA로 시도했다. 그런데 이사람 2007년 이후에는 새로운 결과물을 반드시 낼 것이라고 생각했는지 2008년에는 결과가 안나오도록 조정해놨다. 그래서 귀찮지만 형태소 분석기를 사용할 때는 시스템 시간을 과거로 맞춰놓고 사용한다. 나중에 이 문제는 해결해야 겠다.
예전에 프로젝트를 할 때는 아무런 옵션도 주지 않고 그대로 사용해서 많이 지저분했는데 옵션 몇개만 추가하니 비교적 깔끔한 결과가 나왔다.
이것을 중요한 형태소(N, K, V)만 따로 분류하여 각각 파일에 저장하였다. 이 부분은 현재 if문으로 되어 있는데
방향을 좀더 생각해보고 case- when 구문으로 수정할 계획이다.
지금부터가 문제다. 분석된 N,K의 명사들을 가지고..(참 C도 복합명사로 분류해야 겠다...)

이 부분까지는 쉽게 왔다. 이제부터가 새로운 시작이다. 예전의 프로젝트는 쓰기 곤란할 정도로 엉망이었다. 억지로 사전을 만든 다음 거기에 운좋게 걸리면 분석하는 식이었다. 지금부터는 관심 단어를 추출하는 것부터 시작해야 겠다. 그 다음엔 동사의 극성화 분석.
마지막으로 명사와 동사로 일부 구문분석을 하는 것이다.
1. 핵심단어(명사) 추출
2. 동사의 극성화
3. 극성화를 토대로 한 구문분석

이중 1번만 제대로 되어도 활용할 분야가 많다. 웹상에서 각 페이지의 관심단어들을 추출해서 웹검색에 활용하는 것, 여러 페이지들의 주제를 분석하여 해당 부분, 사이트, 기간 별로 관심주제를 추출하는 것, 관심이 집중되는 내용들을 수집하여 다시 검색한 다음 사용자에게 자동으로 RSS를 보내주는 것등 다양한 방면으로 활용이 가능하다. (이런 식으로 취업에 관한 사이트들을 등록시키고 취업에서 중요시하는 단어들을 가져올 수도 있다.)
일단 1번을 향해서 나가자
728x90
728x90
개발언어 : ruby
DB : text file

프로젝트 이름을 CommentScope로 정했다. 대략 '평가관찰기'정도의 뜻이 되겠다.
예전에 해봤던 일이니 그 수준까지 따라가는데는 시간이 얼마 걸리지 않을 것이라고 생각했다.
다만 그때까지 나누어 작업하던 것들을 모조리 내가 다시 작업해야 하니까 그 부분에서는 시간이 좀 걸렸다.
개발언어는 script language인  Ruby로 정하고 output은 웹(jsp)로 정했다. jsp를 사용하기 위해서 ruby를 java로 실행해야 하는 것을 감안해야 한다.

이틀만에 2주간 한 작업을 모두 따라갔다. 그동안의 프로젝트가 거의 내 아이디어로 나왔었고 핵심부분은 내가 다 작성했기 때문에 따라가는데 얼마 걸리지 않았다. 다만 그당시엔 제품ID를 넣으면 그 상품에 대한 평가들이 수집되는 것만 만들었기 때문에 이번에는 전체 분류에서 제품ID를 수집하고 수집된 ID를 가지고 다시 상품평을 받아오는 것으로 바꿨다. (나중에 사전을 만들기 위함이다.)
꽤 많은 상품평이 받아졌다. 참.. 결과를 보여주기 위해 수집된 상품평이 몇개인지는 기록해야 겠다. 좀 손봐야 겠군..

(고치고 있는 중..)


파일의 마지막에 count를 기록하는 방식으로 우선 해결했다. 형태소분석기를 거칠 때 빼줘야 정확하지만 무시해도 될 한 문장이기에 그냥 넣기로 했다.

이로써 상품평의 수집은 어느정도 해결된 것 같다. 문제는 지금부터다. 지금까지는 문제를 해결하기 위해 문제를 가져오는 것밖에 되지 않는다.
728x90

+ Recent posts