许多文章的单词列表 - 文档术语矩阵
我有近 15 万篇土耳其语文章。我将使用文章进行自然语言处理研究。 我想在处理文章后存储每篇文章的单词和频率。
我现在将它们存储在 RDBS 中。
我有 3 个表:
文章 ->文章 ID,文本
词-> word_id、类型、单词
词条-> id,word_id,article_id,频率(word_id的索引,article_id的索引)
我将查询
- 一篇文章中的所有单词
- 一个单词每篇文章的频率
- 所有文章中的单词出现次数以及
我在单词-文章表中拥有数百万行的文章。我在这个项目中一直使用 RDBS。开始用mysql,现在用oracle。但我不想使用oracle,想要比mysql更好的性能。
另外,我必须在具有 4GB 内存的机器上处理这项工作。
简单来说,如何存储文档术语矩阵并对其进行查询?性能是必要的。 “键值数据库”在性能上能打败mysql吗?或者什么可以打败mysql?
如果你的答案取决于编程语言,我正在用 python 编写代码。但是C/C++、Java就可以了。
I have nearly 150k articles in Turkish. I will use articles for natural language processing research.
I want to store words and frequency of them per article after processing articles.
I'm storing them in RDBS now.
I have 3 tables:
Articles -> article_id,text
Words -> word_id, type, word
Words-Article -> id, word_id, article_id, frequency (index for word_id, index for article_id )
I will query for
- ALL Words in an article
- one Word's frequency per article
- Word occurrences in all articles and in which articles
I have millions of rows in words-article table. I always worked with RDBS in this project. started with mysql and using oracle now. But I don't want to use oracle and want better performance than mysql.
Also I have to handle this job in a machine with 4gb ram.
Simply, how to store document-term matrix and make some query on it? performance is necessary. can "key-value databases" beat mysql at performance? or what can beat mysql?
if your answer programming language depended, I'm writing code in python. But C/C++ , Java is ok.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
也许查看 lucene (或 Zend_Search_Lucene 在 php 中)。这是非常好的 FTS 引擎。
maybe check out lucene (or Zend_Search_Lucene in php). it's very nice FTS engine.
对于 15 万篇文章,words_articles 表中必须有几亿行。只要正确配置 MySQL,这是可以管理的。
一些提示:
删除words_articles表中的id字段并将(word_id,article_id)作为主键。另外,在words_articles表中为word_id和article_id创建单独的索引:
(在单个 alter 语句中执行所有操作可提供更好的性能)。
为单词表中的单词创建索引:
调整 my.cnf。具体来说,增加缓冲区大小(尤其是 key_buffer_size)。 my-huge.cnf 可能是一个很好的起点。
For 150k articles, you must have a few hundred million rows in the words_articles table. This is manageable, as long as you configure MySQL properly.
A few tips:
Drop the id field in the words_articles table and make (word_id, article_id) the primary key. Also, create separate indexes for word_id and article_id in the words_articles table:
(doing everything in a single alter statement gives much better performance).
Create an index for word in the words table:
Tweak my.cnf. Specifically, increase the buffer sizes (especially key_buffer_size). my-huge.cnf might be a good starting point.