Shl*_*rtz 7 python machine-learning tf-idf document-classification scikit-learn
受到这个答案的启发,我试图在经过训练的训练有素的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)
小智 1
对于庞大的数据集,有一个名为Text Clustering By Concept的解决方案。搜索引擎使用此技术,
第一步,将文档聚类到一些组(例如 50 个聚类),然后每个聚类都有一个代表性文档(其中包含一些具有有关其聚类的有用信息的单词)。 第二步,
计算新文档和新文档之间的余弦相似度您的数据集,您循环遍历所有代表(50 个数字)并找到最接近的代表(例如 2 个代表)
在最后一步,您可以循环遍历所选代表中的所有文档并找到最近的余弦相似度
使用此技术,您可以减少循环次数并提高性能,您可以在本书的某些章节中阅读更多技术:http://nlp.stanford.edu/IR-book/html/htmledition/irbook.html
| 归档时间: |
|
| 查看次数: |
1823 次 |
| 最近记录: |