根据您的情况,您可能会过度简化问题和/或您最终可能会付出很多努力来实现某些库中已经存在的功能。所以这不是一个直接的答案,而是关于解决这个问题的路径的建议。
您要实现的过程称为信息检索。它非常广泛和复杂,但幸运的是在这个领域有很多研究。其中一部分是提取单词ngram(ngram 是一组连续的字母或单词)。
让我向您展示一些您应该提前考虑的其他问题:
- word中字母的大小写重要吗?
- 点是您想用来标记句子结尾的唯一标志吗?
- 你想排除停用词吗?停用词是您不想包含在“a”、“the”、“I”、“my”等短语中的词。
- 你要词干吗?将单词从原始形式转换为词根形式,例如将复数形式转换为单数形式:篮球 -> 篮球
对于从 HTML 中提取纯文本:
- 只提取页面上显示的文本?
- 还提取提示?(就像将鼠标悬停在图片上时显示的那样)
- 任何其他不可见的文本(元标记等)
有一些库可以从原材料中搜索和提取信息。“原材料”意味着您必须处理文档(html、doc、pdf、图像……)并将其转换为文本,以便搜索引擎对其进行索引(例如,提取短语)。一旦文档被索引,它就可以被搜索。.NET 的此类库之一是Lucene.NET。它支持不同的词干分析器、分析器、过滤器。
我不确定,但我相信也有用于从 html 中提取文本的库。
基本上,您的方法可能适用于一些不那么小的错误级别是可以接受的更简单的场景。我最近对信息检索产生了兴趣,发现它非常复杂和有趣。根据您的目标,您可能会从研究该主题中获益。这里有很多关于 stackoverflow 以及 Internet 其他部分的信息。
如果您决定采用这种方式,那么 Lucene(原始 Lucene JAVA 版本,Lucene.NET 移植到 .NET)上的信息要比 Lucene.NET 上的多得多。因此,如果您没有找到 Lucene.NET 的答案,请立即搜索 Lucene 讨论。