如何对分词后的文档进行聚类

我有一组文档,我想了解它们与某一特定文档在相似性上的接近程度。我刚刚学会了如何对分词后的文档进行聚类,但不知道如何检查它们与一个目标文档的距离。

我实现聚类的方式是,首先处理文档列表…

text = [    "This is a test",    "This is something else",    "This is also a test"]

然后我使用以下函数对它们进行分词…

def word_tokenizer(sentences):    tokens = word_tokenize(sentences)    stemmer = PorterStemmer()    tokens = [stemmer.stem(t) for t in tokens if t not in stopwords.words('english')]    return tokens

我将这个函数传递给TfidfVectorizer

tfidf_vect = TfidfVectorizer(        tokenizer=word_tokenizer,        max_df=0.9,        min_df=0.1,        lowercase=True    )tfidf_matrix = tfidf_vect.fit_transform(text)

然后我使用Kmeans对矩阵进行聚类…

kmeans = KMeans(n_clusters=3)kmeans.fit(tfidf_matrix)

然后我保存每个聚类并打印结果…

for i, label in enumerate(kmeans.labels_):    clusters[label].append(i)res = dict(clusters)for cluster in range(3):    print("cluster ", cluster, ":")    for i, sentence in enumerate(res[cluster]):        print("\tsentence ", i, ": ", text[sentence])

结果如下…

cluster  0 :    sentence  0 :  This is also a testcluster  1 :    sentence  0 :  This is something elsecluster  2 :    sentence  0 :  This is a test

这些信息很有用,但假设我有一个目标文档,我想查看这些文档与目标文档的相似度,该怎么做呢?

例如,假设我有以下目标…

target = ["This is target"]

我如何检查text中的每个文档与这个目标的相似度?


回答:

你可以简单地使用KMeans.predict()

预测X中每个样本所属的最接近的聚类。

在向量量化文献中,cluster_centers_被称为代码簿,predict返回的每个值是代码簿中最接近代码的索引。

这将返回新句子所属聚类的索引。

对目标句子应用相同的预处理并调用predict()。确保使用相同的tfidfvectorizer来转换句子。

类似于这样:

target_tfidf_matrix = tfidf_vect.transform(target)results = kmeans.predict(target_tfidf_matrix)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注