潜在语义分析(Latent Semantic Analysis,LSA)是一种无监督学习方法,用于在文本数据中发现潜在的语义结构。LSA 的主要应用之一是进行文本文档的主题建模和信息检索。
以下是一个使用 Python 中的 scikit-learn
库来实现潜在语义分析(LSA
)的简单教程。
import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.decomposition import TruncatedSVD
# 示例文本数据
documents = [
"Natural language processing is a field of artificial intelligence.",
"Text analysis involves processing and understanding written language.",
"Machine learning algorithms are used in natural language processing.",
"Topic modeling is a technique in text analysis.",
"Latent semantic analysis is a type of topic modeling."
]
使用 TF-IDF
(Term Frequency-Inverse Document Frequency)向量化文本数据。
# TF-IDF向量化
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(documents)
# 使用TruncatedSVD进行潜在语义分析
n_components = 2 # 指定潜在语义的维度
lsa = TruncatedSVD(n_components=n_components)
lsa_result = lsa.fit_transform(X)
# 查看潜在语义的结果
print("LSA Components:")
print(lsa.components_)
print("\nLSA Explained Variance Ratio:")
print(lsa.explained_variance_ratio_)
# 可视化潜在语义的结果
plt.scatter(lsa_result[:, 0], lsa_result[:, 1], c='blue', marker='o')
plt.title('Latent Semantic Analysis')
plt.xlabel('LSA Component 1')
plt.ylabel('LSA Component 2')
plt.show()
在这个例子中,我们首先将文本数据使用 TF-IDF
向量化,然后使用 TruncatedSVD
进行潜在语义分析。最后,我们查看了潜在语义的结果,并通过散点图可视化了文档在潜在语义空间的分布。
调整 n_components
参数可以改变潜在语义的维度。这个参数的选择通常是一个平衡,需要根据具体问题和数据集进行调整。