2012-04-29 3 views
1

두 개의 텍스트 파일 디렉토리가 있습니다. 하나는 User Description이고 다른 하나는 User Messages이고 필드는 DATE<\t>NAME<\t>DESCRIPTIONDATE<\t>NAME<\t>MESSAGE입니다. 내 주요 목적은이 두 파일 사이의 프로필과 메시지 단어 사이의 상관 행렬을 얻는 것입니다.거대한 텍스트 파일의 상관 행렬 준비

한 예는 다음과 같습니다 여기

       *message words* 
          cat  dog mouse .... 
*profile words* cat 100  20  50 
        dog  2  30  22 ... 
        ... 
        ... 

, 고양이와 고양이 사이의 숫자 (100)는 "단어"고양이가 자신의 프로필 설명에 고양이 ""어떤 사용자에 의해 기록 된 모든 메시지에 100 번 등장 "의미 ".

자바를 사용하여이 문제를 해결하려고 시도했지만 텍스트 파일의 크기 때문에이 프로그램의 훨씬 간단한 버전도 실행되지 않았습니다. 며칠 전 게시 된 problem입니다. awk 도구는 이전 문제를 해결했습니다.

제 질문은이 문제를 해결할 수있는 효과적인 방법이 있습니까? 언어 제한이 없습니다. 또한 diff, cat 등의 bash 유틸리티에 대한 지식도 가지고 있습니다.

정보를 원하시면 User Messages에는 1.7G의 여러 텍스트 파일이 있습니다. User Description은 여러 파일이있는 약 400M입니다. 내가 Java에 줄 수있는 대부분의 메모리는 -Xmx1800m입니다.

또한 유효한 질문이 아닌 경우 알려 주시기 바랍니다. 나는 그 지위를 제거 할 것이다.

감사합니다.

답변

0

Java에서 유래되었지만 C# 및 C++ (최소한)로 포팅 된 Lucene 라이브러리를 살펴보십시오.

"인덱싱"이라고하는 것은 문서를 만드는 것입니다 (예 : 간단한 파일과 연결할 수 있음). 각 문서에는 선택적 필드 (파일이 나타나는 디렉토리)가 포함될 수 있습니다. 그 후 특정 단어 또는 더 많은 단어 형태 (고양이 대 고양이와 같은)의 수를 세는 것은 매우 쉽습니다.

관련 문제