2012-06-05 3 views
0

텍스트 파일을 사전 처리하려고합니다. 각 행은 해당 문서의 빈도가있는 문서의 바이 그램 단어입니다. 여기서 각 라인의 예이다 : I는 전체 언어 자료로부터 사전을 생성하는 것을 처리 1사전에서 문서 용어 행렬을 만듭니다.

i_like 1 you_know 2 .... not_good. 이제 행별로 코퍼스를 읽고 사전을 가지고 문서 행렬을 만들고 행렬의 각 요소 (i, j)가 문서 "i"의 용어 "j"의 빈도가 되길 원합니다.

+1

문서의 이름은 어디에서 알 수 있습니까? 아니면 각 문서에 대한 텍스트 파일이 있습니까? – MiMo

+0

텍스트 파일의 각 줄은 문서를 나타냅니다. (전체 텍스트 파일은 코퍼스입니다.) 그리고 각 문서가 제공되는 형식은 위 예제에서 쓴 것입니다. 희망이 지금은 분명합니다 – Angel

답변

2

사전 사용하여 각 단어에 대해 정수 인덱스를 생성하는 함수 생성 :

Dictionary<string, int> m_WordIndexes = new Dictionary<string, int>(); 

int GetWordIndex(string word) 
{ 
    int result; 
    if (!m_WordIndexes.TryGet(word, out result)) { 
    result = m_WordIndexes.Count; 
    m_WordIndexes.Add(word, result); 
    } 
    return result; 
} 

결과 행렬이다

List<List<int>> m_Matrix = new List<List<int>>(); 

처리 된 텍스트 파일의 각 행은 하나 개의 행을 생성을 매트릭스 :

List<int> ProcessLine(string line) 
{ 
    List<int> result = new List<int>(); 
    . . . split the line in a sequence of word/number of occurences . . . 
    . . . for each word/number of occurences . . .{ 
    int index = GetWordIndex(word);  
    while (index > result.Count) { 
     result.Add(0); 
    } 
    result.Insert(index, numberOfOccurences); 
    } 
    return result; 
} 

한 번에 한 줄씩 텍스트 파일을 읽고,각 줄에을 추가하고 결과 목록을 m_Matrix에 추가합니다.

+0

MiMo, 사실 사전은 너무 커서 나는 효율적으로 스파 스 매트릭스를 만들기로 결정했지만 솔루션 뒤에 아이디어를 사용했습니다. 감사합니다 – Angel

+0

@Anglel : 천만에요. – MiMo

관련 문제