dataframe某列是英文text,怎么提取关键词和其他一列权重,保留权重高的几个词语,举例
时间: 2023-09-19 08:08:05 浏览: 141
可以使用Python中的nltk库和pandas库来实现。首先需要安装这两个库。
假设我们有一个名为df的DataFrame,其中包含两列:text和weight。text列包含英文文本,weight列包含权重值。以下是实现提取关键词和权重的示例代码:
``` python
import pandas as pd
import nltk
# 下载nltk的停用词表
nltk.download('stopwords')
stopwords = nltk.corpus.stopwords.words('english')
# 定义函数,用于提取关键词
def get_keywords(text):
# 将文本转为小写
text = text.lower()
# 分词
words = nltk.word_tokenize(text)
# 去除停用词和标点符号
words = [word for word in words if word not in stopwords and word.isalpha()]
# 计算词频
freq_dist = nltk.FreqDist(words)
# 提取前几个出现频率最高的词语
keywords = [word for word, freq in freq_dist.most_common(3)]
return keywords
# 加载数据
df = pd.read_csv('data.csv')
# 提取关键词
df['keywords'] = df['text'].apply(get_keywords)
# 按权重值排序
df = df.sort_values(by='weight', ascending=False)
# 取出权重值最高的几个词语
df['keywords'] = df['keywords'].apply(lambda x: x[:2])
```
在上面的代码中,我们首先定义了一个get_keywords()函数,用于从文本中提取关键词。该函数首先将文本转为小写,并进行分词和去除停用词和标点符号的处理。然后使用nltk库中的FreqDist类计算词频,最后提取出现频率最高的前3个词语作为关键词。
然后我们加载数据,并对每行文本调用get_keywords()函数提取关键词,将结果保存在新的一列keywords中。接着按照权重值降序排序,并使用lambda函数将每个关键词列表裁剪为最多2个元素。最后得到的DataFrame中,每行包含文本、权重和关键词列表。
阅读全文