从字典创建文档术语矩阵

时间:2012-06-05 12:46:59

标签: c# dictionary matrix corpus

我正在尝试预处理文本文件,其中每一行都是文档的双字词,其频率在该文档中。这是每一行的一个例子:

i_like 1 you_know 2 .... not_good 1

我设法从整个语料库中创建字典。 现在我想逐行阅读语料库并使用字典,创建文档项矩阵,因此矩阵中的每个元素(i,j)将是文档“i”中术语“j”的频率。

1 个答案:

答案 0 :(得分: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;
}

您一次只读取一行文本文件,在每行上调用ProcessLine()并将结果列表添加到m_Matrix。