gpt4 book ai didi

c# - 计算 C#/.NET 网页中出现的 1 个词、2 个词和 3 个词短语

转载 作者:太空宇宙 更新时间:2023-11-03 22:06:56 24 4
gpt4 key购买 nike

我将编写一个程序,它接受一个 URL 并计算网页中每个单词、双词和三词短语(可能还有 x 词短语)的出现次数。

这是我能想到的最佳算法:

1).剥离 html 标签

2) 全部小写

3) 将文字按空格拆分,全部放入数组

4) 遍历每个单词,对于每个单词,您必须:将 word[i]、word[i+1]、word[i+2] 放入哈希表中。

每次发生碰撞时,您都会增加该词或 2-3 个字母的词组的字数。

我的问题是:

1) 谁能提供在空间和运行时方面更有效的解决方案?

2) 在 C# 中是否有任何简单的方法来完成#1?
我或许可以使用 dom 解析器并解析出所有内部文本。

最佳答案

根据您的情况,您可能过于简单化了问题和/或您最终可能会花费大量精力来实现某些库中已经存在的功能。因此,这不会是一个直接的答案,而是建议采取什么途径来解决这个问题。

您要实现的进程称为 information retrieval .它非常广泛和复杂,但幸运的是在这个领域有很多研究。一部分是提取单词 ngrams (ngram 是连续的字母或单词的集合)。

让我向您展示一些您应该提前考虑的其他问题:

  • 单词中字母的大小写重要吗?
  • 点是你想用来标记句子结尾的唯一标志吗?
  • 你想排除stop words吗?停用词是您不想包含在短语中的词,例如“a”、“the”、“I”、“my”等。
  • 你想stem字?将单词从它们的原始形式转换为词根形式,例如将复数形式转换为单数形式:basketballs -> basketball

以及从 HTML 中提取纯文本:

  • 只提取页面上显示的文本?
  • 也提取提示? (就像将鼠标悬停在图片上时显示的那样)
  • 任何其他不可见的文本(元标记等)

有些图书馆可以从原 Material 中搜索和提取信息。 “原始 Material ”意味着您必须处理文档(html、doc、pdf、图像...)并将其转换为文本以便搜索引擎对其进行索引(例如提取短语)。一旦文档被索引,它就可以被搜索。 .NET 的此类库之一是 Lucene.NET .它支持不同的词干分析器、分析器、过滤器。

我不确定,但我相信也有用于从 html 中提取文本的库。

基本上,您的方法可能适用于一些更简单的场景,在这些场景中,不太小的错误级别是可以接受的。我最近对信息检索产生了兴趣,发现它非常复杂和有趣。根据您的目标,您可能会从研究该主题中获益。这里有很多关于 stackoverflow 以及 Internet 其余部分的信息。

如果您决定采用这种方式,那么与 Lucene.NET 相比,关于 Lucene(原始 Lucene JAVA 版本,Lucene.NET 是 .NET 的端口)的信息要多得多。因此,如果您没有找到 Lucene.NET 的答案,请立即搜索 Lucene 讨论。

关于c# - 计算 C#/.NET 网页中出现的 1 个词、2 个词和 3 个词短语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8105427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com