如何执行查询扩展

时间:2013-03-09 17:26:19

标签: c# thesaurus

我正在开发一个C#应用程序,用户提供一组单词(通常少于10个),我需要检索这些单词的所有同义词。这是我第一次使用字典和这些东西。我需要知道要遵循的步骤,以及是否存在提供我可以与我的应用程序集成的同义词的现有字典,或者是否有可以使用的开源应用程序或代码。

2 个答案:

答案 0 :(得分:1)

回答你的第一个问题。您可以在此处找到同义词库:http://wordpresscloaker.com/blog/download-free-english-thesaurus-format-txt.html

我对该文件的质量,准确性,合法性,使用许可或完整性不作任何承诺。但是,这将让你顺利。您需要提取mthesaur.txt并将其添加到项目文件夹中。

接下来,您需要通过执行以下操作来读取文本文件:

var reader = new StreamReader(File.OpenRead(@"C:\mthesaur.txt"));
var dict = new Dictionary<string, string>();
while (!reader.EndOfStream)
{
    // Read the file line by line.
    var line = reader.ReadLine();

    // If the line isn't null, we can use it.  This shouldn't happen but it is a good sanity check.
    if (line == null) continue;
    // Split the line by the delimiter (a comma) so we can get the main word, the first one on the line.
    var splitLine = line.Split(',');
    var mainWord = splitLine[0];
    // To save us from having to loop through and only get the indexes above 0 (eg, skip the main word) we will just simply remove it from the line so we have just synonyms.
    line = line.Replace(mainWord + ",", string.Empty);
    // Now we make use of the dictionary type in C# and add the mainword as the key and the synonyms as the value.
    try
    {
        dict.Add(mainWord, line);
    }
    catch (ArgumentException argEx)
    {
        Console.WriteLine("Attempted to add {0} to the dictionary but it already exists.", mainWord);
    }
}

现在我们在C#中的键/值字典中包含了所有内容,您可以使用LINQ查询输入单词的同义词。这可以通过使用包含字典中所有键值的下拉列表来完成(不推荐,因为这将是一个非常大的下拉列表并且很难为用户导航),ListBox(更好,更容易导航),或纯文本搜索框。虽然这并没有完全回答你的问题,因为这里没有关于为用户处理GUI的事情,这应该可以帮助你顺利完成。

答案 1 :(得分:0)

如果您使用SQL full text search或基础技术 - Microsoft Search Server(有一个免费的Express SKU),您将找到多种语言和其他自然语言处理工具的词库。我当然假设你正在做一个实际的项目,而不是在做作业......

如果你更喜欢开源,请查看Lucene.net - 它提供了一个搜索引擎,我很确定它有个字典