import os import jieba.analyse from textrank4zh import TextRank4Keyword import concurrent.futures import scipy # 定义分块读取函数 def read_in_chunks(file_path, chunk_size=1024 * 1024): with open(file_path, 'r', encoding='utf-8') as f: while True: data = f.read(chunk_size) if not data: break yield data # 定义处理函数 def process_chunk(chunk): # 使用jieba分词提取关键词 jieba_keywords = jieba.analyse.extract_tags(chunk, topK=10, withWeight=True) # 使用textrank4zh提取关键词 tr4w = TextRank4Keyword() tr4w.analyze(chunk, lower=True, window=2) textrank_keywords = tr4w.get_keywords(10, word_min_len=2) # 合并两种方法提取的关键词 keywords = jieba_keywords + textrank_keywords return keywords # 读取文本文件,并按块处理 chunks = [] for chunk in read_in_chunks('cnl_201504.txt'): chunks.append(chunk) # 多线程并行处理 results = [] with concurrent.futures.ThreadPoolExecutor() as executor: futures = [executor.submit(process_chunk, chunk) for chunk in chunks] for future in concurrent.futures.as_completed(futures): results.extend(future.result()) # 合并结果,并按权重降序排序 keywords = {} for keyword, weight in results: if keyword in keywords: keywords[keyword] += weight else: keywords[keyword] = weight keywords = sorted(keywords.items(), key=lambda x: x[1], reverse=True) keywords = [(keyword, weight) for keyword, weight in keywords if len(keyword) > 1][:10] # 输出到txt文件中 with open('output.txt', 'w', encoding='utf-8') as f: for keyword, weight in keywords: f.write(keyword + '\t' + str(weight) + '\n')运行上述代码出现下述问题,请修改代码:AttributeError: module 'networkx' has no attribute 'from_numpy_matrix'
时间: 2024-03-03 13:51:14 浏览: 29
这个错误是因为缺少了 `networkx` 库。你需要在代码开头引入这个库:
```python
import os
import jieba.analyse
from textrank4zh import TextRank4Keyword
import concurrent.futures
import scipy
import networkx as nx
```
如果你还没有安装这个库,可以通过以下命令安装:
```
pip install networkx
```
相关问题
jieba.analyse.extract_tags 和 jieba.analyse.textrank区别
jieba.analyse.extract_tags和jieba.analyse.textrank都是jieba库中的关键词提取方法,但它们的算法和使用场景有所不同。
jieba.analyse.extract_tags是基于TF-IDF算法的关键词提取方法,它根据词频和文档频率计算关键词的重要性。它可以设置topK参数来限制返回的关键词数量,并且可以指定使用停用词列表和指定词性的词语进行提取。
jieba.analyse.textrank是基于PageRank算法的关键词提取方法,它将文本中的词语看作是节点,根据它们之间的共现关系构建图,利用PageRank算法进行计算,得出关键词的重要性。它可以设置topK参数来限制返回的关键词数量,并且可以指定使用停用词列表和指定词性的词语进行提取。
总的来说,如果要提取一篇文档中的关键词,可以先使用jieba.analyse.extract_tags进行初步提取,再使用jieba.analyse.textrank进行筛选和排序,以得到更加准确的关键词。但是如果要处理的文本比较长,比如一篇长篇小说或者一篇新闻报道,建议直接使用jieba.analyse.textrank进行关键词提取,因为它能够充分利用文本中的信息,得到更加准确的关键词。
生成关键词的词云图用jieba.analyse.textrank还是jieba.analyse.extract_tags
生成关键词的词云图时,可以使用jieba.analyse.extract_tags方法进行关键词提取。因为词云图需要展示的是文本中出现频率较高的关键词,而jieba.analyse.extract_tags方法是根据词频和文档频率计算关键词的重要性,可以很好地满足这个需求。
jieba.analyse.textrank方法虽然也可以用于关键词提取,但它计算的是节点之间的共现关系,更适合用于提取文本中比较重要的关键词。而在词云图中,我们更关注的是出现频率较高的关键词,因此jieba.analyse.extract_tags更适合用于生成关键词的词云图。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)