【问题标题】:Determining the number of occurrences of each word in cell array确定元胞数组中每个单词的出现次数
【发布时间】:2014-12-15 16:06:17
【问题描述】:

我有大量的单词向量,我想要一个只有唯一单词的向量,以及每个单词的频率。我已经尝试过histhistc,但它们是用于数值的。 我知道函数tabulate,但它给出了一些词'(例如,这变成了'this')。 如果您知道如何使用 MATLAB,那就太好了。谢谢

【问题讨论】:

  • 对于第一部分,您是否尝试过“独特”?它适用于字符串元胞数组
  • 是的,独一无二的作品。但是,下一步是什么?我考虑过计算每个单词的循环,但我想有更好的方法。

标签: matlab text word-frequency


【解决方案1】:

你在正确的轨道上!只需先使用uniquehist 准备数字输入。诀窍是 unique 返回的单词出现 id 可以用作 hist 函数的输入,因此您可以在没有显式 for 循环的情况下获得计数:

words = {'abba' 'bed' 'carrot' 'damage' 'bed'};
[unique_words, ~, occurrences] = unique(words);
unique_counts = hist(occurrences, 1:max(occurrences));

这会产生:

>> unique_words 
    'abba'    'bed'    'carrot'    'damage'

>> unique_counts
     1     2     1     1

【讨论】:

  • 我试过了,但我得到了这个错误:错误使用 histc 边缘向量必须是单调非递减的。 hist 中的错误(第 119 行)nn = histc(y,edgesc,1);
  • 显然不是以同样的方式:我不使用histc,而word_ids - 取决于您的MATLAB版本 - 已经是从1到唯一单词数量的单调递增范围。
  • @Yaeli778 histc(id_positions_in_word_vector, 1:max(id_positions_in_word_vector)); 可能会这样做。来源 - stackoverflow.com/a/27281656/3293881
猜你喜欢
  • 2021-03-20
  • 1970-01-01
  • 2021-02-17
  • 1970-01-01
  • 1970-01-01
  • 2015-10-15
  • 2021-04-19
  • 2011-11-26
  • 1970-01-01
相关资源
最近更新 更多