从.NET中的文本中分离单词的最快选择?

时间:2013-02-14 00:33:43

标签: c# regex text semantics

我的任务是对文本进行简单的语义分析(800MB txt文件)。对于小文件,一切都很快。我逐行阅读这个文件和那些工作。文件读取需要9秒。 但是一旦你开始分析并在字典中添加单词并在文本处理中存储它们的位置需要太长时间。

你能告诉我更好的变异或者什么是更好的解决方案吗? 在处理文本和程序的语义分析问题时,我会建议任何建议。你。

public List<string> SplitWords(string s)
    {
        s = s.ToLower();
        arrayWords = Regex.Split(s, @"\W+");
        listWords = arrayWords.OfType<string>().ToList();

        for (int i = 0; i < listWords.Count; i++)
        {
            if (Array.BinarySearch(stopwords, listWords[i]) >= 0 || listWords[i].Length < 2)
            {
                listWords.RemoveAt(i);
                i--;
            }

        }
        return listWords;
    }

分隔单词的代码

 public void AddToDictonary(List<string> arrayWords)
        {
            for (int i = 0; i < arrayWords.Count; i++)
            {
                if (!dictonary.ContainsKey(arrayWords[i]))
                {
                    dictonary.Add(arrayWords[i], new List<int>() { i });
                }
                else
                {
                    dictonary[arrayWords[i]].Add(i);
                }
            }
        }

添加到字典中的代码。

1 个答案:

答案 0 :(得分:0)

您可以使用我发布的here正则表达式来标记您的句子