6文本表示代码

基本概念

语料(Corpus):一组原始文本的集合,用于无监督地训练文本主题的隐层结构。语料中不需要人工标注的附加信息。在Gensim中,Corpus通常是一个可迭代的对象(比如列表)。每一次迭代返回一个可用于表达文本对象的稀疏向量。

向量(Vector):由一组文本特征构成的列表。是一段文本在Gensim中的内部表达。

稀疏向量(SparseVector):通常,我们可以略去向量中多余的0元素。此时,向量中的每一个元素是一个(key, value)的元组

模型(Model):是一个抽象的术语。定义了两个向量空间的变换(即从文本的一种向量表达变换为另一种向量表达)。

(1)词带模型

'''

import jieba

#词带模型

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

# 定义停用词、标点符号

punctuation = [",", "。", ":", ";", "?"]

# 定义语料

content = ["机器学习带动人工智能飞速的发展。",

          "深度学习带动人工智能飞速的发展。",

          "机器学习和深度学习带动人工智能飞速的发展。"

          ]

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 = ["我 来到 北京 清华大学", "他 来到 了 网易 杭研 大厦", "小明 硕士 毕业 与 中国 科学院", "我 爱 北京 天安门"]

# 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)共现矩阵

importnumpyasnpimportpandasaspdimportjieba.analyseimportos# 获取关键词def Get_file_keywords(dir):try:formated_data=[]# 每篇文章关键词的二维数组set_key_list=[]# 所有关键词的列表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))# 所有关键词的集合returnformated_data,set_wordexceptExceptionasreason:print('出现错误:',reason)# 初始化矩阵def build_matirx(set_word):edge=len(set_word)+1# 建立矩阵,矩阵的高度和宽度为关键词集合的长度+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# 计算各个关键词的共现次数def count_matrix(matrix, formated_data):forrowinrange(1,len(matrix)):# 遍历矩阵第一行,跳过下标为0的元素forcolinrange(1,len(matrix)):# 遍历矩阵第一列,跳过下标为0的元素# 实际上就是为了跳过matrix中下标为[0][0]的元素,因为[0][0]为空,不为关键词ifmatrix[0][row]==matrix[col][0]:# 如果取出的行关键词和取出的列关键词相同,则其对应的共现次数为0,即矩阵对角线为0matrix[col][row]=str(0)else:counter=0# 初始化计数器forechinformated_data:# 遍历格式化后的原始数据,让取出的行关键词和取出的列关键词进行组合,# 再放到每条原始数据中查询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

# 定义停用词、标点符号

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

sentences = [

    "长江是中国第一大河,干流全长6397公里(以沱沱河为源),一般称6300公里。流域总面积一百八十余万平方公里,年平均入海水量约九千六百余亿立方米。以干流长度和入海水量论,长江均居世界第三位。",

    "黄河,中国古代也称河,发源于中华人民共和国青海省巴颜喀拉山脉,流经青海、四川、甘肃、宁夏、内蒙古、陕西、山西、河南、山东9个省区,最后于山东省东营垦利县注入渤海。干流河道全长5464千米,仅次于长江,为中国第二长河。黄河还是世界第五长河。",

    "黄河,是中华民族的母亲河。作为中华文明的发祥地,维系炎黄子孙的血脉.是中华民族民族精神与民族情感的象征。",

    "黄河被称为中华文明的母亲河。公元前2000多年华夏族在黄河领域的中原地区形成、繁衍。",

    "在兰州的“黄河第一桥”内蒙古托克托县河口镇以上的黄河河段为黄河上游。",

    "黄河上游根据河道特性的不同,又可分为河源段、峡谷段和冲积平原三部分。 ",

    "黄河,是中华民族的母亲河。"

]

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')

'''

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,423评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,147评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,019评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,443评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,535评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,798评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,941评论 3 407
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,704评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,152评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,494评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,629评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,295评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,901评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,742评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,978评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,333评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,499评论 2 348