thedevil7
V2EX  ›  问与答

数据库新人, 请教前辈这样的数据量, 是否需要用到数据库?

By thedevil7 at 2012 年 11 月 9 日 · 4379 次点击
我想用 python 写一个拼写检查脚本, 需要收集正确的词汇以及对应的错误的词汇.

正确的词汇可能有 1W 个以上, 但每一个正确的词汇对应的错误词汇可能有成千上万个.

所以最后的数据就有可能有数百万个. 那么这样的数据量是否需要用到数据库呢?

如果需要用到数据库, 应该用什么样类型的数据库?

多谢各位指点.
14 条回复  •  1970-01-01 08:00:00 +08:00
clino
   1
clino  
   2012 年 11 月 9 日
要看你要怎么使用这些数据了
如果要用数据库,那你要想清楚如何用数据库来表达
013231
   2
013231  
   2012 年 11 月 9 日
thedevil7
   3
thedevil7  
OP
   2012 年 11 月 9 日
@clino
因为没学过数据库, 我有一个比较直观的想法不知行不行得通.

1.一个表:
正确词汇 - 错误词汇(们).

因为可能的错误词汇成百上千, 所以不知这样效率会不会不高.

2.两个表:
1. 正确词汇. 可能附带其他内容.
2. 错误词汇 - 正确词汇(可能有多项).

这样只要在错误词汇表里面找到了对应的项目就能得到正确词汇.


@013231
真巧, 我看的是下面这篇文章.
http://blog.youxu.info/spell-correct.html
clino
   4
clino  
   2012 年 11 月 9 日
@thedevil7 同意楼上所说"拼寫檢查通常是用貝葉斯算法做的, 不是靠蠻力收集錯詞"
你用记错词的办法比较生硬,不能鉴别没有碰到过的新的错词
thedevil7
   5
thedevil7  
OP
   2012 年 11 月 9 日
@clino 我原本打算产生编辑距离为 1, 2 的错词, 看来这个方法比较笨, 请问如何做才是比较聪明的办法? 感谢指教.
clino
   6
clino  
   2012 年 11 月 9 日
@thedevil7 上面贴的那个阮一峰的blog讲得很清楚啊,连代码都有的
thedevil7
   7
thedevil7  
OP
   2012 年 11 月 9 日
@clino 那个帖子就是我这个方法.......... 况且那个博文(至少代码)是抄的... 原文译文为 3l 中给出的地址, 其中有原文地址.
clino
   8
clino  
   2012 年 11 月 9 日
@thedevil7 你是说那篇blog里有记[错词]的做法?我怎么没看到?
013231
   9
013231  
   2012 年 11 月 9 日
@clino
@thedevil7
你們都沒仔細看代碼呀. 那個`edits1`和`edits2`函數就是用來生成距離為1和2的錯詞的.
thedevil7
   10
thedevil7  
OP
   2012 年 11 月 9 日
@013231 我知道算法是这样的, 可是我觉得如果我要重复利用的话, 需要一个合适的数据结构. 所以我想到了数据库. 因为从没用过, 学过相关知识, 所以不知道这个想法是否合适.
@clino


我想问如何才能安排好这些数据, 还各位前辈请指点一下.
013231
   11
013231  
   2012 年 11 月 9 日
@thedevil7 實時生成就可以了. 頂多在內存中建個緩存.
thedevil7
   12
thedevil7  
OP
   2012 年 11 月 9 日
@013231 可是这样的数据既然需要反复利用, 干嘛不存起来呢? 诚心求解惑.
013231
   13
013231  
   2012 年 11 月 9 日   ❤️ 1
@thedevil7 你計算過這樣一個數據庫會有多大嗎? 建立這樣的數據庫根本不現實.
thedevil7
   14
thedevil7  
OP
   2012 年 11 月 9 日
@013231 原来是这样. 只知道其中的数据可能有上千万条, 不知道如何计算数据库的大小.
© 2026 V2EX · 36ms · 3.9.8.5