当前位置 : 主页 > 网络推广 > seo >

数据挖掘——关键字提取—sklearn的实际应用

来源:互联网 收集:自由互联 发布时间:2021-06-16
前面的步骤都相似 #构建语料库 #使用jieba包进行分词,并将分词结果用空格分隔后再传回分词列表 zh = re.compile(u ‘ [\u4e00-\u9fa5]+ ‘ ) # 中文的正则表达式 for seg in segs: if zh.search(seg): # 只

前面的步骤都相似

#构建语料库

#使用jieba包进行分词,并将分词结果用空格分隔后再传回分词列表

zh = re.compile(u[\u4e00-\u9fa5]+)    #中文的正则表达式
for seg in segs:
        if zh.search(seg):  #只匹配中文分词
            segments.append(seg)
    filepath.append(filePath)
 #使用空格将符合要求的分词隔开,然后放回语料库中,而不是得到分词和路径的矩阵
    row[fileContent] =  .join(segments) 

#导入sklearn包中计算TF-IDF的模块,可以将停用词以参数的形式传入CountVectorizer模块

得到numpy类的数据结构,需要进行转换

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
skcount = CountVectorizer(
        stop_words=list(stopwords[stopword].values),
        min_df=0,
        token_pattern=r\b\w+\b) #分词的正则表达式

text = skcount.fit_transform(corpos[fileContent])

trans = TfidfTransformer()
tfidf = trans.fit_transform(text)

#将得到的TF-IDF结构转换成数组的形式,并得到关键字numpy类的数据结构

#按行转换成数组,并排序,取tfidf值前5的元素的位置
sort = np.argsort(tfidf.toarray(),axis=1)[:,-5:] 
#获取该位置所对应的列名,即分词关键字
names = skcount.get_feature_names() 
keywords = pd.Index(names)[sort].values #非数组

#将关键字按数据框的格式进行输出,得到最终结果

tagDF = pd.DataFrame({
        文件路径:corpos.filePath,
        文本内容:corpos.fileContent,
        关键字1:keywords[:,0], 
        关键字2:keywords[:,1],
        关键字3:keywords[:,2],
        关键字4:keywords[:,3],
        关键字5:keywords[:,4]})
网友评论