详细内容或原文请订阅后点击阅览
文档聚类
使用无监督学习根据文档内容对文档进行聚类
来源:AI夏令营文档聚类是根据文档的文本和语义上下文将其分类为不同组的任务。这是一种无监督技术,因为我们没有文档标签,并且它在信息检索和搜索引擎中有应用
让我们开始吧...
为了根据文档内容对其进行分类,我决定使用 K-means 算法。由于这些项目没有标签,这显然是一个无监督学习问题,最好的解决方案之一应该是 K-Means。当然,我们可以使用不同的算法,例如高斯混合模型,甚至是深度学习方法,例如自动编码器。我将使用 Python 和 Jupyter 笔记本,将代码和结果与文档结合起来。
自动编码器我在 Anaconda 环境中开发代码,并使用以下依赖项:
AnacondaPandas 用于数据处理
PandasSklearn 用于机器学习和预处理
SklearnMatplotlib 用于绘图
MatplotlibNtlk 用于自然语言算法
NtlkBeautifulSoup 用于解析 xml 文件中的文本并摆脱类别
BeautifulSoup解析数据
函数 parseXML 使用 xml.etree.ElementTree 来解析数据。我决定只使用与语义学最相关的项目的标题和描述进行聚类。由于描述不是原始文本,我们使用 BeautifulSoup 库提取文本,正如我已经提到的。我们还删除了描述非常短的项目,因为它们会影响最终的聚类。我们可以认为它们都属于一个额外的集群。当然,有办法将它们包括在内,但我暂时不使用它们。
import xml.etree.ElementTree as ET
import xml . etree . ElementTree as ETimport pandas as pd
import pandas as pdimport nltk
import nltkfrom sklearn.cluster import KMeans
来自 sklearn 。 cluster import KMeansfrom sklearn.externals import joblib
from sklearn 。 外部 导入 joblib从 sklearn.feature_extraction.text 导入 TfidfVectorizer
从 sklearn