TEXT 문서 키워드 추출
글쓴이: 서건우 / 작성시간: 화, 2010/01/12 - 3:49오후
텍스트 내에 키워드를 검색해 내는 걸 만들려고 합니다.
만개 정도의 키워드가 존재합니다.
TXT를 INPUT을 넣어서 만개 키워드 중에 매칭 하는 키워드를 뽑아 낼려고 합니다.
어떤 키워드가 존재하는 지 찾아내기만 하면 됩니다. 위치정보 등 필요없어요.
TXT를 읽어가면서 처리를 해야 할 듯 한 데 어떤식으로 구현하는게 좋을까요?
오토마타를 이용한 방안이 있긴 하던데요..자료 찾기가 쉽지 않네요.
단순이 만개의 키워드를 무식하게 LOOP 돌면서 확인 할 수는 있는데 속도가 좀 걸리네요..
Forums:
저두 잘 모르지만
저두 잘 모르지만 만약 만개의 키워드를 가진 테이블이 정렬되었다면 이진탐색이 좋을 듯 싶네요
ㄷㄷㄷ
간단한걸 찾으신다면
간단한걸 찾으신다면 KMP알고리즘은 어떨까요? 단순 루프보다는 훨씬 빠를텐데요
^^
---------------------------------------------------------------
Opensource에 기여하는 것이 꿈입니다.
내가 만든 코드를 모두가 사용할 때 까지~
DB a, b; a join
DB a, b;
a join b;
이상으로 압축할 수 있겠군요. DB 엔진 알고리즘을 살펴보시는 게...
우선 메모리에 데이터들을 올리고 분류하는데,
비교를 할 때 가능한한 양측 다 후보군을 줄여줘야겠죠.
..근데 이건 복잡하게 생각할 건덕지도 안 보이네요..;
소팅 후 bi-시퀀셜 서치니까요.
단순히 만개중에 있는지만 파악하실려면..
stl::set을 쓰시면 쉽고 빠르게 구현하실수 있습니다.
만개면 최악의 경우 14번의 검사면 가능합니다.
-----------
http://sozu.tistory.com
-----------
청하가 제안하는 소프트웨어 엔지니어로써 재미있게 사는 법
http://sozu.tistory.com
stl:set을 써보진
stl:set을 써보진 않았지만, set을 써서 어떻게 14번만 검사하나요?
여전히 만개의 아이템을 서치하는 것이 아니라 텍스트를 만번 봐야하는 것 아닌가요? 대신 set에서 찾는 비용이 O(1)인 것 같은데요.
제가 글을 잘못이해했네요^^;;
텍스트 안에 키워드가 있는지를 찾는 것이었네요;; 죄송합니다.
전 거꾸로 생각했습니다.
그리고 14번은.. set이 balanced binary search tree 이기 때문에 만개의 아이템이면 최악의 경우 14번만의 비교(O(log2N))만으로 찾을수 있다는 것이었습니다.
물론 호출은 한번만 하겠죠...^^
텍스트 안에서 키워드를 찾는 것은 일단 모든 키워드는 돌려봐야 할것 이구요 (이 루프를 OpenMP를 이용하여 병렬로 처리해도 되겠죠..멀티코어라면..)
텍스트안에서 키워드를 찾는 로직을 빠르게 하시면 될것 같습니다.
제가 예전에 사용했던 방법은 Boyer–Moore string search algorithm 입니다.
http://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm
상당히 빨랐습니다.^^
-----------
http://sozu.tistory.com
-----------
청하가 제안하는 소프트웨어 엔지니어로써 재미있게 사는 법
http://sozu.tistory.com
텍스트가 너무
텍스트가 너무 길다면 한번에 읽어서 처리할 수 있는 알고리즘도 한번 고려해보세요
multiple string pattern matching 알고리즘이 좀 있을겁니다.
초기 데이터구조 생성하는데 비용이 들어갈텐데, 만개면 꽤 될테니.. 어느 쪽이 나을지는 모르겠네요.
테스트 해보기 전에 complexity 한번 보시고 판단하시고요.
예를 들어 single string pattern matching 의 하나인 KMP는 O(원본길이+키워드길이) 로 가장 나은 복잡도를 갖고 있습니다.
blog
안녕하세요.
블로그 운영하실때 키워드가 필요하시면 한번 들려 주세요~ 무료로 키워드를 제공해 드립니다.
http://seokor.com/
댓글 달기