我正在尝试预处理一个文本文件,其中每一行都是一个文档的双语法词,它们在该文档中的频率。这是每一行的示例:
i_like 1 你知道 2 .... not_good 1
我设法从整个语料库中创建了字典。现在我想逐行阅读语料库并拥有字典,创建文档术语矩阵,以便矩阵中的每个元素(i,j)将是文档“i”中术语“j”的频率。
我正在尝试预处理一个文本文件,其中每一行都是一个文档的双语法词,它们在该文档中的频率。这是每一行的示例:
i_like 1 你知道 2 .... not_good 1
我设法从整个语料库中创建了字典。现在我想逐行阅读语料库并拥有字典,创建文档术语矩阵,以便矩阵中的每个元素(i,j)将是文档“i”中术语“j”的频率。
创建一个使用字典为每个单词生成整数索引的函数:
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。