注:利用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