中英文词频统计(MATLAB)

1. 英文词频统计

英文词频统计很简单,只需借助split断句,再统计即可。

完整MATLAB代码:

function wordcount
%思路:中文词频统计涉及到对“词语”的判断,需要导入词典或编写判断规则,很复杂。
%最简单的办法是直接统计英文词频,并由空格直接划分词语。然后再翻译即可得到中文词频。 %从官方网站上下载的pdf,转成reportfulltext.txt,存到workspace进行操作 全文共25003个字符。 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

2. 中文词频统计

中文词频统计相对复杂一些。关键在于:

  • 使用合适的语料库

  • 从长到短,匹配词语。比如句中出现了“计算机”三字词,我们应该将三个字视为一个词,而不能把“计算”当做一个词。

function wordcountchinese
clc;
clear;
report=fileread('reportchinese.txt'); %读入中文报告,事先已放在工作区 %% dictionary.mat是一个我事先准备好的列向量
%其中dict是14636*1的字典列向量,从网上下载的官方语料库转换得到的
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; %移动一个单位再匹配
end
end
%已经移动到句子外面了
if(meet==0)
maxlen=maxlen-1;
else
break;
end
end
end
%无效句,句长为0,不处理,直接跳过
end %% 排序处理
rank = tabulate(words); %rank是三列向量,包括名称,出现次数和百分比
ANS=sortrows(rank,-2); %只根据第二列进行排序 -2表示降序 xlswrite('resultschinese',ANS(1:50,1:3));%输出为excel文件 由于词语将近1777个,因此只输出前100个
end

十九大中文版报告统计结果:

Programming | 中/ 英文词频统计(MATLAB实现)的更多相关文章

  1. 1.字符串操作:& 2.英文词频统计预处理

    1.字符串操作: 解析身份证号:生日.性别.出生地等. ID = input('请输入十八位身份证号码: ') if len(ID) == 18: print("你的身份证号码是 " ...

  2. 组合数据类型,英文词频统计 python

    练习: 总结列表,元组,字典,集合的联系与区别.列表,元组,字典,集合的遍历. 区别: 一.列表:列表给大家的印象是索引,有了索引就是有序,想要存储有序的项目,用列表是再好不过的选择了.在python ...

  3. python字符串操作、文件操作,英文词频统计预处理

    1.字符串操作: 解析身份证号:生日.性别.出生地等. 凯撒密码编码与解码 网址观察与批量生成 解析身份证号:生日.性别.出生地等 def function3(): print('请输入身份证号') ...

  4. Hadoop的改进实验(中文分词词频统计及英文词频统计)(4/4)

    声明: 1)本文由我bitpeach原创撰写,转载时请注明出处,侵权必究. 2)本小实验工作环境为Windows系统下的百度云(联网),和Ubuntu系统的hadoop1-2-1(自己提前配好).如不 ...

  5. Python——字符串、文件操作,英文词频统计预处理

    一.字符串操作: 解析身份证号:生日.性别.出生地等. 凯撒密码编码与解码 网址观察与批量生成 2.凯撒密码编码与解码 凯撒加密法的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左 ...

  6. python复合数据类型以及英文词频统计

    这个作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2753. 1.列表,元组,字典,集合分别如何增删改查及遍历. 列 ...

  7. 英文词频统计的java实现方法

    需求概要 1.读取文件,文件内包可含英文字符,及常见标点,空格级换行符. 2.统计英文单词在本文件的出现次数 3.将统计结果排序 4.显示排序结果 分析 1.读取文件可使用BufferedReader ...

  8. python:Hamlet英文词频统计

    #CalHamletV1.py def getText(): #定义函数读取文件 txt = open("hamlet.txt","r").read() txt ...

  9. 词频统计 in office

    ROSTCM6 1. http://www.writewords.org.uk/word_count.asp 2. http://darylkinsman.ca/tools/wordfreq.shtm ...

随机推荐

  1. 说下spring生命周期

    面试官:说下spring生命周期 程序员:不会 那你先回去等消息吧     Bean实现了BeanNameAware,Spring会将Bean的ID透传给setBeanName java.后端开发.程 ...

  2. git 第一次提交代码

    git init git add README.md git commit -m "first commit" git remote add origin https://git. ...

  3. (2) linux文件系统简介

    bin -- 存放可执行的命令程序 sbin -- 系统管理相关的命令程序 boot -- 存放启动相关的内容 dev -- 存放设备和硬件 etc -- 存放程序,系统的配置文件 home -- 存 ...

  4. kaggle首秀之intel癌症预测(续篇)

    之前写了这篇文章.现在把他搬到知乎live上了.书非借不能读也,因此搞了点小费用,如果你觉得贵,加我微信我给你发红包返回给你. 最近的空余时间拿去搞kaggle了, 好久没更新文章了.今天写写kagg ...

  5. python 爬虫启航

    1. 使用excel(简单使用) 数据- 自网站-导入 2.you-get python爬虫入门 1.环境配置 python,request,lxml 2.原理 爬虫的框架如下: 1.挑选种子URL: ...

  6. 安装和激活Office 2019

    有条件请支持正版!相比费尽力气找一个可能不太安全的激活工具,直接买随时随地更新的Office 365确实是最好的办法.暂时没有经济实力的,可以看看这篇文章.下载OTP工具 首先到Office Tool ...

  7. 配置远程主机http服务器 打包资源

    <1> 搭建nginx  验证nginx是否启动成功 https://blog.csdn.net/wdsdsdsds/article/details/51179780 https://ww ...

  8. numpy.asmatrix的用法

    学习的过程中,遇到了asmatrix的用法,看了一下官方文档,明白了. numpy.asmatrix numpy.asmatrix(data, dtype=None)[source] Interpre ...

  9. Redis在linux上的配置

    一.安装gcc  1.Redis在linux上的安装首先必须先安装gcc,这个是用来编译redis的源文件的.首先需要先切换的到root用户 2.然后开始安装gcc: yum install gcc- ...

  10. 100-days: fourteen

    Title: Face mask craze(面膜热) creates Korean(韩国) (a) billionaire with Goldman(高盛集团) backing face mask ...