标签: information-retrieval

计算趋势主题或标签的最佳方法是什么?

许多网站都提供了一些统计数据,例如"过去24小时内最热门的话题".例如,Topix.com在其"新闻趋势"部分中显示了这一点.在那里,您可以看到增长最多的主题.

我也想为一个主题计算这样一个"嗡嗡声".我怎么能这样做?该算法应该对总是少热的主题进行加权.通常(几乎)没有人提到的主题应该是最热门的主题.

Google提供"热门趋势",topix.com显示"热门话题",fav.or.it显示"关键字趋势" - 所有这些服务都有一个共同点:它们只显示即将出现的异常热门趋势.

像"布兰妮斯皮尔斯","天气"或"帕丽斯·希尔顿"这样的词语不会出现在这些列表中,因为它们总是热门而且频繁.这篇文章称之为"布兰妮斯皮尔斯问题".

我的问题:如何编写算法代码或使用现有算法来解决此问题?如果列表中包含在过去24小时内搜索到的关键字,则该算法应显示10个(例如)最热门的关键字.

我知道,在上面的文章中,提到了某种算法.我试图用PHP编写它,但我认为它不会起作用.它只是找到了大多数,不是吗?

我希望你能帮助我(编码例子会很棒).

tags algorithm information-retrieval

173
推荐指数
7
解决办法
5万
查看次数

Python:tf-idf-cosine:查找文档相似性

我正在学习第1 部分第2 部分提供的教程.不幸的是,作者没有时间进行涉及使用余弦相似性的最后一节实际找到两个文档之间的距离.我在文章的示例中借助stackoverflow中的以下链接,包括上面链接中提到的代码(只是为了让生活更轻松)

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from nltk.corpus import stopwords
import numpy as np
import numpy.linalg as LA

train_set = ["The sky is blue.", "The sun is bright."]  # Documents
test_set = ["The sun in the sky is bright."]  # Query
stopWords = stopwords.words('english')

vectorizer = CountVectorizer(stop_words = stopWords)
#print vectorizer
transformer = TfidfTransformer()
#print transformer

trainVectorizerArray = vectorizer.fit_transform(train_set).toarray()
testVectorizerArray = vectorizer.transform(test_set).toarray()
print 'Fit Vectorizer to train set', trainVectorizerArray …
Run Code Online (Sandbox Code Playgroud)

python information-retrieval machine-learning nltk tf-idf

84
推荐指数
5
解决办法
9万
查看次数

如何解析Google快讯中的数据?

首先,除了解析Google发送给您的电子邮件的文本之外,您如何将Google Alerts信息发送到数据库?

似乎没有Google Alerts API.

如果你必须解析文本,你将如何解析电子邮件的相关部分?

database information-retrieval google-alerts

32
推荐指数
2
解决办法
2万
查看次数

余弦相似度和tf-idf

我对以下关于TF-IDFCosine Similarity的评论感到困惑.

我正在读取两个,然后在维基相似性下的维基上我发现这句话"在信息检索的情况下,两个文档的余弦相似度将在0到1的范围内,因为术语频率(tf-idf权重)不能两个术语频率向量之间的角度不能大于90."

现在我想知道......他们不是两件不同的东西吗?

tf-idf已经在余弦相似之内吗?如果是,那么到底是什么 - 我只能看到内点产品和欧几里德长度.

我认为tf-idf是你在文本上运行余弦相似之前可以做的事情.我错过了什么?

information-retrieval tf-idf vsm cosine-similarity

31
推荐指数
3
解决办法
4万
查看次数

为什么在计算术语频率权重和IDF,逆文档频率时使用日志?

IDF的公式是log(N/df t)而不是N/df t.

其中N =集合中的总文档,df t =术语t的文档频率.

据说使用日志是因为它"抑制"了IDF的影响.这是什么意思?

另外,为什么我们使用对数频率的对数频率称量,如下所示:

在此输入图像描述

information-retrieval tf-idf

30
推荐指数
2
解决办法
1万
查看次数

什么尝试和真正的算法建议相关的文章在那里?

很常见的情况,我打赌.你有一个博客或新闻网站,你有很多文章或blags或你称之为的任何东西,你想在每个网站的底部建议其他似乎相关的东西.

让我们假设每个项目的元数据非常少.也就是说,没有标签,类别.视为一大块文本,包括标题和作者姓名.

你如何找到可能相关的文件?

我对实际的算法很感兴趣,而不是现成的解决方案,虽然我可以看看在ruby或python中实现的东西,或者依赖于mysql或pgsql.

编辑:目前的答案还不错,但我想看到更多.对于一两件事,可能有一些非常简单的示例代码.

text information-retrieval machine-learning document-classification

23
推荐指数
2
解决办法
4300
查看次数

维基百科文本下载

我希望为我的大学项目下载完整的维基百科文本.我是否必须编写自己的蜘蛛才能下载此文件,或者是否有在线提供维基百科的公共数据集?

为了给你一些关于我的项目的概述,我想找出我感兴趣的一些文章中有趣的单词.但是为了找到这些有趣的单词,我打算用tf/idf来计算每个单词的术语频率并选择高频率的.但是要计算tf,我需要知道整个维基百科的总发生次数.

如何才能做到这一点?

text wikipedia information-retrieval web-crawler

22
推荐指数
2
解决办法
2万
查看次数


信息检索(IR)与数据挖掘与机器学习(ML)

人们经常抛弃IR,ML和数据挖掘这两个术语,但我注意到它们之间有很多重叠.

对于那些在这些领域有经验的人来说,究竟是什么划清界限?

information-retrieval machine-learning data-mining

21
推荐指数
2
解决办法
1万
查看次数

如何计算要分类的单个新文档的TF*IDF?

我使用文档术语向量来表示文档集合.我使用TF*IDF来计算每个文档向量的术语权重.然后我可以使用这个矩阵来训练文档分类的模型.

我期待将来对新文档进行分类.但是为了对其进行分类,我需要首先将文档转换为文档术语向量,并且向量也应该由TF*IDF值组成.

我的问题是,如何只用一个文件来计算TF*IDF?

据我所知,TF可以根据单个文档本身计算,但IDF只能用文档集合计算.在我目前的实验中,我实际上计算了整个文档集合的TF*IDF值.然后我使用一些文档作为训练集,其他文档作为测试集.

我突然意识到这似乎不适用于现实生活.

添加1

因此,实际上有两种微妙的分类方案:

  1. 对某些内容已知但标签未知的文件进行分类.
  2. 对一些完全看不见的文件进行分类.

对于1,我们可以组合所有文档,包括标签和不标签.并获得所有这些TF*IDF.这样,即使我们只使用带有标签的文件进行培训,培训结果仍然会包含没有标签的文件的影响.

但我的情况是2.

假设我从训练集语料库的摘要中获得了关于术语T的以下信息:

  • 训练集中T的文档计数为n
  • 培训文件总数为N.

我应该如下计算看不见的文件D 的ID的IDF 吗?

IDF(t,D)= log((N + 1)/(n + 1))

添加2

如果我在新文档中遇到一个之前没有出现在训练语料库中的术语怎么办?我应该如何计算doc-term向量中的权重?

information-retrieval classification machine-learning text-mining document-classification

21
推荐指数
1
解决办法
1万
查看次数