根据职位找到单词和分数

时间:2010-03-30 19:35:21

标签: c# algorithm text

嘿伙计们我有一个文本文件,我把它分为4个部分。我想在每个部分中搜索每个部分中出现的单词并对该单词进行评分

〔实施例

欢迎来到全国篮球总决赛,今天这里的篮球队已经走过了漫长的道路。没有多少延迟让我们打篮球。

我想返回national = 1,因为它只出现在一个部分等

正致力于使用单词位置确定文本上下文。

正在使用c#并且在文本处理方面不是很好 基本上 如果4个部分中出现一个单词,则得分为4 如果一个单词出现在3个部分,则得分为3 如果一个单词出现在2个部分,则得分为2 如果一个单词出现在1节中,则得分为1

提前致谢

到目前为止,我有这个

var s =“欢迎参加全国篮球决赛,今天在这里的篮球队已经走过了漫长的道路。没有太多延迟让我们打篮球。”;

    var numberOfParts = 4;

    var eachPartLength = s.Length / numberOfParts;

    var parts = new List<string>();

    var words = Regex.Split(s, @"\W").Where(w => w.Length > 0); // this splits all words, removes empty strings

    var wordsIndex = 0;

    for (int i = 0; i < numberOfParts; i++)
    {

        var sb = new StringBuilder();

        while (sb.Length < eachPartLength && wordsIndex < words.Count())
        {

            sb.AppendFormat("{0} ", words.ElementAt(wordsIndex));

            wordsIndex++;

        }


        // here you have the part

        Response.Write("[{0}]"+ sb);

        parts.Add(sb.ToString());

        var allwords = parts.SelectMany(p => p.Split(' ').Distinct());

       var wordsInAllParts = allwords.Where(w => parts.All(p => p.Contains(w))).Distinct();

1 个答案:

答案 0 :(得分:2)

这个问题很难解释。我不完全理解你的目标,我怀疑你也可能不会。

在没有明确要求的情况下,没有办法给出具体答案,所以我会给出一个通用答案:

尝试编写一个明确指定所需行为的测试。你已经得到了一个带有你的样本字符串和你想要的结果的开头,但是你所寻找的并不是明确的。

进行测试,当它通过时,表明存在所需行为之一。如果这对您的问题没有帮助,请回过头来编辑这个问题或者创建一个包含测试的新问题。

至少,您将能够从此网站获得更好的答案。