相关疑难解决方法(0)

给出2个句子字符串计算余弦相似度

Python:tf-idf-cosine:为了找到文档相似性,可以使用tf-idf余弦计算文档相似度.没有导入外部库,是否有任何方法可以计算2个字符串之间的余弦相似度?

s1 = "This is a foo bar sentence ."
s2 = "This sentence is similar to a foo bar sentence ."
s3 = "What is this string ? Totally not related to the other two lines ."

cosine_sim(s1, s2) # Should give high cosine similarity
cosine_sim(s1, s3) # Shouldn't give high cosine similarity value
cosine_sim(s2, s3) # Shouldn't give high cosine similarity value
Run Code Online (Sandbox Code Playgroud)

python string nlp similarity cosine-similarity

69
推荐指数
3
解决办法
9万
查看次数

python中的TF-IDF实现

python中有哪些标准的tf-idf实现/ api?我在nltk遇到过那个.我想知道提供此功能的其他库.

python information-retrieval nltk tf-idf

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

搜索查询的TF*IDF

好的,所以我一直关注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 …
Run Code Online (Sandbox Code Playgroud)

python nlp nltk tf-idf scikit-learn

15
推荐指数
1
解决办法
6893
查看次数

Python - tf-idf预测新文档的相似性

受到这个答案的启发,我试图在经过训练的训练有素的tf-idf矢量化器和新文档之间找到余弦相似性,并返回类似的文档.

下面的代码找到第一个向量的余弦相似度,而不是新的查询

>>> from sklearn.metrics.pairwise import linear_kernel
>>> cosine_similarities = linear_kernel(tfidf[0:1], tfidf).flatten()
>>> cosine_similarities
array([ 1.        ,  0.04405952,  0.11016969, ...,  0.04433602,
    0.04457106,  0.03293218])
Run Code Online (Sandbox Code Playgroud)

由于我的火车数据很大,循环遍历整个训练过的矢量器听起来像个坏主意.如何推断新文档的向量,并找到相关文档,与下面的代码相同?

>>> related_docs_indices = cosine_similarities.argsort()[:-5:-1]
>>> related_docs_indices
array([    0,   958, 10576,  3277])
>>> cosine_similarities[related_docs_indices]
array([ 1.        ,  0.54967926,  0.32902194,  0.2825788 ])
Run Code Online (Sandbox Code Playgroud)

python machine-learning tf-idf document-classification scikit-learn

7
推荐指数
1
解决办法
1823
查看次数

tfidf 矢量化器和 tfidf 变压器有什么区别

我知道公式tfidf vectorizer

Count of word/Total count * log(Number of documents / no.of documents where word is present)
Run Code Online (Sandbox Code Playgroud)

我在 scikit learn 中看到了 tfidf 转换器,我只是想区分它们。我找不到任何有用的东西。

python nltk tf-idf scikit-learn tfidfvectorizer

2
推荐指数
3
解决办法
6138
查看次数