2012-03-21 4 views
-2

텍스트 파일의 벡터화를 구현하려고합니다 ... 모든 문서에서 고유 한 단어 사전을 만들었습니다 ... 자바에서 이것을 구현하는 가장 좋은 방법은 무엇입니까?텍스트 파일의 벡터화

예 : - 내 사전에 다음 단어가 있습니다. - {w1, w2, w3, w4} 그리고 두 단어가 각각 어휘집에 포함되어 있습니다.

1,3,4,0 
0,0,2,1 

여기서 각 로우는 문서를 나타내고, 숫자는 문서 내의 각 단어의 발생을 나타내는 - I는 행렬 형태로 파일을 텍스트에 쓸 필요가있다.

자바로 구현하는 가장 효율적인 방법을 제안 해 주시겠습니까? 단어가 사전에 이미있는 경우는 출력 파일의 수를 출력하는 사전을 통해 계산을

  • 루프를 높일 경우 텍스트의

  • +0

    지금까지 가지고있는 것을 보여주십시오. – Sid

    +0

    사전 텍스트를 텍스트 파일에 저장했습니다 ... 그리고 함수에 인수로 텍스트 문자열을 전달하고 있습니다 .... public void createVector (String text) throws IOException {String [] x = tweet.split (""); 대한 \t \t (문자열 w : X) { \t \t \t 동안 (((V = reader.readLine()) = NULL)!) {...}}}'나는 어떻게 계산에 관해서는 조금 혼란 스러워요 사전에있는 각 단어가 텍스트 문자열에 나오는 횟수. – Fox

    +0

    키가 단어이고 값이 카운트 인 사전을 유지 관리 할 수 ​​있으며 해당 단어를 만날 때마다 카운트를 증가시킵니다. – Sid

    답변

    2
    1. 읽기는 한 번에
    2. 확인을 한 단어 파일. 숙제 태그의 나는 단계가 아니라 당신에게 실제 코드를 제공하고 있기 때문에

    +0

    도움을 주셔서 감사합니다 – Fox

    +0

    기본적으로 귀하의 사전은 으로 설정되어 있으며 단어를 찾을 때마다 증가합니다. – jzworkman

    1

    은을 사용해보십시오 (당신은 당신이 방법을 알고 해달라고하면 빠른 구글 검색으로이 모든 작업을 수행하는 방법을 찾을 수 있습니다) HashMap을 사용하여 각 단어를 벡터의 해당 단어 위치에 매핑합니다. 그런 다음 벡터의 int []를 만들고 모든 단어를 반복하며지도에서 각 단어의 위치를 ​​찾고 해당 항목을 증가시켜 각 행을 구성 할 수 있습니다.

    HashMap<String, Integer> dict = new ... // Map word to position 
    for (String[] doc: docs) { 
        int vector[VECTOR_SIZE] = new .... 
        for (String word: doc) { 
         vector[dict.get(word)]++; 
        } 
        // Print vector 
    } 
    
    +0

    지도에서 개수를 유지하는 대신 별도의 배열을 사용해야하는 이유는 무엇입니까? 인덱스가있는 맵을 갖는 것은 단지 카운트에 대한 맵을 갖는 대신에 중복됩니다. – jzworkman