统计csv词频_分词词频统计
網上隨便找段文字,就以Power BI官網上這段文字為例好了:
想要統計其中的詞頻,實現如下圖的效果:
解法1:使用輸入法詞庫
其中的難點無疑在分詞了,中文不像英文可以按空格拆開分詞,僅僅單靠Power Query中的功能遇到這種問題好像沒法搞,因為它不知道你要按什么規則來拆,不知道哪幾個字連起來算一個詞。
那我們就得想辦法告訴它規則,于是想到了輸入法。輸入法之所以如此貼心,就是因為有著豐富的詞庫,我們可以去輸入法的設置里找出詞庫導出來。
我已經把我的輸入法詞庫導出來并上傳到網站服務器上,所以如果你找不到詞庫在哪就直接用我的吧。
let
源 = Excel.CurrentWorkbook(){[Name="源數據"]}[Content],
詞庫 = Table.FromColumns({List.Buffer(List.Select(Csv.Document(Web.Contents("https://pqfans.com/pq/pinyin/py.txt"),[Delimiter=" "])[Column2],each Text.Length(_)<>1))},{"詞"}),
詞頻 = Table.AddColumn(詞庫, "詞頻", each List.Count(Text.PositionOf(源[文本]{0},[詞],2))),
排序 = Table.Buffer(Table.Sort(詞頻,{{"詞頻", 1}})),
篩選 = Table.SelectRows(排序, each ([詞頻] <> 0))
in
篩選
解法2:使用R語言
以上是笨方法,但是如果在Power BI Desktop中,我們可以使用R.Execute運行R腳本,用jieba包進行分詞。
那么首先你得安裝R Open,并安裝jieba。安裝非常簡單,首先去官網下載并裝好R Open,然后打開并輸入如下命令:install.packages("jiebaR")
等待自動安裝完成即可。
先看下在R中如何來分詞:
library("jiebaR")
wk
words
data.frame(words)
那么在Power BI中也類似,只不過我們想引用PBI內部的文本進行分詞,先上代碼吧:
let
源="Power BI 是一套商業分析工具,用于在組織中提供見解。可連接數百個數據源、簡化數據準備并提供即席分析。生成美觀的報表并進行發布,供組織在 Web 和移動設備上使用。每個人都可創建個性化儀表板,獲取針對其業務的全方位獨特見解。在企業內實現擴展,內置管理和安全性。",
加引號 = """"&Text.Remove(源,"""")&"""",
R腳本 = R.Execute("
library(""jiebaR"")
wk
words
df
"),
分詞 = R腳本[Value]{0}
in
分詞
為簡化過程我直接把文本放在源中,實際上這個文本可以是從本地文件導入,也可以是從網上抓取的等等。
R腳本是以文本形式放在R.Execute函數中,所以我們可以對文本進行拼接,把源中的文本放到R腳本中。
盡管源中的文本已經是text,但是引用的時候還是要在文本的開頭和結尾加上一對引號,所以我單獨用了一個加引號的步驟便于大家理解。此處前后各4個引號,首尾兩個代表引用文本,中間兩個是引號的轉義,代表一個引號。另外為了避免文本中本身包含引號而引發的錯誤,再做一個把引號移除的操作,反正我們又不要統計引號。
將數據框賦值給df變量,返回一個兩列的table,分別為變量名及數據框內的數據,最后一步深化出[Value]中數據框的數據即可。
這是分詞,最關鍵的一步做完了,剩下的詞頻統計直接分組就好了。
解法3:調用api
使用了一個名為SCWS的分詞api,封裝為自定義函數,調用即可。
let
fenci=(word)=>
let
url="http://www.xunsearch.com/scws/api.php",
headers=[#"Content-Type"="application/x-www-form-urlencoded"],
content="respond=json&ignore=yes&data="&word,
request=Table.FromRecords(Json.Document(Web.Contents(url,[Headers=headers,Content=Text.ToBinary(content)]))[words])
in
request,
result=fenci("Power BI 是一套商業分析工具,用于在組織中提供見解。可連接數百個數據源、簡化數據準備并提供即席分析。生成美觀的報表并進行發布,供組織在 Web 和移動設備上使用。每個人都可創建個性化儀表板,獲取針對其業務的全方位獨特見解。在企業內實現擴展,內置管理和安全性。")
in
result
附件
詞頻統計 (135 kB)
總結
以上是生活随笔為你收集整理的统计csv词频_分词词频统计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java二维数组排序先行后列,数组知识点
- 下一篇: 多媒体分析与理解_如何设计一个出色的数字