用主题建模识别文本模式

主题建模是指识别文本数据隐藏模式的过程,其目的是发现一组文档的隐藏主题结构。
这里的gensim库很重要,我是在Anaconda3下安装的,具体步骤如下:
Settings–>Project Interpreter–>点击右侧的”+”即可

# -*- coding: utf-8 -*-
"""
Created on Thu Oct 12 16:30:39 2017

@author: Yxm
"""

from nltk.tokenize import RegexpTokenizer
from nltk.stem.snowball import SnowballStemmer
from gensim import models,corpora
from nltk.corpus import stopwords


#加载数据
def load_data(input_file):
    data=[]
    with open(input_file,'r') as f:
        for line in f.readlines():
            data.append(line[:-1])
    return data

定义一个预处理文本的类。这个预处理器处理相应的对象,并从输入文本中提取相关特征。

#类预处理文本
class Preprocessor(object):
    #对各种操作进行初始化
    def __init__(self):
        #创建正则表达式解析器
        self.tokenizer=RegexpTokenizer(r'\w+')
        #获取停用词列表    
                      self.stop_words_english=stopwords.words('english')
        #创建Snowball词干提取器
        self.stemmer=SnowballStemmer('english')
        #定义一个处理函数,负责标记解析、停用词去除和词干还原
    def process(self,input_text):
        tokens=self.tokenizer.tokenize(input_text.lower())
        tokens_stopwords=[x for x in tokens if not x in self.stop_words_english]
        tokens_stemmed=[self.stemmer.stem(x) for x in tokens_stopwords]
        return tokens_stemmed

定义一个main函数,从文本文件中加载输入数据

if __name__ == '__main__':
    #输入数据的文件
    input_file='data_topic_modeling.txt'
    data=load_data(input_file)
    #创建预处理对象
    preprocessor=Preprocessor()
    #处理文件中的文本,并提取处理好的标记
    processed_tokens=[preprocessor.process(x) for x in data]
    #创建基于标记文档的词典
    dict_tokens=corpora.Dictionary(processed_tokens)
    #创建文档-词矩阵
    corpus=[dict_tokens.doc2bow(text) for text in processed_tokens]
    #假定文本可以分成两个主题,基于刚刚创建的语料库生成LDA模型
    num_topics=2
    num_words=4
    ldamodel=models.ldamodel.LdaModel(corpus,num_topics=num_topics,id2word=dict_tokens,passes=25)
    #识别出两个主题后,可以看到它是如何将两个主题分开来的
    print ("\nMost contributing words to the topics:")
    for item in ldamodel.print_topics(num_topics=num_topics,num_words=num_words):
        print ("\nTopic",item[0],'==>',item[1])

运行结果如下:
有个小疑问:每次的运行结果都不一样,嗯,待解决,让我研究一下LDA模型去
用主题建模识别文本模式_第1张图片

data_topic_modeling.txt链接:https://pan.baidu.com/s/1nvGCJqh

你可能感兴趣的:(文本分类)