告诉我如何对CSV中的文本利用TF-IDF提取关键词的代码
时间: 2024-04-29 17:21:42 浏览: 109
基于Python实现TF-IDF矩阵表示(人工智能实验)【100011921】
下面是一个简单的 Python 代码示例,演示如何使用 TF-IDF 提取 CSV 文件中的关键词。假设 CSV 文件名为 `data.csv`,它有两列:`id` 和 `text`,其中 `text` 列包含一些文本:
```python
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
# 读取 CSV 文件并将其转换为 Pandas DataFrame
df = pd.read_csv('data.csv')
# 创建一个 TfidfVectorizer 对象,用于计算 TF-IDF
tfidf = TfidfVectorizer()
# 计算文本的 TF-IDF 权重
tfidf_weights = tfidf.fit_transform(df['text'])
# 获取所有特征词(也称为“关键词”)
feature_names = tfidf.get_feature_names()
# 遍历每个文本,提取出权重最高的关键词
for i in range(len(df)):
# 获取该文本的 TF-IDF 权重向量
weights = tfidf_weights[i].toarray()[0]
# 获取所有权重不为 0 的特征词索引
nonzero_indices = weights.nonzero()[0]
# 获取这些特征词对应的 TF-IDF 权重值
nonzero_weights = weights[nonzero_indices]
# 获取这些特征词的名称
nonzero_features = [feature_names[j] for j in nonzero_indices]
# 将这些特征词按照权重排序,并只选择前 5 个作为关键词
sorted_indices = nonzero_weights.argsort()[::-1][:5]
sorted_features = [nonzero_features[j] for j in sorted_indices]
# 打印出这些关键词
print(f"ID: {df['id'][i]}, Keywords: {', '.join(sorted_features)}")
```
这段代码使用 `TfidfVectorizer` 类来计算文本的 TF-IDF 权重。然后,它遍历每个文本,并提取出权重最高的 5 个特征词作为关键词。最后,它打印出每个文本的 ID 和关键词。
阅读全文