当前位置:  开发笔记 > 后端 > 正文

计算文本文件中出现的单词数

如何解决《计算文本文件中出现的单词数》经验,为你挑选了2个好方法。

我怎样才能跟踪单词出现在文本文件中的次数?我想为每一个字都这样做.

例如,如果输入类似于:

"那个男人对男孩说."

每个"男人对男孩说嗨"都会出现1.

"该"将出现2.

我正在考虑保留一个包含单词/出现对的字典,但我不确定如何在C中实现这一点.使用解决方案链接任何类似或相关的问题都会很棒.


编辑:为了避免推出我自己的哈希表,我决定学习如何使用glib.在此过程中,我找到了一个很好的教程,可以解决类似的问题.http://bo.majewski.name/bluear/gnu/GLib/ch03s03.html

我对不同方法的数量感到震惊,特别是Ruby实现的简单性和优雅性.



1> ShreevatsaR..:

是的,具有单词出现对的字典可以很好地工作,实现这种字典的通常方法是使用哈希表(或有时使用二叉搜索树)。

您也可以使用trie(或其压缩版本,“ Patricia trie” / Radix trie),其复杂度对于此问题渐近最佳,尽管我怀疑在实践中它可能比(好的)哈希表实现慢。

[我真的认为散列表或散列表是否更好取决于输入中单词的分布-例如,散列表需要将每个单词存储在其散列存储区中(以防止冲突),而如果您有很多带有通用前缀的单词,在特里里那些通用前缀是共享的,每个只需要存储一次,但是所有指针仍然有开销……如果您碰巧尝试两者,我很好奇他们比较。]



2> martinus..:

只是为了好奇,这里是一个简单的Ruby计算单词问题解决方案.它应该与C中的算法基本相同,只需要更多的代码.

h = Hash.new(0)
File.read("filename.txt").split.each do |w|
  h[w] += 1
end
p h

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有