基於給定詞語列表並統計詞頻,統計結果輸出到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...