加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
participle.py 2.89 KB
一键复制 编辑 原始数据 按行查看 历史
我没得冰阔落 提交于 2023-07-04 09:13 . v1
import jieba
from jieba import analyse
import jieba.posseg as pseg
import os
import sys
from sklearn import feature_extraction
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.feature_extraction.text import CountVectorizer
import numpy as np
# 引入TF-IDF关键词抽取接口
tfidf = analyse.extract_tags
def participle(text, cut_all=False):
seglist_f = " ".join(list(jieba.cut(text,cut_all=False)))
seglist_t = " ".join(list(jieba.cut(text,cut_all=True)))
seglist_s = " ".join(list(jieba.cut_for_search(text)))
if cut_all == 'all':
return seglist_f, seglist_s, seglist_s
if cut_all == False:
return seglist_f
if cut_all == True:
return seglist_t
if cut_all == 's':
return seglist_s
def get_keywords(text, topK = 5):
corpus = [participle(text)]
for i in corpus:
if len(i) <= 1:
corpus.pop(i)
keywords = []
vectorizer = CountVectorizer() # 该类会将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在i类文本下的词频
transformer = TfidfTransformer() # 该类会统计每个词语的tf-idf权值
tfidf = transformer.fit_transform(vectorizer.fit_transform(corpus)) # 第一个fit_transform是计算tf-idf,第二个fit_transform是将文本转为词频矩阵
word = vectorizer.get_feature_names_out() # 获取词袋模型中的所有词语
# print(word)
weight = tfidf.toarray() # 将tf-idf矩阵抽取出来,元素a[i][j]表示j词在i类文本中的tf-idf权重
for i in range(len(weight)): # 打印每类文本的tf-idf词语权重,第一个for遍历所有文本,第二个for便利某一类文本下的词语权重
print(i)
sorted_weight = np.argsort(weight[i])[::-1] # 降序排列索引
top_k_weight = sorted_weight[:topK] # 获取前K个索引
top_k_words = word[top_k_weight] # 获取对应的单词
keywords = " ".join(list(set(top_k_words)))
return keywords
if __name__ == '__main__':
# text = "小明1995年毕业于清华大学"
# result = participle(text)
# print(result)
# # 原始文本
text = "线程是程序执行时的最小单位,它是进程的一个执行流,\
是CPU调度和分派的基本单位,一个进程可以由很多个线程组成,\
线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。\
线程由CPU独立调度执行,在多CPU环境下就允许多个线程同时运行。\
同样多线程也可以实现并发操作,每个请求分配一个线程来处理。"
# # 基于TF-IDF算法进行关键词抽取
# keywords = tfidf(text)
# print("keywords by tfidf:")
# # 输出抽取出的关键词
# for keyword in keywords:
# print(keyword + "/")
corpus = "我 来到 北京 清华大学"
keywords = get_keywords(text)
print(keywords)
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化