2013-05-13 1509 views
-1

我有以下问题。如何找到英语单词的使用频率?

我正在写一个Android应用程序,它使用英语字典,它是一个教育应用程序,向用户提交英语语言相关测试。

我有以下问题:

为了评估该应用产生测试的难度,

我需要的是使用的英语单词怎么常用的近似值。

我只需要一个高水平的近似值,任何合理的来源都是可以接受的。

问题是我必须为我的字典(Sqlite数据库)中的每个单词都做它,它包含95000单词

有趣的问题,不是吗?

欢迎任何建议!

编辑编辑编辑

我想通过代码做谷歌查询和使用效果有一个近似。 问题是,我怀疑Google会允许我的代码执行95000个自动查询...

回答

1

使用英文的frequency list(PDF)。低频率或不在该名单中的词是不常见

+0

谢谢你,这是一个非常好的资源 – 2013-05-13 11:08:02

1

这非常有趣。一种选择是查询 http://books.google.com/ngrams/graph

并收集统计数据,然后您可以详细说明。 你可以使用一些很普通的词设定的基准和比较比你的测试词频在底座上,或者做一些统计平均值等等等等

当然它反映了书面和不spojen英语,但如果限制的日期范围到最后说,50年,它应该给你一个很好的aproximation。

+0

的确,那是我的主要想法!关键是,我当然需要通过代码对Google进行95000次查询。我强烈怀疑Google会允许我的代码执行95000个自动查询! – 2013-05-13 08:57:57

+0

那么,如果你将它们分成几天/几周,也许它不会太糟糕:D,你仍然可以从这里下载原始数据:http://storage.googleapis.com/books/ngrams/books/datasetsv2。 html – smarques 2013-05-13 08:59:33

1

当前测试创建一个HashMap<String,Integer>,创造ArrayList<String>在您的测试的话,做这样的事情:

for(String word:words){ 
    if(word_frequency.containsKey(word)){ 
     Integer count = (Integer)word_frequency.get(word); 
     word_frequency.remove(word); 
     word_frequency.put(word,count+1); 
    }else{ 
     word_frequency.put(word,1); 
    } 
} 

这会给你一个HashMap包含在测试的每一句话和多少次这个词出现。

请注意,这只是一个示例代码,也许有更快的方法,也可以处理大小写敏感以及我现在无法想到的一些事情。