Javascript 单词云设置最大单词数

Javascript 单词云设置最大单词数,javascript,d3.js,word-cloud,Javascript,D3.js,Word Cloud,我正在使用流行的word cloud库,源代码: 我正在使用此块的克隆: 对于我的数据,我想设置单词cloud的最大字数。云具有一些内置的旋转、字体大小、螺旋方法等功能。但是,似乎没有任何内置方法来设置要显示的最大字数 我认为只需将原始字数的子集提供给它,计算效率就会更高。我没有看到任何.sort调用,因此我不确定word\u count对象在转到cloud.js之前是否按频率排序 如果cloud.js按照频率或tf idf或它使用的任何方式对它接受的单词_count对象进行排序,那么我将不

我正在使用流行的word cloud库,源代码:

我正在使用此块的克隆:

对于我的数据,我想设置单词cloud的最大字数。云具有一些内置的旋转、字体大小、螺旋方法等功能。但是,似乎没有任何内置方法来设置要显示的最大字数

我认为只需将原始字数的子集提供给它,计算效率就会更高。我没有看到任何
.sort
调用,因此我不确定word\u count对象在转到cloud.js之前是否按频率排序

如果cloud.js按照频率或tf idf或它使用的任何方式对它接受的单词_count对象进行排序,那么我将不得不等待返回前k个单词,直到它列出列表,这意味着它仍然在我的整个文本文件中迭代

我仍然认为,如果我只能显示top k(最常见的是top,不包括常见单词中的语法单词),比如说20,我至少会加快视觉速度(不确定是否会加快实际算法)

如果这还不清楚,让我用视觉的方法来解释。看起来一个单词出现的频率越高,它的字体越大,我认为这是理解cloud.js的一种直观方式,所以前k将是最大字体大小的k

那么,有这种可视化经验的人能告诉我在哪里调整返回前k个单词的代码以及如何调整吗

注意:我最初在GitHub页面上发布了这个问题,但它被标记为离题,所以建议我在这里发布。我最初担心的是,这会被标记为太模糊,无法实现堆栈溢出,因此我一直试图使问题不那么抽象,并尽可能多地提供信息。请记住这一点

也许谢谢你

var words=text\u string.split(/['\-\(\)\*”:;\[\]\\{},.!?]+/),
限值=5;
if(words.length==1){
字数[字数[0]]=1;
}否则{
words.forEach(函数(word){
var word=word.toLowerCase();
if(word!=''&&common.indexOf(word)==-1&&word.length>1){
如果(字数[字数]){
字数[字]+;
}否则{
字数[字数]=1;
}
}
});
for(字数中的var字){
如果(字数[字数]<限制)删除字数[字数];
}
}

您可能需要添加一个计数器,如果单词太多,请降低限制直到Object.keys(单词计数).length<20000

我在最后添加了一个关于d3的直接、简洁的编程问题,以及理解我的问题的可视化方法。看起来很好,我现在正在尝试。感谢您关注它!这是一个很好的解决方案,正是我所需要的!我在大型文档中尝试过,效果非常好。但是在较小的文档中文档它倾向于删除所有内容。因此,我将继续试验不同的
限制指标
,可能使用标准差或与字数和文档长度相关的某个比率。我很好奇,为什么要单独处理单个元素的情况?我没有编写该部分,但处理一个单词可能最终创建一个n空对象出于好奇,有没有办法创建单词_count对象的子集?在Python中有一种稍微复杂的理解方法:
def get_range(dictionary,begin,end):返回{k:v for k,v In dictionary.items(),如果begin