91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

紅樓夢對章節(jié)的分析。因為沒有原文本。故無法運行。但代碼段齊全而且功能多樣,有多重數(shù)據(jù)視圖,可以參考。

資源截圖

代碼片段和文件信息

#?-*-?coding:?utf-8?-*-
“““
Created?on?Tue?Jun?19?15:38:44?2018

@author:?lenovo

使用TF-IDF矩陣對章節(jié)進行聚類

余弦相似:是指通過測量兩個向量的夾角的余弦值來度量它們之間的相似性。
當(dāng)兩個文本向量夾角余弦等于1時,這兩個文本完全重復(fù);
當(dāng)夾角的余弦值接近于1時,兩個文本相似;夾角的余弦越小,兩個文本越不相關(guān)。

k-means聚類:對于給定的樣本集A,按照樣本之間的距離大小,
將樣本集A劃分為K個簇A_1A_2?A_K。
讓這些簇內(nèi)的點盡量緊密的連在一起,而讓簇間的距離盡量的大。
K-Means算法是無監(jiān)督的聚類算法。
目的是使得每個點都屬于離它最近的均值(此即聚類中心)對應(yīng)的簇A_i中。
這里的聚類分析使用的是nltk庫。

下面的程序?qū)⑹褂胟-means聚類算法對數(shù)據(jù)進行聚類分析,然后得到每一章所屬類別,
并用直方圖展示每一類有多少個章節(jié)。

??MDS降維、PCA降維、HC聚類


#【1】加載數(shù)據(jù)包及數(shù)據(jù)整理
“““

import?numpy?as?np
import?pandas?as?pd
import?matplotlib.pyplot?as?plt
from?matplotlib.font_manager?import?FontProperties
import?jieba???#需要安裝:pip?install?jieba
from?pandas?import?read_csv
from?scipy.cluster.hierarchy?import?dendrogramward
from?scipy.spatial.distance?import?pdistsquareform
from?sklearn.feature_extraction.text?import?CountVectorizer?TfidfTransformer?TfidfVectorizer
from?sklearn.manifold?import?MDS
from?sklearn.decomposition?import?PCA
import?nltk
from?nltk.cluster.kmeans?import?KMeansClusterer

##?設(shè)置字體和?設(shè)置pandas顯示方式
font=FontProperties(fname?=?“C:/Windows/Fonts/Hiragino?Sans?GB?W3.otf“size=14)

pd.set_option(“display.max_rows“8)
pd.options.mode.chained_assignment?=?None??#?default=‘warn‘

##?讀取停用詞和需要的詞典
stopword?=?read_csv(r“C:\Users\yubg\OneDrive\2018book\syl-hlm\my_stop_words.txt“header=Nonenames?=?[“Stopwords“])
mydict?=?read_csv(r“C:\Users\yubg\OneDrive\2018book\syl-hlm\red_dictionary.txt“header=None?names=[“Dictionary“])

RedDream?=?read_csv(r“C:\Users\yubg\OneDrive\2018book\syl-hlm\red_UTF82.txt“header=Nonenames?=?[“Reddream“])


#刪除空白行和不需要的段,并重新設(shè)置索引
np.sum(pd.isnull(RedDream))??#查看數(shù)據(jù)是否有空白的行,如有則刪除
indexjuan?=?RedDream.Reddream.str.contains(“^第+.+卷“)?#?刪除卷數(shù)據(jù),使用正則表達式,包含相應(yīng)關(guān)鍵字的索引
RedDream?=?RedDream[~indexjuan].reset_index(drop=True)?##?刪除不需要的段,并重新設(shè)置索引


##?找出每一章節(jié)的頭部索引和尾部索引
##?每一章節(jié)的標題
indexhui?=?RedDream.Reddream.str.match(“^第+.+回“)
chapnames?=?RedDream.Reddream[indexhui].reset_index(drop=True)

##?處理章節(jié)名,按照空格分割字符串
chapnamesplit?=?chapnames.str.split(“?“).reset_index(drop=True)

##?建立保存數(shù)據(jù)的數(shù)據(jù)表
Red_df=pd.Dataframe(list(chapnamesplit)columns=[“Chapter““Leftname““Rightname“])
##?添加新的變量
Red_df[“Chapter2“]?=?np.arange(1121)
Red_df[“ChapName“]?=?Red_df.Leftname+““+Red_df.Rightname
##?每章的開始行(段)索引
Red_df[“StartCid“]?=?indexhui[indexhui?==?True].index
##?每章的結(jié)束行數(shù)
Red_df[“endCid“]?=?Red_df[“StartCid“][1:len(Red_df[“StartCid“])].reset_index(drop?=?True)?-?1
Red_df[“endCid“][[len(Red_df[“endCid“])-1]]?=?RedDream.index[-1]
##?每章的段落長度
Red_df[“Lengthchaps“]?=?Red_df.endCid?-?Red_df.StartCid
Red_df[“Artical“]?=?“Artical“

##?每章節(jié)的內(nèi)容
for?ii?in?Red_df.index:
????##?將內(nèi)容使用““連接
????chapid?=?np.arange(Red_df.StartCid[ii]+1int(Red_df.endCid[ii]))
????##?每章節(jié)的內(nèi)容替換掉空格
????Red_df[“Artical“][ii]?=?““.join(list(RedDream.Reddream[chapid])).replace(“\u3000“““)
##?計算某章有多少字
Red_df[“l(fā)enzi“]?=?Red_df.Artical.apply(len)


##?對紅樓夢全文進行分詞
##?數(shù)據(jù)表的行數(shù)
rowcol?=?Red_df.shape
##?預(yù)定義列表
Red_df[“cutword“]?

評論

共有 條評論

相關(guān)資源