1. 程式人生 > >自然語言處理3---TFIDF

自然語言處理3---TFIDF

# -*- coding:utf-8 -*-

'''
將tfidf寫入txt檔案
'''
import string
import sys
import codecs

reload(sys)
import os
from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer, TfidfTransformer

if __name__ == '__main__':

    # =====================1、構造樣本的目錄檔名稱======================

    # 根目錄檔案
root_file = '.\Reduced_internet_preprocess' # 目錄列表 text_dir_list = [] # 遍歷根目錄檔案 for root, dir, files in os.walk(root_file): # 構造檔案目錄 for f in files: text_init_dir = root + '\\' + f text_dir_list.append(text_init_dir) # =================== 2、從檔案匯入停用詞表=======================
stpwrdpath = "E:\ly\stop_words.txt" # 停用詞檔案路徑 stpwrd_dic = open(stpwrdpath, 'rb') stpwrd_content = stpwrd_dic.read() # 將停用詞表轉換為list stpwrdlst = stpwrd_content.splitlines() stpwrd_dic.close() # ====================3、遍歷讀取樣本檔案內容,製作語料庫========================= # 儲存文件的語料庫 corpus = [] # 把內容寫入語料庫
for f in text_dir_list: # 開啟文字檔案 file_source = open(f, 'r+') content = file_source.read() file_source.close() corpus.append(content) # =====================4、對文件做詞向量化,計算每個詞語的tfidf值====================== vectorizer = CountVectorizer(stop_words=stpwrdlst) transformer = TfidfTransformer() tfidf = transformer.fit_transform(vectorizer.fit_transform(corpus)) #vector = TfidfVectorizer(stop_words=stpwrdlst) # 生成向量物件,input引數是檔案 #tfidf = vector.fit_transform(corpus) word = vectorizer.get_feature_names() # 所有文字的關鍵字 weight = tfidf.toarray() # 對應的tfidf矩陣 print u'詞向量數:', len(word) print u'詞向量數:', len(weight[0]) print u'詞向量' print word print u'樣本數:', len(weight) print u'權重矩陣' print weight # =======================5、把每個文件中詞語的tfidf值寫入檔案中儲存===================== # 建立每個樣本的tfidf值結果目錄 sFilePath = '.\Tfidf_file' if not os.path.exists(sFilePath): os.mkdir(sFilePath) # 這裡將每份文件詞語的TF-IDF寫入tfidffile資料夾中儲存 for i in range(len(weight)): print u"--------Writing all the tf-idf in the", i, u" file into ", sFilePath + '\\' + string.zfill(i, 5) + '.dat', "--------" f = codecs.open(sFilePath + '\\' + string.zfill(i, 5) + '.dat', 'w', 'utf-8') # 寫入詞向量行 for j in range(len(word)): f.write(word[j] + " ") f.write('\n') # 寫入tfidf for j in range(len(word)): f.write(str(weight[i][j]) + ' ') f.close() print '\n' # =======================6、合成一個文件==================================== # 建立總結果目錄 resultFilePath = '.\Result' if not os.path.exists(resultFilePath): os.mkdir(resultFilePath) # 把每個樣本文件的tfidf值寫入一個文件中 f = codecs.open(resultFilePath + '\\' + 'alldata' + '.dat', 'w', 'utf-8') #for j in range(len(word)): #f.write(word[j] + " ") #f.write('\n') for i in range(len(weight)): print u"--------Writing all the tf-idf in the", i, u" file into ", resultFilePath + '\\' + 'weight_alldata' + '.dat', "--------" for j in range(len(word)): f.write(str(weight[i][j]) + ' ') f.write('\n') f.close()

相關推薦

自然語言處理3---TFIDF

# -*- coding:utf-8 -*- ''' 將tfidf寫入txt檔案 ''' import string import sys import codecs reload(sys) import os from sklearn.feature_ex

深度學習與自然語言處理(3)_斯坦福cs224d Lecture 3

原文作者:Rohit Mundra, Richard Socher 原文翻譯:@熊傑([email protected]) && @王昱森([email protected]) && @範築軍老師( [

自然語言處理3 -- 詞性標註

系列文章,請多關注 Tensorflow原始碼解析1 – 核心架構和原始碼結構 帶你深入AI(1) - 深度學習模型訓練痛點及解決方法 自然語言處理1 – 分詞 自然語言處理2 – jieba分詞用法及原理 自然語言處理3 – 詞性標註 自然語言處理4 – 句法分析 自然語言處理5 –

python自然語言處理——3.1 從網絡和硬盤訪問文本

自然語言處理 num align otto aci soup tro nltk find 微信公眾號:數據運營人本系列為博主的讀書學習筆記,如需轉載請註明出處。 第三章 加工原料文本 3.1 從網絡和硬盤訪問文本電子書處理的HTML處理RSS訂閱讀取本地文件 3.

自然語言處理 - 如何通俗地理解TFIDF

log 忘記 right 們的 提取 取出 tf-idf isp 總數 本博客屬個人學習筆記,如有疏漏,歡迎在評論留言指出~轉載請註明。 在自然語言處理中,TFIDF常常被人提及。很多材料都提及TFIDF中的“普遍重要性”,但很

python自然語言處理-讀書筆記3

# -*- coding:utf-8 -*- # __author__ = 'lipzhang' import nltk from nltk.corpus import gutenberg #古騰堡語料庫 from nltk.corpus import webtext #w網路聊天文字 from

自然語言處理3)——Word2Vec理論

word2vec是一個將單詞轉換成向量形式的工具。可以把對文字內容的處理簡化為向量空間中的向量運算,計算出向量空間上的相似度,來表示文字語義上的相似度。 一、理論概述 (主要來源於http://licstar.net/archives/328這篇部落格) 1.詞向量是什麼 自然語言理

第八章8.3自然語言處理-庫的基本運用

#!/usr/bin/env python # _*_ coding:utf-8 _*_ #下載nltk的data # import nltk # nltk.download() #建立text物件

Python自然語言處理實戰(3):中文分詞技術

3.1、中文分詞簡介       在英文中,單詞本身就是“詞”的表達,一篇英文文章就是“單詞”加分隔符(空格)來表示的,而在漢語中,詞以字為基本單位的,但是一篇文章的語義表達卻仍然是以詞來劃分的。       自中文自動分詞被提出以來,歷經將近30年的探索,提出了很多方法,可

第六章(1.3自然語言處理實戰——使用tf-idf演算法實現簡單的文字聚類

一、原理 使用jieba切詞 用td-idf計算文字的詞頻和逆文件詞頻 排序選出最重要的2個或3個詞作為這段文字的id 具有相同id的文字被歸為一類 二、使用python實現簡單的文字聚類,其中使用了tf-idf演算法,jieba分詞,把相似的文字聚合在

自然語言處理期末複習(3)-(5)模型與句法分析

第三部分 隱馬爾科夫模型與詞類標註1.定義:如果給定一個觀察序列(不同顏色的小球序列),不能直接確定狀態轉換序列(罈子的序列),因為狀態轉移過程被隱藏起來了。所以這類隨機過程被稱為隱馬爾科夫過程。2.詞類標註的方法:(1)基於規則的詞類標註:查字典,給詞標記所有可能,逐步刪除

自然語言處理學習3:中文分句re.split(),jieba分詞和詞頻統計FreqDist

1. 使用re.split() 分句,re.split(delimiter, text) import jieba import re # 輸入一個段落,分成句子,可使用split函式來實現 paragraph = "生活對我們任何人來說都不容易!我們必須努力,最重要的是

HanLP《自然語言處理入門》筆記--3.二元語法與中文分詞

筆記轉載於GitHub專案:https://github.com/NLP-LOVE/Introduction-NLP 3. 二元語法與中文分詞 上一章中我們實現了塊兒不準的詞典分詞,詞典分詞無法消歧。給定兩種分詞結果“商品 和服 務”以及“商品 和 服務”,詞典分詞不知道哪種更加合理。 我們人類確知道第二種更

自然語言處理中的Attention Model:是什麽及為什麽

機器 逆序 mar 回來 是什麽 all 意義 及其 creation /* 版權聲明:可以任意轉載,轉載時請標明文章原始出處和作者信息 .*/ author: 張俊

gensim自然語言處理

encode content for 服務 讀取 htm all mat 自然語言 最近在做詞語的相似度做比較,就選用了gensim 首先要安裝gensim庫,此處省略,參看官網http://radimrehurek.com/gensim/install.html 在網上下

NLP系列(1)_從破譯外星人文字淺談自然語言處理的基礎

應用 展現 發現 func 文本 詞幹 pos 中文分詞 漢語 作者:龍心塵 &&寒小陽 時間:2016年1月。 出處: http://blog.csdn.net/longxinchen_ml/article/details/505

文本情感分析的基礎在於自然語言處理、情感詞典、機器學習方法等內容。以下是我總結的一些資源。

建議 中心 這場 分詞 自然語言處理 目前 能力開放 計算 推薦算法 文本情感分析的基礎在於自然語言處理、情感詞典、機器學習方法等內容。以下是我總結的一些資源。 詞典資源:SentiWordNet《知網》中文版中文情感極性詞典 NTUSD情感詞匯本體下載 自然語言處理

自然語言處理哪家強?

的語音 科學 點對點 亞馬遜 消息 合作 夢幻 項目 找到 自然語言處理哪家強? 摘要:語音交互事關未來,這點從大公司收購、投資、合作不斷,就可見一斑。如蘋果收購Siri、Novauris、Google收購多項語音識別技術專利、Facebook收購Wit.ai等、Ama

2017MySQL中文索引解決辦法 自然語言處理(N-gram parser)

ray spa 全文索引 rom alt lte int 中文索引 ble   問題:長期以來MYSQL搜索對於中文來說不太理想,InnoDB引擎對FULLTEXT索引的支持是MySQL5.6新引入的特性,但是用“初級”一詞在“我是一名初

(zhuan) 自然語言處理中的Attention Model:是什麽及為什麽

機器 pri 概念 max page acf 集中 use tps 自然語言處理中的Attention Model:是什麽及為什麽 2017-07-13 張俊林 待字閨中 要是關註深度學習在自然語言處理方面的研究進展,我相信你一定聽說過Attention Model(