文本分析与挖掘python代码
时间: 2023-11-04 13:18:25 浏览: 105
以下是一个简单的文本分析与挖掘的Python代码示例:
```python
import pandas as pd
import re
from nltk.corpus import stopwords
from nltk.stem import PorterStemmer
from sklearn.feature_extraction.text import CountVectorizer
# 读取文本数据
data = pd.read_csv('text_data.csv')
# 数据清洗
data['text'] = data['text'].apply(lambda x: re.sub(r'\W', ' ', str(x))) # 去除标点符号
data['text'] = data['text'].apply(lambda x: re.sub(r'\s+[a-zA-Z]\s+', ' ', str(x))) # 去除单个字符
data['text'] = data['text'].apply(lambda x: re.sub(r'\^[a-zA-Z]\s+', ' ', str(x))) # 去除以单个字符开头的单词
data['text'] = data['text'].apply(lambda x: re.sub(r'\s+', ' ', str(x))) # 合并多个空格为一个空格
data['text'] = data['text'].apply(lambda x: x.lower()) # 将文本转换为小写
# 去除停用词和词干提取
stop_words = stopwords.words('english')
ps = PorterStemmer()
data['text'] = data['text'].apply(lambda x: ' '.join([ps.stem(word) for word in x.split() if word not in stop_words]))
# 构建词袋模型
cv = CountVectorizer(max_features=1500)
X = cv.fit_transform(data['text']).toarray()
```
以上代码使用了Pandas库读取CSV格式的文本数据,使用正则表达式进行数据清洗,使用NLTK库进行停用词去除和词干提取,使用Scikit-learn库的CountVectorizer类构建词袋模型。在构建词袋模型时,我们限制了最大特征数为1500,即最多提取1500个不同的词汇。最终,我们得到了一个稀疏矩阵X,其中每一行表示一个文本样本,每一列表示一个词汇,每个元素表示该词汇在该文本中出现的次数。
阅读全文