MATLAB小應用 中文 英文詞頻統計

2021-09-13 11:30:33 字數 2481 閱讀 7341

英文詞頻統計很簡單,只需借助split斷句,再統計即可。

完整matlab**:

function wordcount

%思路:中文詞頻統計涉及到對「詞語」的判斷,需要匯入詞典或編寫判斷規則,很複雜。

%最簡單的辦法是直接統計英文詞頻,並由空格直接劃分詞語。然後再翻譯即可得到中文詞頻。

clc;

clear;

report=fileread('reportfulltext.txt'); %讀入全文

report=regexprep(report,'\w',' '); %不是字元的,都轉換為空格。主要是去除標點符號

report=lower(report); %變成小寫

words=regexp(report,' ','split')'; %根據空格分隔為單詞cell

%至此每個單詞都拿出來了

rank = tabulate(words); %rank是三列向量,包括名稱,出現次數和百分比

ans=sortrows(rank,-2); %只根據第二列進行排序 -2表示降序

xlswrite('results',ans);%輸出為excel檔案

end

中文詞頻統計相對複雜一些。關鍵在於:

function wordcountchinese

clc;

clear;

report=fileread('reportchinese.txt'); %讀入中文報告,事先已放在工作區

%% dictionary.mat是乙個我事先準備好的列向量

load dictionary.mat;

maxlen=max(cellfun(@length,dict)); %最大詞長,結果是10

%% 按標點初步分詞

cut='[\,\。\、\;\:\!\?\「\」\『\』\(\)\《\》\\……\·]'; %標點符號的正規表示式

f=regexp(report,cut,'split')'; %轉置,變成3131*1的列向量

% 此時,待分析的句集f和詞典都已就緒

%% 演算法原理

% 首先判斷是否為有效句:句長是否大於0。小於0的不操作,相當於跳過

% 若是有效句,計算句長和最大詞長maxlen的最小值maxlen。待選字串長度不能大於該長度

% 從maxlen長度開始,取出待選字串

% 匹配,成功就輸出,標記。若成功,平移maxlen個單位;若不成功,平移1個單位

% 選出下乙個待選字串再匹配,重複操作,直到移動到句長以外

% 如果上乙個長度匹配成功,那麼就不用再匹配了,該句跳過;如果meet==0,重複上一步操作

% 長度maxlen減到1,也要匹配,因為詞庫中有乙個字的詞;maxlen==0是終止訊號。

%% 最大匹配法進一步分詞

sentence=; %是粗分後f中的每乙個元素

word=;

words={};

k=1;

for i=1:length(f) %遍歷f

sentence=cell2mat(f(i,1)); %把cell轉換成字串

sentence_len=length(sentence); %求出句長

meet=0; %更新初始狀態

if(sentence_len>0) %有效句

maxlen=min(maxlen,sentence_len);

while(maxlen>0)

start=1;

while((start+maxlen)<=sentence_len) %索引不能移動到句子外面

word=sentence(start:start+maxlen);

if(ismember(word,dict))%如果匹配成功

meet=1;

words(k)=cellstr(word);

k=k+1;

start=start+maxlen; %移動maxlen個單位再匹配

else

start=start+1; %移動乙個單位再匹配

endend

%已經移動到句子外面了

if(meet==0)

maxlen=maxlen-1;

else

break;

endend

end%無效句,句長為0,不處理,直接跳過

end%% 排序處理

rank = tabulate(words); %rank是三列向量,包括名稱,出現次數和百分比

ans=sortrows(rank,-2); %只根據第二列進行排序 -2表示降序

xlswrite('resultschinese',ans(1:50,1:3));%輸出為excel檔案 由於詞語將近1777個,因此只輸出前100個

end

十九大中文版報告統計結果:

英文詞頻統計

詞頻統計預處理 將所有,等分隔符全部替換為空格 將所有大寫轉換為小寫 生成單詞列表 生成詞頻統計 排序排除語法型詞彙,代詞 冠詞 連詞 輸出詞頻最大top10 word lately,i ve been,i ve been losing sleep dreaming about the things...

Python 《Hamlet》哈姆雷特英文詞頻統計

關鍵問題 1 詞語 鍵 2 相同詞語的累加 值 討論 定義什麼資料型別 字典型別 問題描述 i 檔案的輸入 p 採用字典型別的結構統計詞語出現的頻率 o 每個單詞及單詞出現的次數 要求輸出前10個 ipo細化 第一步 1 txt檔案讀取 txt.read filename r 2 檔案大小寫的轉換 ...

中文詞頻統計

2.從檔案讀取待分析文字。3.安裝並使用jieba進行中文分詞。4.更新詞庫,加入所分析物件的專業詞彙。5.生成詞頻統計 排序 排除語法型詞彙,代詞 冠詞 連詞等停用詞 輸出詞頻最大top20,把結果存放到檔案裡 源 import jieba fo open r d 三體.txt encoding ...