python文本特征抽取LDA模型代码
时间: 2023-10-14 07:21:13 浏览: 102
基于python的LDA模型实现代码
5星 · 资源好评率100%
以下是一个简单的Python文本特征抽取LDA模型代码:
```pythonimport pandas as pd
import numpy as np
import re
import nltk
from nltk.stem import PorterStemmer
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.decomposition import LatentDirichletAllocation
# 读取数据
df = pd.read_csv('data.csv', delimiter='\t')
# 数据预处理
corpus = []
stemmer = PorterStemmer()
for i in range(len(df)):
text = df['text'][i]
text = re.sub('[^a-zA-Z]', ' ', text)
text = text.lower()
text = nltk.word_tokenize(text)
text = [stemmer.stem(word) for word in text]
text = ' '.join(text)
corpus.append(text)
# 特征提取
cv = CountVectorizer(max_features=5000, stop_words='english')
X = cv.fit_transform(corpus)
# LDA模型训练
lda = LatentDirichletAllocation(n_components=10, random_state=42)
lda.fit(X)
# 输出主题及其关键词
features = cv.get_feature_names()
for topic_idx, topic in enumerate(lda.components_):
print("Topic #%d:" % topic_idx)
print(" ".join([features[i] for i in topic.argsort()[:-10 - 1:-1]]))
print()
```
该代码将文本数据读入Pandas DataFrame中,对文本进行预处理(移除非字母字符、转为小写、分词、词干提取),使用CountVectorizer进行特征提取,然后使用LatentDirichletAllocation训练LDA模型,并输出每个主题及其关键词。注意,这里仅使用了5000个最常见的词作为特征,您可以根据自己的需求进行调整。
阅读全文