【问题标题】:TF*IDF for Search Queries用于搜索查询的 TF*IDF
【发布时间】:2012-08-08 08:01:40
【问题描述】:

好的,所以我一直在关注 TF*IDF 上的这两个帖子,但有点困惑:http://css.dzone.com/articles/machine-learning-text-feature

基本上,我想创建一个搜索查询,其中包含对多个文档的搜索。我想使用 scikit-learn 工具包以及 Python 的 NLTK 库

问题是我看不到这两个 TF*IDF 向量的来源。我需要一个搜索查询和多个文档来搜索。我想我会针对每个查询计算每个文档的 TF*IDF 分数,并找到它们之间的余弦相似度,然后通过按降序对分数进行排序来对它们进行排序。但是,代码似乎没有提供正确的向量。

每当我将查询减少到只有一个搜索时,它都会返回一个巨大的 0 列表,这真的很奇怪。

代码如下:

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from nltk.corpus import stopwords

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)
transformer = TfidfTransformer()

trainVectorizerArray = vectorizer.fit_transform(train_set).toarray()
testVectorizerArray = vectorizer.transform(test_set).toarray()
print 'Fit Vectorizer to train set', trainVectorizerArray
print 'Transform Vectorizer to test set', testVectorizerArray

transformer.fit(trainVectorizerArray)
print transformer.transform(trainVectorizerArray).toarray()

transformer.fit(testVectorizerArray)

tfidf = transformer.transform(testVectorizerArray)
print tfidf.todense()

【问题讨论】:

  • 我想知道您是否使用从 print tfidf.todense() 获得的最终矩阵计算余弦,如果是的话,您该怎么做?
  • 嘿一秒...我很快就会发布一个例子。
  • 谢谢,那太好了。你会在这里放一个链接吗..?那就更好了。
  • 在我的 GitHub 页面上:github.com/tabchas -- 代码在 Disco-Search-Query 下。我正在尝试为 Wikipedia 实现搜索查询,但现在有一个 simpletfidf.py 文件,应该是您正在寻找的文件。
  • 谢谢,我一定会看看它,因为我实际上是根据一些谷歌搜索来构建文档,所以我仍然有几个问题。但这是我根据您的初始代码所做的:我已通过链接 stackoverflow.com/questions/12118720/… 将您的第一个答案归功于您

标签: python nlp nltk scikit-learn tf-idf


【解决方案1】:

您将train_settest_set 定义为元组,但我认为它们应该是列表:

train_set = ["The sky is blue.", "The sun is bright."] #Documents
test_set = ["The sun in the sky is bright."] #Query

使用这个代码似乎运行良好。

【讨论】:

  • 太棒了。谢谢你的建议。为什么它不适用于元组?
  • 它被编码为将列表作为输入:)。这些列表在内部转换为 NumPy 数组(您也可以直接传递 NumPy 数组)。
猜你喜欢
  • 2017-06-19
  • 2016-09-03
  • 1970-01-01
  • 2015-05-07
  • 2018-06-19
  • 2019-04-07
  • 2020-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多