日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

统计csv词频_基于给定词语列表统计词频

發布時間:2023/12/15 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 统计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词频_基于给定词语列表统计词频的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。