統計csv詞頻 基於給定詞語列表統計詞頻

2021-10-16 20:30:57 字數 3540 閱讀 4514

基於給定詞語列表並統計詞頻,統計結果輸出到csv中。有兩種實現方法

思路:第一步,整理好待查詢query_words

第二步,新建乙個csv檔案,並且將query_words以列名寫入csv中

第三步,對文字分詞,得到詞語列表wordlist

第四步,對每乙個query_words中的詞語計算其在wordlist中的個數

第五步,寫入csv中。

import jieba

import csv

#待統計詞頻的文字資料

texts = ['北京上海廣州深圳都是一線城市,而成都是西部中心城市。青島位於山東,是山東的經濟中心。',

'在上海,計程車司機都會問你,你是幹哪行的,什麼工作,多掙錢?',

'兩個城市都是人口超大城市,但去年北京人口下降了2.2萬人,有人分析可能和疏散低端產業有關。',

'分析產業結構,就能發現兩個城市之間的差異。但乙個地方的財政收入不僅包括一般公共預算收入,']

#統計這些詞在texts中每條文本中的詞頻

query_words = ['工作', '發展', '經濟', '工作', '消費', '收入', '存款', '人口']

#新建csv檔案

csvf = open('詞頻統計.csv', 'w', encoding='gbk', newline = '')

writer = csv.writer(csvf)

#列名寫入csv中

writer.writerow(('工作', '發展', '經濟', '工作','消費', '收入', '存款', '人口'))

for text in texts:

#分詞wordlist = jieba.lcut(text)

line =

for queryword in query_words:

#line收集詞頻結果

#將query_words詞語列表中的詞頻寫入csv中

writer.writerow(tuple(line))

#關閉csvf

csvf.close()

我們檢視執行結果

import pandas as pd

df = pd.read_csv('詞頻統計.csv', encoding='gbk')

df.head()

**方法

二、結合sklearn**

思路:* 然後,csv檔案的列名為特徵詞語名。

* 其次,將文字轉化為sklearn能計算的格式(詞語之間以空格隔開)。

* 次之,將特徵詞空間應用到轉化格式的文字上,得到詞頻向量。

* 最後,寫入csv檔案,儲存。

**2.1 學習特徵詞空間**

from sklearn.feature_extraction.text import countvectorizer

import jieba

import csv

query_words = ['工作', '發展', '經濟', '工作', '消費', '收入', '存款', '人口']

counter = countvectorizer()

counter.fit(query_words)

print(counter.get_feature_names())

執行結果

['人口', '發展', '存款', '工作', '收入', '消費', '經濟']

2.2 以特徵空間為csv檔案的列名

headers = counter.get_feature_names()

#新建csv

csvf = open('詞頻統計.csv', 'w', encoding='gbk', newline = '')

writer = csv.writer(csvf)

#檢視特徵空間的特徵詞

headers

執行結果

['人口', '發展', '存款', '工作', '收入', '消費', '經濟']

**2.3 整理為sklearn方便理解的形式(以空格間隔詞語)**

text = '北京上海廣州深圳都是一線城市,而成都是西部中心城市。青島位於山東,是山東的經濟中心。'

text = ' '.join(jieba.lcut(text))

text

執行結果

'北京 上海 廣州 深圳 都 是 一線 城市 , 而 成都 是 西部 中心 城市 。 青島 位於 山東 , 是 山東 的 經濟 中心 。'

**2.4 計算所有待查詞的詞頻**

這裡我們使用transform方法,得到文字資料編碼後的特徵向量

注意transform方法輸入的是可迭代物件,我們將text放入到空列表中

counter.transform([text]).toarray()

執行結果

array([[0, 0, 0, 0, 0, 0, 1]])

方法二完整**

import jieba

import csv

from sklearn.feature_extraction.text import countvectorizer

#待統計詞頻的文字資料

texts = ['北京上海廣州深圳都是一線城市,而成都是西部中心城市。青島位於山東,是山東的經濟中心。',

'在上海,計程車司機都會問你,你是幹哪行的,什麼工作,多掙錢?',

'兩個城市都是人口超大城市,但去年北京人口下降了2.2萬人,有人分析可能和疏散低端產業有關。',

'分析產業結構,就能發現兩個城市之間的差異。但乙個地方的財政收入不僅包括一般公共預算收入,']

query_words = ['工作', '發展', '經濟', '工作', '消費', '收入', '存款', '人口']

#學習query_words資料,構建特徵空間

counter = countvectorizer()

counter.fit(query_words)

#特徵名作為csv檔案的列名

headers = counter.get_feature_names()

#新建csv

csvf = open('sklearn詞頻統計.csv', 'w', encoding='gbk', newline = '')

writer = csv.writer(csvf)

writer.writerow(tuple(headers))

#計算每個文字的待查詞詞頻

for text in texts:

#詞語之間以空格間隔,方便sklearn理解

text = [' '.join(jieba.lcut(text))]

line = counter.transform(text).toarray()[0]

writer.writerow(tuple(line))

csvf.close()

檢視csv

import pandas as pd

df = pd.read_csv('sklearn詞頻統計.csv', encoding='gbk')

df.head()

總結方法二雖然麻煩,但是這也算是複習sklearn的乙個很好的機會。

統計csv詞頻 基於給定詞語列表統計詞頻

基於給定詞語列表並統計詞頻,統計結果輸出到csv中。有兩種實現方法 思路 第一步,整理好待查詢query words 第二步,新建乙個csv檔案,並且將query words以列名寫入csv中 第三步,對文字分詞,得到詞語列表wordlist 第四步,對每乙個query words中的詞語計算其在w...

統計csv詞頻 統計詞頻並視覺化

最近參加乙個nlp的競賽,賽方提供了10萬條資料。由於是脫敏資料,所以作nlp之前需要先作word2vec,這時就需要將標點符號和無意義的詞 比如 的 去掉,我們採用的方法就是去掉高頻詞,所以首先要找到高頻詞。如何找到高頻詞呢,這裡當然可以使用dict了,但是有沒有更高階一點的方法呢。當然有了,我們...

詞頻統計和詞云繪製

import os os.chdir r d text text1 for root,dirs,files in os.walk r d 綠色金融文字庫 for i in files path os.path.join root,i with open path,r encoding gb18030...