6文本表示代碼

基本概念

語料(Corpus):一組原始文本的集合谆甜,用于無監(jiān)督地訓(xùn)練文本主題的隱層結(jié)構(gòu)。語料中不需要人工標(biāo)注的附加信息你辣。在Gensim中馅巷,Corpus通常是一個(gè)可迭代的對(duì)象(比如列表)立轧。每一次迭代返回一個(gè)可用于表達(dá)文本對(duì)象的稀疏向量格粪。

向量(Vector):由一組文本特征構(gòu)成的列表。是一段文本在Gensim中的內(nèi)部表達(dá)氛改。

稀疏向量(SparseVector):通常帐萎,我們可以略去向量中多余的0元素。此時(shí)胜卤,向量中的每一個(gè)元素是一個(gè)(key, value)的元組

模型(Model):是一個(gè)抽象的術(shù)語疆导。定義了兩個(gè)向量空間的變換(即從文本的一種向量表達(dá)變換為另一種向量表達(dá))。

(1)詞帶模型

'''

import jieba

#詞帶模型

#------------

# 定義停用詞葛躏、標(biāo)點(diǎn)符號(hào)

punctuation = ["澈段,", "。", ":", "舰攒;", "败富?"]

# 定義語料

content = ["機(jī)器學(xué)習(xí)帶動(dòng)人工智能飛速的發(fā)展。",

? ? ? ? ? "深度學(xué)習(xí)帶動(dòng)人工智能飛速的發(fā)展摩窃。",

? ? ? ? ? "機(jī)器學(xué)習(xí)和深度學(xué)習(xí)帶動(dòng)人工智能飛速的發(fā)展兽叮。"

? ? ? ? ? ]

segs_1 = [jieba.lcut(con) for con in content]

print(segs_1)

tokenized = []

for sentence in segs_1:

? ? words = []

? ? for word in sentence:

? ? ? ? #去掉停詞

? ? ? ? if word not in punctuation:

? ? ? ? ? ? words.append(word)

? ? tokenized.append(words)

print(tokenized)

# 求并集

bag_of_words = [x for item in segs_1 for x in item if x not in punctuation]

# 去重

bag_of_words = list(set(bag_of_words))

print(bag_of_words)

bag_of_word2vec = []

for sentence in tokenized:

? ? tokens = [1 if token in sentence else 0 for token in bag_of_words]

? ? bag_of_word2vec.append(tokens)

#詞帶向量

print(bag_of_word2vec)

'''

gensim 代碼

dictionary = corpora.Dictionary(tokenized)

print(dictionary)

print(dictionary.token2id)

corpus = [dictionary.doc2bow(sentence)for sentencein tokenized]

print(corpus)


(2)tf-idf 表示

import pickle

from sklearn.feature_extraction.textimport TfidfVectorizer, CountVectorizer

import json

def test(vectorizer, word_bag, test_data):

test_matrix = vectorizer.transform(test_data)

print(test_matrix.shape)

array = test_matrix.toarray()

for ridin range(len(array)):

print(test_data[rid], "\t", "".join(["(%s, %.5f)" % (word_bag[cid], array[rid][cid])for cidin range(len(word_bag))]))

def vectorize():

train_data = ["我 來到 北京 清華大學(xué)", "他 來到 了 網(wǎng)易 杭研 大廈", "小明 碩士 畢業(yè) 與 中國 科學(xué)院", "我 愛 北京 天安門"]

# vectorizer = CountVectorizer()

? ? vectorizer = TfidfVectorizer(norm="l1")

vectorizer.fit(train_data)

# train_matrix = vectorizer.fit_transform(train_data)

? ? word_bag = vectorizer.get_feature_names()

print("[word_bag] %s" %" ".join(word_bag))

print("[vocabulary] %s" % json.dumps(vectorizer.vocabulary_, ensure_ascii=False))

test(vectorizer, word_bag, test_data=train_data)

test(vectorizer, word_bag, test_data=["小明 來到 北京 天安門"])

file_name ="data/vectorizer.pkl"

? ? pickle.dump(vectorizer, open(file_name, "w"), protocol=1)

tfidf_vectorizer = pickle.load(open(file_name, "r"))

test(tfidf_vectorizer, word_bag, test_data=["小明 來到 北京 天安門"])

vectorize()



(3)N-Grams模型

bv = CountVectorizer(ngram_range = (2,2))

bv_matrix = bv.fit_transform(norm_corpus)

bv_matrix = bv_matrix.toarray()

vocab = bv.get_feature_names()

pd.DataFrame(bv_matrix, columns=vocab)


(4)共現(xiàn)矩陣

importnumpyasnpimportpandasaspdimportjieba.analyseimportos# 獲取關(guān)鍵詞def Get_file_keywords(dir):try:formated_data=[]# 每篇文章關(guān)鍵詞的二維數(shù)組set_key_list=[]# 所有關(guān)鍵詞的列表fo=open('dic.txt','r',encoding='UTF-8')keywords=fo.read()forhome,dirs,filesinos.walk(dir):forfilenameinfiles:fullname=os.path.join(home,filename)f=open(fullname,'r',encoding='UTF-8')sentence=f.read()words=" ".join(jieba.analyse.extract_tags(sentence=sentence,topK=30,withWeight=False,allowPOS=('n')))# TF-IDF分詞words=words.split(' ')formated_data.append(words)forwordinwords:ifwordinkeywords:set_key_list.append(word)else:words.remove(word)set_word=list(set(set_key_list))# 所有關(guān)鍵詞的集合returnformated_data,set_wordexceptExceptionasreason:print('出現(xiàn)錯(cuò)誤:',reason)# 初始化矩陣def build_matirx(set_word):edge=len(set_word)+1# 建立矩陣,矩陣的高度和寬度為關(guān)鍵詞集合的長度+1'''matrix = np.zeros((edge, edge), dtype=str)'''# 另一種初始化方法matrix=[[''forjinrange(edge)]foriinrange(edge)]# 初始化矩陣matrix[0][1:]=np.array(set_word)matrix=list(map(list,zip(*matrix)))matrix[0][1:]=np.array(set_word)# 賦值矩陣的第一行與第一列returnmatrix# 計(jì)算各個(gè)關(guān)鍵詞的共現(xiàn)次數(shù)def count_matrix(matrix, formated_data):forrowinrange(1,len(matrix)):# 遍歷矩陣第一行猾愿,跳過下標(biāo)為0的元素forcolinrange(1,len(matrix)):# 遍歷矩陣第一列鹦聪,跳過下標(biāo)為0的元素# 實(shí)際上就是為了跳過matrix中下標(biāo)為[0][0]的元素,因?yàn)閇0][0]為空蒂秘,不為關(guān)鍵詞ifmatrix[0][row]==matrix[col][0]:# 如果取出的行關(guān)鍵詞和取出的列關(guān)鍵詞相同泽本,則其對(duì)應(yīng)的共現(xiàn)次數(shù)為0,即矩陣對(duì)角線為0matrix[col][row]=str(0)else:counter=0# 初始化計(jì)數(shù)器forechinformated_data:# 遍歷格式化后的原始數(shù)據(jù)姻僧,讓取出的行關(guān)鍵詞和取出的列關(guān)鍵詞進(jìn)行組合观挎,# 再放到每條原始數(shù)據(jù)中查詢ifmatrix[0][row]inechandmatrix[col][0]inech:counter+=1else:continuematrix[col][row]=str(counter)returnmatrixdef main():formated_data,set_word=Get_file_keywords('D:\\untitled\\test')print(set_word)print(5244)print(formated_data)matrix=build_matirx(set_word)matrix=count_matrix(matrix,formated_data)data1=pd.DataFrame(matrix)data1.to_csv('data.csv',index=0,columns=None,encoding='utf_8_sig')main()


(2)word2vec

'''
from gensim.models import Word2Vec

import jieba

# 定義停用詞、標(biāo)點(diǎn)符號(hào)

punctuation = [",", "段化。", ":", ";", ".", "'", '"', "’", "?", "/", "-", "+", "&", "(", ")"]

sentences = [

? ? "長江是中國第一大河,干流全長6397公里(以沱沱河為源)造成,一般稱6300公里显熏。流域總面積一百八十余萬平方公里,年平均入海水量約九千六百余億立方米晒屎。以干流長度和入海水量論喘蟆,長江均居世界第三位缓升。",

? ? "黃河,中國古代也稱河蕴轨,發(fā)源于中華人民共和國青海省巴顏喀拉山脈港谊,流經(jīng)青海、四川橙弱、甘肅歧寺、寧夏、內(nèi)蒙古棘脐、陜西斜筐、山西、河南蛀缝、山東9個(gè)省區(qū)顷链,最后于山東省東營墾利縣注入渤海。干流河道全長5464千米屈梁,僅次于長江嗤练,為中國第二長河。黃河還是世界第五長河在讶。",

? ? "黃河,是中華民族的母親河煞抬。作為中華文明的發(fā)祥地,維系炎黃子孫的血脈.是中華民族民族精神與民族情感的象征。",

? ? "黃河被稱為中華文明的母親河真朗。公元前2000多年華夏族在黃河領(lǐng)域的中原地區(qū)形成此疹、繁衍。",

? ? "在蘭州的“黃河第一橋”內(nèi)蒙古托克托縣河口鎮(zhèn)以上的黃河河段為黃河上游遮婶。",

? ? "黃河上游根據(jù)河道特性的不同蝗碎,又可分為河源段、峽谷段和沖積平原三部分旗扑。 ",

? ? "黃河,是中華民族的母親河蹦骑。"

]

sentences = [jieba.lcut(sen) for sen in sentences]

tokenized = []

for sentence in sentences:

? ? words = []

? ? for word in sentence:

? ? ? ? if word not in punctuation:

? ? ? ? ? ? words.append(word)

? ? tokenized.append(words)

model = Word2Vec(tokenized,sg=1, size=100,? window=5,? min_count=2,? negative=1, sample=0.001, hs=1, workers=4)

model.save('model')

model = Word2Vec.load('model')

'''

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市臀防,隨后出現(xiàn)的幾起案子眠菇,更是在濱河造成了極大的恐慌,老刑警劉巖袱衷,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捎废,死亡現(xiàn)場離奇詭異,居然都是意外死亡致燥,警方通過查閱死者的電腦和手機(jī)登疗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人辐益,你說我怎么就攤上這事断傲。” “怎么了智政?”我有些...
    開封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵认罩,是天一觀的道長。 經(jīng)常有香客問我续捂,道長垦垂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任疾忍,我火速辦了婚禮乔外,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘一罩。我一直安慰自己杨幼,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開白布聂渊。 她就那樣靜靜地躺著差购,像睡著了一般。 火紅的嫁衣襯著肌膚如雪汉嗽。 梳的紋絲不亂的頭發(fā)上欲逃,一...
    開封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音饼暑,去河邊找鬼稳析。 笑死,一個(gè)胖子當(dāng)著我的面吹牛弓叛,可吹牛的內(nèi)容都是我干的彰居。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼撰筷,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼陈惰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起毕籽,我...
    開封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤抬闯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后关筒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體溶握,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年蒸播,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了睡榆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖肉微,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蜡塌,我是刑警寧澤碉纳,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站馏艾,受9級(jí)特大地震影響劳曹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜琅摩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一铁孵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧房资,春花似錦蜕劝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至搭独,卻和暖如春婴削,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背牙肝。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來泰國打工唉俗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人配椭。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓虫溜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親颂郎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吼渡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348