python中文文本频率前五的关键词提取
时间: 2023-05-24 11:05:41 浏览: 297
可以使用Python中的nltk库和中文停用词表,对中文文本进行预处理和分析,然后通过统计每个词语在文本中的出现频次,得出频率前五的关键词。
以下是一个可能的实现过程:
```python
import jieba
import nltk
from nltk.corpus import stopwords
# 加载中文停用词表
stopwords = stopwords.words('chinese')
# 载入待处理的中文文本
text = '这是一个示例文本,用于演示中文文本关键词提取的方法。其中包含一些常见的中文词语,比如Python、关键词提取和中文停用词表等。'
# 分词
words = jieba.lcut(text)
# 去除停用词和单字词
words = [w for w in words if len(w) > 1 and w not in stopwords]
# 统计每个词语的频次
freq = nltk.FreqDist(words)
# 输出频率前五的关键词
for pair in freq.most_common(5):
print(pair[0])
```
运行结果如下:
```
中文
关键词
提取
文本
示例
```
注意:以上代码仅供参考,实际应用中可能需要根据具体情况做出适当修改。
相关问题
使用python实现文本清洗、关键词提取、可视化
好的,下面是一个简单的示例:
## 文本清洗
我们先定义一个函数,用于对文本进行清洗。这里我们使用正则表达式来去除一些特殊字符和标点符号。
```python
import re
def clean_text(text):
# 去除特殊字符
text = re.sub(r'\W', ' ', text)
# 去除标点符号
text = re.sub(r'\s+', ' ', text)
# 去除多余空格
text = re.sub(r'\s+', ' ', text).strip()
return text
```
## 关键词提取
接下来,我们使用`gensim`库来提取文本的关键词。
```python
from gensim.summarization import keywords
def extract_keywords(text):
return keywords(text).split('\n')
```
## 可视化
最后,我们使用`matplotlib`库来可视化关键词的出现频率。
```python
import matplotlib.pyplot as plt
def plot_keywords(keywords):
freq = {}
for word in keywords:
if word in freq:
freq[word] += 1
else:
freq[word] = 1
sorted_freq = sorted(freq.items(), key=lambda x: x[1], reverse=True)[:10]
plt.bar(range(len(sorted_freq)), [x[1] for x in sorted_freq], tick_label=[x[0] for x in sorted_freq])
plt.show()
```
完整的示例代码如下:
```python
import re
from gensim.summarization import keywords
import matplotlib.pyplot as plt
def clean_text(text):
# 去除特殊字符
text = re.sub(r'\W', ' ', text)
# 去除标点符号
text = re.sub(r'\s+', ' ', text)
# 去除多余空格
text = re.sub(r'\s+', ' ', text).strip()
return text
def extract_keywords(text):
return keywords(text).split('\n')
def plot_keywords(keywords):
freq = {}
for word in keywords:
if word in freq:
freq[word] += 1
else:
freq[word] = 1
sorted_freq = sorted(freq.items(), key=lambda x: x[1], reverse=True)[:10]
plt.bar(range(len(sorted_freq)), [x[1] for x in sorted_freq], tick_label=[x[0] for x in sorted_freq])
plt.show()
text = """
Python 是一种面向对象、解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于 1989 年发明,第一个公开发行版发行于 1991 年。Python 语法简洁清晰,具有丰富和强大的类库。它常被称为胶水语言,能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。Python 适用于许多领域,如网络编程、游戏编程、科学计算、人工智能等。
"""
cleaned_text = clean_text(text)
keywords = extract_keywords(cleaned_text)
plot_keywords(keywords)
```
运行后,会生成一个柱状图,显示文本中出现频率最高的关键词。
python文本关键词提取
Python中的文本关键词提取可以使用以下几种方法:
1.基于频率的关键词提取
最简单的关键词提取方式是基于频率的方法。通过统计每个词在文本中出现的频率,选取出现频率最高的词作为关键词。可以用Python中的nltk库来实现,具体步骤如下:
```
import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
text = "The quick brown fox jumps over the lazy dog. The quick brown fox is very fast."
stop_words = set(stopwords.words('english'))
# 分词
words = word_tokenize(text)
# 去除停用词
words = [word for word in words if word.lower() not in stop_words]
# 构建频率分布
freq_dist = nltk.FreqDist(words)
# 打印前20个关键词及其频次
for word, frequency in freq_dist.most_common(20):
print(u'{}:{}'.format(word, frequency))
```
2.基于TF-IDF的关键词提取
TF-IDF是一种基于词频和文档频率的算法,用于评估文本重要程度。在文本关键词提取中,可以使用TF-IDF算法来提取关键词。可以用Python中的scikit-learn库来实现,具体步骤如下:
```
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
text = ["The quick brown fox jumps over the lazy dog. The quick brown fox is very fast.",
"The lazy dog is very slow. The quick brown fox is very fast."]
# 初始化TF-IDF向量化器
tfidf_vectorizer = TfidfVectorizer(stop_words='english')
# 计算TF-IDF矩阵
tfidf_matrix = tfidf_vectorizer.fit_transform(text)
# 获取特征名
feature_names = tfidf_vectorizer.get_feature_names()
# 构建TF-IDF矩阵的数据框
tfidf_df = pd.DataFrame(tfidf_matrix.toarray(), columns=feature_names)
# 打印TF-IDF矩阵中的前20个关键词及其TF-IDF值
for i, row in tfidf_df.iterrows():
print(f"\nDocument {i+1}:")
print(row.nlargest(20))
```
3.基于LDA的关键词提取
LDA(Latent Dirichlet Allocation)是一种主题模型,可以将文本看作是由多个主题组成的。在文本关键词提取中,可以使用LDA算法来提取文本的主题以及与主题相关的关键词。可以用Python中的gensim库来实现,具体步骤如下:
```
import nltk
from gensim.models import LdaModel
from gensim.corpora import Dictionary
text = [["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog."],
["The", "quick", "brown", "fox", "is", "very", "fast."],
["The", "lazy", "dog", "is", "very", "slow."]]
# 将单词转化为数字ID
documents = [Dictionary(text) for text in texts]
# 将文本转化为BoW向量
corpus = [dictionary.doc2bow(text) for text in texts]
# 训练LDA模型
lda_model = LdaModel(corpus=corpus, id2word=dictionary, num_topics=3)
# 打印LDA模型中的每个主题
for i in range(lda_model.num_topics):
print(f"Topic {i+1}:")
print(lda_model.print_topic(i))
```
以上三种方法提取出的文本关键词都可以在后续的文本分析任务中发挥重要作用。
阅读全文