だから私はテキストマイニングプロジェクトに取り組んでおり、現在情報取得を実装しようとしています. 各行がドキュメントを表すデータがあります。したがって、改行文字は異なるドキュメントを分割します。
列がすべてのドキュメントのすべての異なる単語であり、行が異なるドキュメントであるマトリックスを生成する必要があります。このテーブルの各セルは、単語がそのドキュメントに存在するかどうかを示す 1 (真) または 0 (偽) です。
注: ドキュメント内で繰り返されるすべての単語を既に削除しました。
class word_list
{
public string word;
public List<bool> doc = new List<bool>();
}
private void button2_Click(object sender, EventArgs e)
{
//Convert the string into an array of words
string[] w1 = richTextBox1.Text.Split('\n', ' ').Select(x => x.Trim().ToLower()).Distinct().ToArray();
string[] rich_doc = richTextBox1.Text.Split('\n');
List<word_list> words = new List<word_list>();
word_list temp = new word_list();
for (int i = 0; i < w1.Length; i++)
{
temp.word = w1[i];
for (int j = 0; j < rich_doc.Length; j++)//all doc array
{
List<string> doc_word = Regex.Split(rich_doc[j], @"\b").Distinct(StringComparer.CurrentCultureIgnoreCase).ToList();
for (int k = 0; k < doc_word.Count; k++)//All words in a doc
{
if (doc_word[k] == w1[i])
{
temp.doc.Add(true);
words.Add(temp);
}
else
{
temp.doc.Add(false);
words.Add(temp);
}
}
}
}
//generate matrix
int t = rich_doc.Length; //no. of docs
string final_matrix = "Doc number";
for (int i = 0; i < words[0].doc.Count; i++)
{
final_matrix += "\t" + words[i].word;
}
final_matrix += "\n";
for (int i = 0; i < t; i++) //traverse through number of docs
{
final_matrix += i + 1;
for (int h = 0; h < words.Count; h++)//traverse through each distinct word in the list
{
if (words[h].doc[t])
final_matrix += "\t1";
else
final_matrix += "\t0";
}
final_matrix += "\n";
}
richTextBox1.Text = final_matrix;
}//end of button 2
問題は、このコードが無限ループで実行されていることです。