jieba分词中用到的TF-IDF算法的介绍

注:利用jieba分词进行关键词抽取(选择TF-IDF算法)

这里介绍基于TF-IDF算法的关键词抽取(干货|详解自然语言处理之TF-IDF模型和python实现), 只有关键词抽取并且进行词向量化之后,才好进行下一步的文本分析,可以说这一步是自然语言处理技术中文本处理最基础的一步。

jieba分词中含有analyse模块,在进行关键词提取时可以使用下列代码

#练习使用scikit-learn包计算TF-IDF,可以见(干货|详解自然语言处理之TF-IDF模型和python实现)

from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfVectorizer

def tfidf_keywords():
 # 00、读取文件,一行就是一个文档,将所有文档输出到一个list中
    corpus = []
    for line in open('data/fenci_predict.txt', 'r').readlines():
        corpus.append(line)

  #方法一
    #TfidfVectorizer
    vector=TfidfVectorizer( )#将停词引入模型,tfidf=TfidfVectorizer(token_pattern=r"(?u)\b\w\w+\b",stop_words=stopword)
    tfidf=vector.fit_transform(corpus)#模型向量化
    ###每次词和TF-IDF的对应关系
    word=vector.get_feature_names()#获取词带模型中的所有词
    weightlist=tfidf.toarray()#将tf-idf矩阵抽取出来,元素a[i][j]表示j词在i类文本中的tf-idf权重  
     # 保存特征文本
    print('len(word)',len(word)) 
    with open("data/fenci_predict_feature.txt",'w') as f:
       for j in range(len(word)):
          f.write((word[j]).encode('utf-8')+' ')
#方法二
    # 01、构建词频矩阵,将文本中的词语转换成词频矩阵
    vectorizer = CountVectorizer()
    # a[i][j]:表示j词在第i个文本中的词频
    X = vectorizer.fit_transform(corpus)
    print X.shape  # 词频矩阵
 
    # 02、构建TFIDF权值
    transformer = TfidfTransformer()
    # 计算tfidf值
    tfidf = transformer.fit_transform(X)
 
    # 03、获取词袋模型中的关键词
    word = vectorizer.get_feature_names()
 
tfidf_keywords()

补充上一篇:

jieba分词并行分词

jieba分词器如果是对于大的文本进行分词会比较慢,因此可以使用jieba自带的并行分词功能进行分词,其采用的原理是将目标文本按照行分割后,把各行文本分配到多个Python进程并行分词,然后归并结果,从而获得分词速度可观的提升。

该过程需要基于python自带的multiprocessing模块,而且目前暂时不支持windows. 在使用的时候,只需要在使用jieba分词导入包的时候同时加上下面任意一个命令:

结巴中文分词文档介绍:https://github.com/fxsjy/jieba

猜你喜欢

转载自blog.csdn.net/qq_31342997/article/details/84638459
今日推荐