文本挖掘是從大量文本中,比如微博評論,知乎評論,JD,天貓淘寶大量評論中的文本中抽取出有價值的知識,并利用這些知識創造出價值,實現變現的一個過程。
文本挖掘目的是把文本信息轉化為人類可利用的知識。
文本挖掘我覺得可分為以下幾個方向。
第一,文本詞頻統計分析,提取關鍵字做詞云展示。
第二,分類,利用sklearn的樸素貝葉斯算法進行分類,比如垃圾郵件分類,文本分類、信用等級評定,情感分析。
第三,文本推薦,例如使用TF-IDF找出兩篇文章的關鍵詞,然后每個文章分別取出k個關鍵詞(10-20個),統計這些關鍵詞的詞頻,生成兩篇文章的詞頻向量,然后用余弦距離計算其相似度進行推薦。
語料庫是我們要分析的所有文檔的集合。現有十九大報告的txt文檔。
十九大報告
分詞結果
分詞結果頻率排序
生成詞云
全篇代碼:
# -*- conding:utf-8 -*-
import re
import numpy as np
import pandas as pd
# 字符編碼模塊
import codecs
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 匹配中文字符正則表達式
zh_pattern = re.compile(u'[\u4e00-\u9fa5]+')
# 加載文本數據,構建語料庫
text = codecs.open('D:/PyCharm WorkPlace/十九大.txt', 'r', 'gbk')
content = text.read()
text.close()
stat = []
# 停用詞語
stop_words = set(['的', '和', '是', '在', '要', '為', '我們', '以', '把', '了', '到', '上', '有'])
# 分詞
segs = jieba.cut(content)
for seg in segs:
# 匹配中文字符
if zh_pattern.search(seg):
# 去除停用詞
if seg not in stop_words:
stat.append({'from': '十九大', 'word': seg})
# print(stat)
# 分詞結果存到數據框
stat_df = pd.DataFrame(stat)
print(stat_df)
# pivot_table 透視表
pt_stat = stat_df.pivot_table(index='word', columns='from', fill_value=0, aggfunc=np.size)
# 分詞結果頻率排序
# print(pt_stat.sort_index(by='十九大'))
# 設置詞云字體
cloud = WordCloud(font_path='C:\\simhei.ttf', background_color='white')
words = pt_stat['十九大'].to_dict()
print(words)
# 生成詞云
cloud.fit_words(words)
plt.imshow(cloud)
plt.axis('off')
plt.show()