掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 1259|回复: 2

[讨论] 我的维基解析器又要延期了。(对维基有兴趣的也进来聊下)

[复制链接]

该用户从未签到

发表于 2013-12-20 15:33:19 | 显示全部楼层 |阅读模式
本帖最后由 惟吾无为 于 2013-12-30 13:47 编辑
2 @6 z/ k4 c1 c! X, ]1 r
3 v( ?/ ?- G* S5 i我悔悟了, 简单版: https://www.pdawiki.com/forum/thread-11611-1-1.html& S8 x" _8 r5 V  H& e& B4 s  j* h

8 }& a+ d3 X/ U  z  }1 p# u-------
) |) M6 |% q$ D之前都是以2012年9月的转储文件做为分析参考的。
8 Y( c% ^, v) `8 |# i
: }3 s+ {; P7 P: s4 C( P, a月初完成了一个解析器,但是速度很慢。1分钟也不过几个页面,达不到实用的地步。如果不处理模板的话,1分钟可以处理2-5k个页面。一个小时不到就把zhwiki20131120的xml解析完了。4 g: P+ E1 ]% G/ e

3 ^0 V( e& q% [/ @3 J; `8 A% U5 T可是如今连中文维基也部署了lua脚本。都有一个专门的名字空间:模块(module)。
- b! u9 _$ l0 h" N3 K: R5 @调用 {{#invoke| 模块名 |函数名}}就可以在服务器运行那个模块的指定函数。
6 q! \3 t5 U6 H% p; U1 {$ e& e5 y8 c$ d0 H/ I3 y  |3 v
加之之前的解析器写的不咋样,排个错超级麻烦,所以我打算重写,最好实现维基的lua运行环境。
% d( l3 [0 c7 q* O% }" J
& g! f+ I: A, L这是第二次延期了,所以专门开个帖说下。7 e2 H( M" s0 b0 m! @6 }
) v, F1 {/ P8 j* Z# w2 D
大家也可以说下你们的期望下限,说下满足哪些功能就够了。到时我好优先处理。
4 E( i. h0 X# S1 L意见收集日期截至1月1日。到时我说不定就回家了。家里没网的。

评分

1

查看全部评分

该用户从未签到

 楼主| 发表于 2013-12-20 15:45:34 | 显示全部楼层
本帖最后由 惟吾无为 于 2013-12-30 18:56 编辑 , m, f  k  K; |9 d1 v. m
  j* J4 N, t/ p5 E& L9 l
一些细节或者备注。有人可能希望知道。
# a% |: b8 k# C3 Z3 g1. 1小时解析转储。
9 \+ A: ~# B( M1 H1 l' y* e6 r4 V$ }7 t* 处理解压后的单个xml文件. 大小好像是4196M
- L' r* h; g4 @. ^2 v* lua只能使用单核, 我的cpu 1.6 GHz. 你们的高些会快些.5 Z2 w) _: |8 @, o  Q; G
* 内存使用近1G, 峰值可能1.3G. 我的总内存3.5G. 可用3G. 你们的内存应该够吧?
/ [3 m: f  |* k3 _7 }# s/ x* 处理了 各种列表(\n[*#:; =-]), 链接, 粗斜体, 表格, * d+ F' k2 r* z' k  Z4 q1 w
* 模板未处理, 公式未处理. 引用未处理, 分类未处理.0 s! Q9 M  x( {. Q+ m) B
* 没有字词转换. 所以还是繁简混合的.& ?4 S- ?0 W3 f, \9 ~( O

# B0 M, u9 }4 P3 Y2. 数学公式 (update@20131223)" @/ a9 }8 j% v) k* w. I* D# k
我打算先写出个简单的解析器. 只要支持基本格式就够了. 并针对enwiki做下优化.( ?% P, I- N2 \$ K. B
* 调用texvc渲染公式为png.5 X5 E& S4 R" t! n8 d1 W+ m" T& Y
* 公式预处理: 替换连续的空白字符([ \t\n]+)为单个空格( ). 并去掉前导空格. 后缀不处理.
: b2 ?& i+ g) x# G" G( r* 可以读取转储文件或公式列表, 生成公式的md5值对照表(hashfile)及其图片.. S- x& g& r4 f* _; ]/ M1 S
* 解析器需要先缓存 公式md5对照表(hashfile) 才能生成图片链接./ c: s9 ^/ j6 _* G4 U1 I
* 未缓存的公式会临时解析, 失败的直接丢弃. 不会导致解析中断.
# W) ]9 T# J  T) K8 Q( t8 Y* 目前公式转换器仅使用单核. 我的电脑转换7.3w个公式为图片花了近2个小时.
0 a% p: r. K4 [+ G/ Z- q  |* 12.24测试使用多核(我的4核). 结果如下. 99.88% | time: 39m04s,     3s | formula ok:  85036 error:  109 dup:38661(根据我的预处理方式发现的重复公式); M) K, A% V8 K0 @' k7 d3 D
     实际生成图片73110(我暂时没办法实现texvc的预处理过程, 所以重复的有85036-73110个). 6 {" Z' A9 `  u0 l* }6 z
     这个使用多核是通过连续创建 逻辑cpu个数*2 的进程来实现的. 我的lua脚本还是单核的. 依次读取那些进程的输出(会等待进程结束), 所以花费的时间大于半小时.
2 l- ^  p* z0 M' b& V# D* 12.24-17:00 优化了下, 好像之前的有些重复公式没找到. 100.03% | time: 33m50s,     0s | formula write:  75392 error: 104 dup:  48309
& a) F4 Q' @* v- \9 K+ d0 n0 U     当然, 前面的100.03%. 就无视了吧...& B+ w9 h6 ^  ~. R

& y% A. p/ N  W, J3. 多文件支持(update@20131228)
9 |% d( \- z2 C4 E6 i之前的脚本不支持多文件. 这几天总算在原有的基础上加入多文件支持了.9 }$ Z3 `" P4 C6 z4 X9 z: K2 Q5 s
今天测试了enwiki的数学公式. 结果tmpfs连续两次因为inode用尽而"空间不足". 这次才终于发现不是因为内存用尽... 惭愧. 今天一天算是浪费了...
8 w# A$ w$ p) ], ^: p: Y. G$ Z7 Jenwiki 公式转图片的进度 72.91% | time:  2h15m, 50m09s | formula write: 219013 error: 243 dup: 1250783 U' @, A% N( |* e
我现在又重新开始转了. 又要重复读一遍所有的xml文件... 估计又得一个半小时才能完成...+ X2 B* t2 V3 W

$ t0 y  K7 F( O解析器也加入多文件支持了. 严格按照参数所给的文件顺序读取. 用户可自行调整文件顺序.
, m- Z( T! i6 }+ ^解析器仍是单线程的, 但可开多个进程, 各自解析不同的xml.
7 D- L) d  b" ]8 K' ]" x+ N; ~! u! ~; w& W8 ?# H
我这几天也写好了xml分割脚本和文本合并脚本.
$ w$ D" n3 o) Z  F3 F3 B8 Z2 o6 C: B' t% E
4. 危机(update@20131229)
7 w* Q! J, d/ }4 n$ x, o+ I1. lua默认不支持大文件. 大于2G的没法正常操作. 我的lua是自己编译的, 开启了大文件支持...
' G5 O3 L" F+ O/ P! J3 `2. 还有dofile时的路径转换也没考虑到windows...文件打开时没加b标记. 也可能有问题... 我会尽量照顾下windows用户的.
) x3 B& u: n# E+ `7 m) `+ k0 h! F+ ^0 a9 h6 U3 w
5. 新的希望(update@20131230)" J* g$ F; \! P, i0 t- h
经过4个小时的努力, 终于在18:20编译出了支持大文件读写的windows版lua.
! Y( |6 i$ A  b) M
& @7 C8 }, C* i2 z9 w- `...
  • TA的每日心情
    开心
    2022-11-10 09:48
  • 签到天数: 466 天

    [LV.9]以坛为家II

    发表于 2013-12-22 21:20:22 | 显示全部楼层
    我对这些不太懂,有需求的说说建议啊!
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2025-5-10 22:55 , Processed in 0.023270 second(s), 25 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表