统计csv词频_基于给定词语列表统计词频
基于給定詞語列表并統計詞頻,統計結果輸出到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收集詞頻結果
line.append(wordlist.count(queryword))
#將query_words詞語列表中的詞頻寫入csv中
writer.writerow(tuple(line))
#關閉csvf
csvf.close()
我們查看運行結果
import pandas as pd
df = pd.read_csv('詞頻統計.csv', encoding='gbk')
df.head()
方法二、結合sklearn
思路:
首先,讓Countervector學會給定的關鍵詞列表,從中學會特征詞空間。
然后,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词频_基于给定词语列表统计词频的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 噪声产生原因_想要解决音响噪声,得先看这
- 下一篇: python列表中数据类型可以不同吗_P