文档聚类

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

来源: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