【发布时间】:2014-07-24 04:40:33
【问题描述】:
另一个问题与此类似,但它使用不同的编程语言,似乎解决了一个相关但不相同的问题。 Is it possible to speed up Wordnet Lemmatizer?
我们正在对文本中的大量单词进行词干提取,如图所示,代码仅使用词干提取就花费了 90% 以上。
当我们稍微阅读代码并分析代码时,wordNet 似乎实际上是在读取文件时,它占用了大部分代码执行时间!有没有办法通过使用数据库而不是文件读取来支持词干提取过程的数据或将所有必要的内容加载到内存并忽略文件来提高性能?或者在词干提取过程中添加一些缓存?
是否有一些易于插入的工具来代替行阅读?
在此处查看行阅读分析:
如您所见,汇总文件读取占用了高达 62% 的运行时间。
【问题讨论】:
-
你不能把文件放在 RAM 中,例如,
/dev/shm在 Linux 上吗?文件有多大?假设您有足够的 RAM,操作系统应该自动缓存它。 -
它只有大约 36 MB。甚至这个类也被称为 PrincetonRandomAccessDictionaryFile - 所以这意味着他们很可能是从内存中读取它的。然而它很慢。好吧,人们认为获取文件需要很长时间。那么它的工作方式有什么可以做的吗?或者 read() 和 readLine() 需要这么长时间是正常的吗?我不知道有什么方法可以确定他们的阅读效率是否低。
-
它looks like 有多种实现,所以你只需要选择一个基于内存的。
-
谢谢!现在我看到有一个 MapBackedDictionary 和一个 DatabaseBackedDictionary 替代方案。我现在要搜索如何使用这些。
标签: java performance optimization wordnet