2009-11-06 2 views
2

두 개의 문서를 비교하여 키워드를 기준으로 일치하는 텍스트의 비율을 확인하려고합니다.텍스트 처리/비교 엔진

이렇게하려면 위생적인 ​​단어 집합으로 쉽게 잘라 버리고 비교할 수 있지만 조금 더 똑똑한 것으로 그 뿌리에 따라 단어를 매치 할 수 있습니다. 그들의 시제 또는 복수가 다른 경우에도. 이런 종류의 기술은 전체 텍스트 검색에 사용되는 것으로 보이지만, 나는 무엇을 찾아야할지 모른다.

이러한 엔진 (Java에 적합 할 수 있음)이 있습니까?

답변

4

예, 스템 머가 필요합니다. Lauri Karttunen은 훌륭했던 유한 상태 기계에 대한 작업을했지만 슬프게도 사용할 수있는 구현이 없다고 생각합니다. 언급했듯이, Lucene은 다양한 언어의 형태소 분석기를 가지고 있으며 OpenNLP 및 Gate 프로젝트가 도움이 될 수 있습니다. 또한, 어떻게 그들을 "자르려고"할 계획 이었습니까? 이것은 구두점, 소유물 등으로 인해 대부분의 사람들이 생각하는 것보다 조금 까다 롭습니다. 그리고 공백으로 나누는 것만으로는 여러 언어로 작동하지 않습니다. OpenNLP에 대해서도 살펴보십시오.

또 다른 고려해야 할 점은 두 문서의 논 스톱 단어를 비교하는 것이 지역 정보를 잃어 버리기 때문에 실제로하려는 것을 고려하면 좋은 유사성을위한 최선의 방법이 아닐 수도 있다는 것입니다. 예를 들어, 표절 탐지에 대한 일반적인 접근법은 문서를 n 개의 토큰으로 나누어 비교하는 것입니다. 이 방법으로 동시에 여러 문서를 비교할 수있는 알고리즘이 있으므로 각 문서를 한 쌍씩 비교하는 것보다 훨씬 효율적입니다.

1

나는 Lucene가 당신이 찾고있는 라인을 따라 있다고 생각합니다. 제 경험으로는 사용하기가 아주 쉽습니다.

편집 : 방금 질문을 다시 읽고 그것에 대해 생각했습니다. Lucene은 Java 용 전체 텍스트 검색 엔진입니다. 그러나, 나는 당신이하려는 것을 위해 그것을 다시 쓰는 것이 얼마나 어려울 지 잘 모르겠습니다. 어느 쪽이든, 거기에서보고 시작하기에 좋은 자원 일 수 있습니다.

1

미리 만들어진 엔진에 대해서는 잘 모르겠지만 자신 만의 롤을 사용하기로 결정한 경우 (예 : 원하는 코드를 찾을 수없는 경우) "Porter Stemmer" (대부분의) 접미사를 제거하는 알고리즘을 시작해야합니다.