我正在尝试创建一种算法,根据网页上找到的关键字为网页设置一些相关性。
我现在正在这样做:
我为他们设置了一些单词和值:“movie”(10),“cinema”(6),“actor”(5) 和“好莱坞”(4)并搜索页面的某些部分,给出每个部分的权重并乘以单词权重。
示例:在网址(1.5)* 10和标题(2.5)* 10中找到“电影”字字样= 40
这是垃圾!这是我的第一次尝试,它会返回一些相关的结果,但我不认为由像664,66,30,15这样的值确定的相关性是有用的。
我想做一些范围内的事情,从0到1或1到100。
我可以使用什么类型的单词加权?
除此之外,还有一些现成的算法可以根据URL,关键字,标题等内容设置HTML页面的相关性,但主要内容除外?
编辑1 :所有这些都可以重建,权重是随机的,我想使用一些权重简洁,而不是ramdon数字来表示像10,5和3这样的权重。
类似于:low importance = 1
,medium importance = 2
,high importante = 4
,deterministic importance = 8
。
Title > Link Part of URL > Domain > Keywords
movie > cinema> actor > hollywood
编辑2:目前,我想分析不包含页面body content
的字词的网页相关性。我将在analysus中包含域名,网址的链接部分,标题,关键字(以及我认为有用的其他元信息)。
原因是HTML内容很脏。我可以在菜单和广告中找到像“电影”这样的词,但页面的主要内容并不包含与主题无关的内容。
另一个原因是某些页面有元信息,表明页面包含有关电影的信息,但主要内容没有。示例:包含电影情节的页面,告诉历史,人物等,但不要在该文本中引用任何可以表明这是关于电影,只有页面元信息。
稍后,在HTML页面上运行相关性分析后,我将分别对内容(已过滤)进行相关性分析。
答案 0 :(得分:3)
您是否可以在搜索引擎中索引这些文档?如果你那么也许你应该考虑使用这个latent semantic library。
您可以从此处获取实际项目:https://github.com/algoriffic/lsa4solr
您要做的是确定文本语料库的含义,并根据它的含义对其进行分类。但是,单词不是单独的,也不是在整篇文章中抽象出来。
例如,假设您有一篇文章谈论了很多关于" Windows"。这个词在300字的文章中使用了7次。所以你知道这很重要。但是,你不知道的是,它是否在谈论操作系统" Windows"或者你透过的东西。
假设您还看到了诸如"安装"之类的词语,那么,它们根本无法帮助您。因为人们将窗户安装到他们的房子里就像安装Windows操作系统一样。但是,如果同一篇文章讨论碎片整理,操作系统,命令行和Windows 7,那么您可以猜测本文档的含义与Windows操作系统有关。
但是,你怎么能确定这个?
这是潜在语义索引的用武之地。您想要做的是提取整个文档文本,然后对该文档应用一些聪明的分析。
你构建的矩阵(see here)远远超出我的想象,尽管我已经查看了一些库并使用了它们,但我还是无法完全理解复杂的数学运算。构建潜在语义分析所不具备的空间感知矩阵...所以在我的建议中,我建议,只需使用现有的库为您完成此操作。
如果您不是在寻找外部图书馆并希望自己动手,
很高兴删除此答案答案 1 :(得分:1)
将任何内容转换为0-100范围(对于任何正值X)的简单方法:
<强>(1-1 /(1 + X))×100 强>
较高的X会给你一个接近100的值。
但这并不能保证您公平或正确的分发。这取决于你决定实际X值的算法。
答案 2 :(得分:1)
your_sum / (max_score_per_word * num_words) * 100
应该有效。但是你大部分时间都会获得非常小的分数,因为很少的单词会与那些得分非零的单词匹配。尽管如此,我没有看到另一种选择。你获得小分数并不是一件坏事:你将比较网页之间的分数。你尝试了很多不同的网页,你可以弄清楚你的系统有什么“高分”。
答案 3 :(得分:1)
查看classifying webpages by topic上的这篇博客文章,它讨论了如何实现与您的要求密切相关的内容。您如何定义场景中的相关性?无论您将哪些权重应用于不同的输入,您仍然会选择一个有点任意的值,一旦您清理了原始数据,您将更好地应用机器学习为您生成分类器。如果相关性是标量值,则这很困难,但如果它是布尔值(例如,页面与特定电影相关或不相关),则这是微不足道的。