哈希表词频统计(如果需要对10w个英文单词进行前缀匹配搜索,下面哪种数据结构最合适)

2023-10-24 13:10:02 :32

哈希表词频统计(如果需要对10w个英文单词进行前缀匹配搜索,下面哪种数据结构最合适)

这篇文章给大家聊聊关于哈希表词频统计,以及如果需要对10w个英文单词进行前缀匹配搜索,下面哪种数据结构最合适对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

本文目录

如果需要对10w个英文单词进行前缀匹配搜索,下面哪种数据结构最合适

Trie,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。 散列是一种常见的高效查找方法,它根据数组下标查询,所以速度快。首先根据词表构造散列表,具体来说就是用给定的哈希函数构造词典到数组下标的映射,如果存在冲突,则根据选择的冲突处理方法解决地址冲突。然后可以在哈希表的基础上执行哈希查找。 冲突导致散列性能降低。不存在冲突的散列表叫做完美散列(perfect hash)。整词散列不适合分词的最长匹配查找方式。

求AC自动机解释

是处理字符串的算法Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。要学会AC自动机,我们必须知道什么是Trie,也就是字母树。Trie树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。

C++编程,从一个文件中统计所有出现过的单词,并按次数从大到小输出

问题可以分为2个部分:

  1. 统计出现过的所有单词

  2. 按次数从大到小输出

#include《iostream》#include《fstream》#include《unordered_map》#include《algorithm》#include《string》using namespace std;bool mysort(pair 《 int, string 》 a, pair 《 int, string 》 b){if (a.first != b.first)return a.first 》 b.first;elsereturn a.second 《 b.second;}int main(){//统计出现过的所有单词:ifstream ifs("input.in", ifstream::in);unordered_map 《 string, int 》 um;string s;while (ifs 》》 s){if (um.find(s) == um.end()) um = 1;else ++um;}ifs.close();//排序(以出现次数大到小为最优先排位方式,如果出现次数一致,则以辞典编纂从小到大的顺序排位:vector 《 pair 《 int, string 》 》 v;for (unordered_map《string, int》::iterator it = um.begin(); it != um.end(); ++it)v.push_back(make_pair(it-》second, it-》first));sort(v.begin(), v.end(), mysort);//输出:for (int i = 0; i 《 v.size(); ++i)puts(v.second.c_str());}

  

几点小贴士:

  1. 如果只输出字符串的话puts是最快的内部函数(比printf快大概10倍,而printf又比cout要快),不过要记得puts只能输出c字符串,所以要输出string的时候记得用 .c_str() 函数。

  2. unordered_map 比 map要快上很多,因为它使用哈希表(调用的时间是O(1),map调用时间是O(nlogn)),但是代价就是它不是按顺序储存的。

python3.7生成的词云,显示成功,却没有图片

根据你的代码,你生成的词云图片文件名字叫做aaaaa.png,打开你存储python文件的文件夹,在那里面找到aaaaa.png这个图片文件,打开就是生成的词云了

文章分享结束,哈希表词频统计和如果需要对10w个英文单词进行前缀匹配搜索,下面哪种数据结构最合适的答案你都知道了吗?欢迎再次光临本站哦!

哈希表词频统计(如果需要对10w个英文单词进行前缀匹配搜索,下面哪种数据结构最合适)

本文编辑:admin
Copyright © 2022 All Rights Reserved 威海上格软件有限公司 版权所有

鲁ICP备20007704号

Thanks for visiting my site.