1. 程式人生 > >詞袋模型和TF-IDF

詞袋模型和TF-IDF

from sklearn.feature_extraction.text import CountVectorizer,TfidfTransformer
import os
import re
import jieba.posseg as pseg

# 載入停用詞表
'''stop_words_path = './stop_words/'
stopwords1 = [line.rstrip() for line in open(os.path.join(stop_words_path, '中文停用詞庫.txt'), 'r',encoding='utf-8')]
stopwords2 = [line.rstrip() for line in open(os.path.join(stop_words_path, '哈工大停用詞表.txt'), 'r',encoding='utf-8')]
stopwords3 = [line.rstrip() for line in
              open(os.path.join(stop_words_path, '四川大學機器智慧實驗室停用詞庫.txt'), 'r', encoding='utf-8')]
stopwords = stopwords1 + stopwords2 + stopwords3
'''
def proc_text(raw_line):
    """
        處理文字資料
        返回分詞結果
    """

    # 1. 使用正則表示式去除非中文字元
    filter_pattern = re.compile('[^\u4E00-\u9FD5]+')
    chinese_only = filter_pattern.sub('', raw_line)

    # 2. 結巴分詞+詞性標註
    word_list = pseg.cut(chinese_only)

    # 3. 去除停用詞,保留有意義的詞性
    # 動詞,形容詞,副詞
    used_flags = ['v', 'a', 'ad']
    meaninful_words = []
    for word, flag in word_list:
        if flag in used_flags:
            meaninful_words.append(word)
    return ' '.join(meaninful_words)
count_vectorizer = CountVectorizer()
transformer=TfidfTransformer()
print(count_vectorizer)
ch_text1 = ' 非常失望,劇本完全敷衍了事,主線劇情沒突破大家可以理解,可所有的人物都缺乏動機,正邪之間、婦聯內部都沒什麼火花。團結-分裂-團結的三段式雖然老套但其實也可以利用積攢下來的形象魅力搞出意思,但劇本寫得非常膚淺、平面。場面上排程混亂呆板,滿屏的鐵甲審美疲勞。只有笑點算得上差強人意。'
ch_text2 = ' 2015年度最失望作品。以為面面俱到,實則畫蛇添足;以為主題深刻,實則老調重彈;以為推陳出新,實則俗不可耐;以為場面很high,實則high勁不足。氣!上一集的趣味全無,這集的笑點明顯刻意到心虛。全片沒有任何片段給我有緊張激動的時候,太弱了,跟奧創一樣。'
ch_text3 = ' 《鐵人2》中勾引鋼鐵俠,《婦聯1》中勾引鷹眼,《美隊2》中勾引美國隊長,在《婦聯2》中終於……跟綠巨人表白了,黑寡婦用實際行動告訴了我們什麼叫忠貞不二;而且為了治療不孕不育連作戰武器都變成了兩支驗孕棒(堅決相信快銀沒有死,後面還得回來)'
ch_text4 = ' 雖然從頭打到尾,但是真的很無聊啊。'
ch_text5 = ' 劇情不如第一集好玩了,全靠密集笑點在提神。僧多粥少的直接後果就是每部寡姐都要換著隊友談戀愛,這特麼比打鬥還辛苦啊,真心求放過~~~(結尾彩蛋還以為是洛基呢,結果我呸!)'
ch_texts = [ch_text1, ch_text2, ch_text3, ch_text4, ch_text5]
corpus = [proc_text(ch_text) for ch_text in ch_texts]
print(corpus)
tfidf=transformer.fit_transform(count_vectorizer.fit_transform(corpus))
word = count_vectorizer.get_feature_names()
print(tfidf)
print(tfidf.toarray())
for i in range(len(tfidf.toarray())):#列印每類文字的tf-idf詞語權重,第一個for遍歷所有文字,第二個for便利某一類文字下的詞語權重
        print (u"-------這裡輸出第",i,u"類文字的詞語tf-idf權重------")
        for j in range(len(word)):
            print(word[j],tfidf.toarray()[i][j])
new_text = '劇情混亂,太失望了'
new_pro_text = proc_text(new_text)
print(new_pro_text)
print(transformer.fit_transform(count_vectorizer.transform([new_pro_text])).toarray())

相關推薦

模型TF-IDF

from sklearn.feature_extraction.text import CountVectorizer,TfidfTransformer import os import re import jieba.posseg as pseg # 載入停用詞表 '''

文字表示模型中涉及的知識點整理(模型TF-IDF,主題模型嵌入模型)

1.詞袋模型(Bags of Words) 詞袋模型是最基礎的文字表示模型,就是把每一篇文章看成一袋子單詞,並忽略每個此出現的順序。具體就是將整段文字以詞為單位分開,每篇文章可以表示成一個長向量,向量中的每一維代表一個單詞,而該維對應的權重代表這個詞在文章中的重要程度。

模型向量模型

在自然語言處理和文字分析的問題中,詞袋(Bag of Words, BOW)和詞向量(Word Embedding)是兩種最常用的模型。更準確地說,詞向量只能表徵單個詞,如果要表示文字,需要做一些額外的處理。下面就簡單聊一下兩種模型的應用。 所謂BOW,就是將文字/Query看作是一系列詞的集合

機器學習筆記筆記之三——文字型別處理-法、TF-IDF理解

  在面對文字型特徵時,大致可以分為兩種。    一是列舉型別,比如:男女,小學生初中生高中生大學生……這種型別下類別一般不會超過百種,那麼就可以使用 啞編碼(one-hot)來處理。   另一種就是真正意義上的文字,一條評論或是一篇文章。對於這樣的資

空間向量模型tf-idf

向量空間模型 向量空間模型是一個把文字檔案表示為識別符號(比如索引)向量的代數模型,它應用於資訊過濾、資訊檢索、索引以及相關排序。 1 定義 文件和查詢都用向量來表示: 每一維都對應於一個個別的片語。如果某個片語出現在了文件中,那它在向量中的值就非零。已經發展出了不少的

情感分析之模型TF-IDF演算法(三)

在這篇文章中,主要介紹的內容有:1、將單詞轉換為特徵向量2、TF-IDF計算單詞關聯度在之前的文章中,我們已經介紹過一些文字的預處理和分詞。這篇文章中,主要介紹如何將單詞等分類資料轉成為數值格式,以方便我們後面使用機器學習來訓練模型。一、將單詞轉換為特徵向量詞袋模型(bag-

【泡泡機器人原創專欄】DBoW3 視覺模型 視覺字典影象資料庫分析

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

轉 搜尋引擎的文件相關性計算檢索模型 BM25/TF IDF

     信任度網路模型此外還有基於統計的機器學習排序演算法。這裡主要介紹 布林模型,向量空間模型,概率模型,語言模型,機器學習排序演算法3. 布林模型布林模型:        是最簡單的資訊檢索模型,是基於集合理論和布林代數的一種簡單的檢索模型。基本思想:    文件和使用者查詢由其包含的單詞集合來表示,兩

機器學習基礎(二)——模型(SOW)模型(BOW)

(1)詞集模型:Set Of Words,單詞構成的集合,集合自然每個元素都只有一個,也即詞集中的每個單詞都只有一個 (2)詞袋模型:Bag Of Words,如果一個單詞在文件中出現不止一次,並統計

模型(BOW,bag of words)向量模型(Word Embedding)概念介紹

例句:Jane wants to go to Shenzhen.Bob  wants to go to Shanghai.一、詞袋模型    將所有詞語裝進一個袋子裡,不考慮其詞法和語序的問題,即每個詞語都是獨立的。例如上面2個例句,就可以構成一個詞袋,袋子裡包括Jane、w

文字情感分析(一):基於模型(VSMLSA)n-gram的文字表示

現在自然語言處理用深度學習做的比較多,我還沒試過用傳統的監督學習方法做分類器,比如SVM、Xgboost、隨機森林,來訓練模型。因此,用Kaggle上經典的電影評論情感分析題,來學習如何用傳統機器學習方法解決分類問題。 通過這個情感分析的題目,我會整理做特徵工程、引數調優和模型融合的方法,這一系列會有四篇文

機器學習---文本特征提取之模型(Machine Learning Text Feature Extraction Bag of Words)

from 就是 mat 關聯關系 關系 們的 維度 進行 class 假設有一段文本:"I have a cat, his name is Huzihu. Huzihu is really cute and friendly. We are good friends." 那

【火爐煉AI】機器學習051-視覺模型+極端隨機森林建立圖像分類器

函數 自然語言處理 3.6 權重 www. 語言 tar 一行 序列 【火爐煉AI】機器學習051-視覺詞袋模型+極端隨機森林建立圖像分類器 (本文所使用的Python庫和版本號: Python 3.6, Numpy 1.14, scikit-learn 0.19, mat

第十九節、基於傳統影象處理的目標檢測與識別(模型BOW+SVM附程式碼)

在上一節、我們已經介紹了使用HOG和SVM實現目標檢測和識別,這一節我們將介紹使用詞袋模型BOW和SVM實現目標檢測和識別。 一 詞袋介紹 詞袋模型(Bag-Of-Word)的概念最初不是針對計算機視覺的,但計算機視覺會使用該概念的升級。詞袋最早出現在神經語言程式學(NLP)和資訊檢索(IR)領域,該模型

NLP入門(一)模型及句子相似度

  本文作為筆者NLP入門系列文章第一篇,以後我們就要步入NLP時代。   本文將會介紹NLP中常見的詞袋模型(Bag of Words)以及如何利用詞袋模型來計算句子間的相似度(餘弦相似度,cosine similarity)。   首先,讓我們來看一下,什麼是詞袋模型。我們以下面兩個

Bow模型原理與例項(bag of words)

The bag-of-words model is a simplifying assumption used in natural language processing and information retrieval. In this model, a text (s

對文字抽取模型特徵

  from sklearn.feature_extraction.text import CountVectorizer   vec = CountVectorizer(     analyzer='word',    

迴環檢測中的模型(bag of words)

將會從以下四個方面進行展開 關於詞袋模型的基本理解 演算法簡介 開原始碼庫DBoW2庫的簡單介紹 關於DBoW的一些總結 關於詞袋模型的基本理解 BoW基本簡介 Bag of words模型最初被用在文字分類中,將文件表示成特徵向量。它的基本思想是假定對於一個文字,

Bag-of-words 模型基本原理

Bag-of-words詞袋模型最初被用在資訊檢索領域,對於一篇文件來說,假定不考慮文件內的詞的順序關係和語法,只考慮該文件是否出現過這個單詞。假設有5類主題,我們的任務是來了一篇文件,判斷它屬於哪個主題。在訓練集中,我們有若干篇文件,它們的主題型別是已知的。我們從中選出一些

BoW模型Bag of Words cpp實現(stable version 0.01)

致謝:基礎框架來源BoW,開發版本在此基礎上進行,已在Ubuntu、OS X上測試通過,Windows需要支援c++11的編譯器(VS2012及其以上)。 使用 程式碼下載地址:bag-of-words-stable-version,這個是穩定版,上層目錄裡的開發