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


    前面的步骤都相似

    #构建语料库

    #使用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'w+') #分词的正则表达式
    
    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]})
  • 相关阅读:
    Oracle创建自增字段方法-ORACLE SEQUENCE的简介
    iOS项目开发实战——使用Xcode6设计自己定义控件与图形
    准备开源用javascript写Tomcat下的WebApp的项目
    Codeforces Round #256 (Div. 2) B. Suffix Structures
    静默方式安装10g数据库软件+升级patch+手工建库
    oracle 数据库开发面试题
    待机异常篇
    HTTP状态码(HTTP Status Code)
    POJ3126——Prime Path
    RHEL7 -- 通过gerp使用正则表达式
  • 原文地址:https://www.cnblogs.com/rix-yb/p/9704308.html
Copyright © 2020-2023  润新知