文档聚类

使用无监督学习根据文档内容对文档进行聚类

来源:AI夏令营

文档聚类是根据文档的文本和语义上下文将其分类为不同组的任务。这是一种无监督技术,因为我们没有文档标签,并且它在信息检索和搜索引擎中有应用

让我们开始吧...

为了根据文档内容对其进行分类,我决定使用 K-means 算法。由于这些项目没有标签,这显然是一个无监督学习问题,最好的解决方案之一应该是 K-Means。当然,我们可以使用不同的算法,例如高斯混合模型,甚至是深度学习方法,例如自动编码器。我将使用 Python 和 Jupyter 笔记本,将代码和结果与文档结合起来。

自动编码器

我在 Anaconda 环境中开发代码,并使用以下依赖项:

Anaconda

Pandas 用于数据处理

Pandas

Sklearn 用于机器学习和预处理

Sklearn

Matplotlib 用于绘图

Matplotlib

Ntlk 用于自然语言算法

Ntlk

BeautifulSoup 用于解析 xml 文件中的文本并摆脱类别

BeautifulSoup

解析数据

函数 parseXML 使用 xml.etree.ElementTree 来解析数据。我决定只使用与语义学最相关的项目的标题和描述进行聚类。由于描述不是原始文本,我们使用 BeautifulSoup 库提取文本,正如我已经提到的。我们还删除了描述非常短的项目,因为它们会影响最终的聚类。我们可以认为它们都属于一个额外的集群。当然,有办法将它们包括在内,但我暂时不使用它们。

import xml.etree.ElementTree as ET

import xml . etree . ElementTree as ET

import pandas as pd

import pandas as pd

import nltk

import nltk

from sklearn.cluster import KMeans

来自 sklearn cluster import KMeans

from sklearn.externals import joblib

from sklearn 外部 导入 joblib

从 sklearn.feature_extraction.text 导入 TfidfVectorizer

sklearn