自然语言处理 matlab,MATLAB中自然语言处理的性能问题

这篇博客讨论了在MATLAB中进行自然语言处理时遇到的性能问题,特别是使用结构和containers.Map处理字典数据结构的速度较慢。作者考虑转向Python或编译语言如Java以提高效率,并分享了简单的性能测试结果,显示Java的HashMap实现明显快于MATLAB的containers.Map。
摘要由CSDN通过智能技术生成

对于一个类,我正在处理原始文本文档(我们的示例包括可以从Gutenberg项目下载的小说)并将它们转换为字典数据结构.对于每个单词,我需要知道它出现在哪个段落中,以及每个段落中出现多少次.

程序大致可分为

>将文档分解为单词,删除空格,逗号,句点等.

>对于每个文档,迭代单词.在字典中查找.如果该单词存在,请更新其条目.如果它不存在,请创建一个新条目.

我正在做这个MATLAB,因为我的其余工作都在MATLAB中,我不想处理另一种语言/环境.事实证明,MATLAB有一些非常好的字符串处理功能.但是,我对代码的运行速度感到不安.我上面提到的第一部分不是问题;我使用parfor循环,它的速度非常快.第二部分是我的问题所在.

我最初尝试创建这个字典是使用结构,一个MATLAB内置数据类型.我们的想法是创建一个名为dictionary的结构,其字段名称是实际的单词,例如,词典’the’和’gnome’的dictionary.the或dictionary.gnome.如果这个词是一个有效的字段名称(例如,它不能是收缩),这就有效.但它运行缓慢,所以我寻求一个不同的解决方案.我的下一次尝试是使用containers.Map,这是MATLAB相当于哈希映射或字典对象. (我的一位同事告诉我,MATLAB在查找结构的字段名称方面效率不高,而哈希表的查找时间为O(1).但是,进行此替换实际上会降低我的性能!

在这一点上,我觉得我在优化代码方面做了一些非常重要的尝试,并开始怀疑MATLAB在这里是否真的是一个明智的选择.我基本上试图弄清楚缓慢是MATLAB的产物还是我是一个糟糕的程序员(通常MATLAB在线性代数,数组和矩阵方面非常快).与其让某人阅读我的代码,我非常感谢社区对以下任何一项提供的任何反馈:

>有没有人在MATLAB或类似语言(如Python)中进行此类事情(即语言处理)?如果是这样,我想尝试对我的一些时间进行基准测试. (我有一台MacBook,2.8 GHz处理器,而且我现在每秒大约需要10-20K字.)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值